1. 单机http安装
采用docker-compose方式安装。gitlab版本11.8.0-ce.0。
1.1. docker-compose.yaml
version: '2'
services:
gitlab:
image: 10.11.20.110:5002/library/gitlab-ce:11.8.0-ce.0
container_name: gitlab
restart: always
hostname: 10.11.20.48
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://10.11.20.48:8060'
gitlab_rails['gitlab_shell_ssh_port'] = 2204
nginx['listen_port'] = 80
ports:
- '8060:80'
- '2204:22'
- '8443:443'
volumes:
- ./data/gitlab/config:/etc/gitlab
- ./data/gitlab/logs:/var/log/gitlab
- ./data/gitlab/data:/var/opt/gitlab
1.2. 安装步骤
# 调整docker-compose.yaml中认证信息
hostname: 10.11.20.48
external_url 'http://10.11.20.48:8060'
# 调整docker-compose.yaml中映射端口
容器内http 默认端口 80
容器内ssh 默认端口 22
容器内https默认端口 443
# 启动服务
docker-compose -f docker-compose.yaml up -d
# 默认控制台端口为8060, 启动后可以访问页面验证
http://10.11.20.48:8060
# 重置默认密码为root@123_
【注意事项】设置Outbound requests
设置Outbound requests为:Allow requests to the local network from hooks and services。
否则无法通过DevOps平台创建webhook。
设置方法 如下:
1.访问 http://部署主机IP:8060/admin/application_settings/network
2.点击"Outbound requests"
3.点击"Allow requests to the local network from hooks and services"前复选框
4.点击"Save changes"
2. 单机https安装
https的安装是基于1.2.http安装后进行操作。
2.1. create_ssl.sh
#!binsh
# create self-signed server certificate
read -p Enter your hostname or IP DOMAIN
echo Create server key...
openssl genrsa -des3 -out $DOMAIN.key 1024
echo Create server certificate signing request...
SUBJECT=C=USST=MarsL=iTranswarpO=iTranswarpOU=iTranswarpCN=$DOMAIN
openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr
echo Remove password...
mv $DOMAIN.key $DOMAIN.origin.key
openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key
echo Sign SSL certificate...
openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
echo TODO
echo Copy $DOMAIN.crt to etcgitlabssl$DOMAIN.crt
echo Copy $DOMAIN.key to etcgitlabssl$DOMAIN.key
echo Add nginx configuration in etcgitlabgitlab.rb
2.2. 生成证书
# 将生成证书的脚本 create_ssl.sh 拷贝到容器内
docker cp create_ssl.sh (gitlab容器名):/
# 进入gitlab容器
docker exec -it (gitlab容器名) bash
# 生成证书
./create_ssl.sh (hostname)
# 创建证书存放目录
mkdir -p /etc/gitlab/ssl/
# 将证书文件移动到证书目录
mv /(hostname)* /etc/gitlab/ssl/
2.3. 修改gitlab.rb配置
修改/etc/gitlab/gitlab.rb的https配置。
11 ##! For more details on configuring external_url see:
12 ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
13 external_url 'https://10.11.20.48:8443'
979 # nginx['enable'] = true
980 # nginx['client_max_body_size'] = '250m'
981 nginx['redirect_http_to_https'] = true
982 nginx['redirect_http_to_https_port'] = 80
993 nginx['ssl_certificate'] = "/etc/gitlab/ssl/10.11.20.48.crt"
994 nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/10.11.20.48.key"
996 # nginx['ssl_ciphers'] = "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256"
1020 ##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-port
1021 nginx['listen_port'] = 443
1030 # nginx['proxy_connect_timeout'] = 300
1031 nginx['proxy_set_headers'] = {
1032 "Host" => "$http_host_with_default",
1033 "X-Real-IP" => "$remote_addr",
1034 "X-Forwarded-For" => "$proxy_add_x_forwarded_for",
1035 "X-Forwarded-Proto" => "https",
1036 "X-Forwarded-Ssl" => "on",
1037 "Upgrade" => "$http_upgrade",
1038 "Connection" => "$connection_upgrade"
1039 }
1040 # nginx['proxy_cache_path'] = 'proxy_cache keys_zone=gitlab:10m max_size=1g levels=1:2'
1045 # nginx['real_ip_recursive'] = nil
1046 nginx['custom_error_pages'] = {
1047 '404' => {
1048 'title' => 'Example title',
1049 'header' => 'Example header',
1050 'message' => 'Example message'
1051 }
1052 }
2.4. 重新加载GitLab配置
# 进入gitlab容器
docker exec -it (gitlab容器名) bash
# 执行加载配置命令
gitlab-ctl hup nginx
gitlab-ctl reconfigure
访问http://10.11.20.48:8060会自动跳转到https://10.11.20.48:8443
3. 高可用安装
不需要
4. 安装遇到问题
5. 参考文档
gitlab-https安装:https://blog.youkuaiyun.com/londa/article/details/92074403