环境说明及准备工作
-
部署 Gitlab 版本说明:
1
|
docker pull gitlab/gitlab-ce:13.10.2-ce.0
|
提前拉取好镜像。
-
docker-compose 版本说明:
1
2
|
docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
|
-
docker version: 19.03.9
创建 Docker-Compose 部署文件
Gitlab docker-compose.yaml
部署文件如下所示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
mkdir -p /data/docker-compose/gitlab-ce
cd /data/docker-compose/gitlab-ce # 配置文件注意保留,后续的维护多需要使用
cat docker-compose.yaml
version: '2'
services:
gitlab:
image: 'gitlab/gitlab-ce:13.10.2-ce.0'
restart: always
hostname: 'gitlab.treesir.pub'
container_name: 'gitlab-ce'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.treesir.pub' # or protocol "https"
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "sample@qq.com"
gitlab_rails['smtp_password'] = "sample"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'sample@qq.com'
ports:
- '18080:80'
volumes:
- /application/gitlab/config:/etc/gitlab
- /application/gitlab/data:/var/opt/gitlab
- /application/gitlab/logs:/var/log/gitlab
volumes:
config:
data:
logs:
|
修改对应配置项中的 域名地址
、smtp信息
,这里使用的 smtp地址信息为 QQemail
的,获取方式可以参考 此方法。
还有就是需要注意一下配置文件中的端口映射,这里将容器内的 80
端口映射到了 18080
,原因是打算用 nginx
来配置代理使用,这样可以更加合理的利用80
or 443
这两个特殊端口,如果单独给这么一个服务难免有那么一些浪费。当然不是一定需要这样做,对端口没有特殊要求的话,也可以将端口直接映射到对应的 80 or 443 端口,这样配置相对简单,而且省去了后面的一系列的操作。
创建完配置文件后,我们进行一些启动容器的操作
等待几分钟后,我们测试访问一下对应的端口
Gitlab 中的默认用户是 root
可以看到,服务现在已经启动完成。如果你那边访问出现问题,可以检测一下对应的容器日志。
1
|
docker logs -f --tail 100 gitlab-ce
|
添加使用 nginx 代理
如上面图片所示,如你使用的容器端口映射不是使用 80
,是无法直接 copy 这地址使用的,我们可以通过添加 反代解决
,这里介绍如何使用 nginx
进行实现。
安装 nginx
这里使用 yum 进行直接安装
对应 nginx 配置文件如下所示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
cat /etc/nginx/conf.d/gitlab.conf
upstream gitlab {
server 192.168.8.110:18080; # 如 nginx 和 gitlab在同一台机器上时,建议使用地址 "127.0.0.1"
}
server {
listen 80;
server_name gitlab.treesir.pub;
location / {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://gitlab ;
}
}
#server {
# listen 443 ssl;
# server_name registry.example.com;
#
# ssl on;
# ssl_certificate /letsencrypt/fullchain.pem;
# ssl_certificate_key /letsencrypt/privkey.pem;
#
# location / {
# proxy_read_timeout 300;
# proxy_connect_timeout 300;
# proxy_redirect off;
#
# proxy_set_header Host $http_host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto https;
# proxy_set_header X-Frame-Options SAMEORIGIN;
# proxy_pass http://gitlab;
# }
#}
|
默认内网自己使用的话,对安全没有什么需求的话,可以只开启 http 协议,但是如果在公网的话,还是建议开启 https
的。配置文件中有示例配置,打开注释即可进行使用,证书的话这里推荐 acme.sh
的免费证书。
1
2
3
4
5
6
7
|
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx -s reload # 重载生效
systemctl enable nginx # 设置 nginx 开机自启
|
更改 hosts 文件后,我们进行测试访问一下地址
更改 hosts文件 方法说明
测试上传文件
可以看到,我们刚才 push 上传的 文件已经可以在 dashboard
中看到了。
优化项说明
这里的优化项指 关闭 Gitlab 中一些,默认开启了但是又没有什么用处的功能,自己更具实际情况进行选择关停即可,不是必选的操作
。
默认新建项目时 关闭 Auto DevOps
开启网络钩子
与 Jenkins 进行集成时,需要用到 WebHook,这里我们需要将此处进行打开。
接口请求限制
开启后,可有效避免 cc
攻击, 一般在公网中建议开启,内网的话,可有可无。
开启 grafana dashboard
在 Gitlab 中,默认存在一套 Prometheus 监控方案,当打开 grafana 后,我们可以访问 ${GITLAB_URL}/-/grafana
这个地址进行查看。
并且默认的 grafana 中,已预制了对应的展示模板。
设置时区本土化
关闭使用 ssh 管理代码
关闭注册功能
如果你开启了使用 ldap 用户认证的管理,此项强烈建议是把它关闭的。一般打开了的话,常见于一些对外服务的站点,企业中根本不需要。
设置新用户最小权限
不勾选此项时,默认新添加的用户还是拥有创建仓库
的权限的,如果管理员想 掌控全局
的话,还是建议开启。
总结
Gitlab 为企业中 常见的 git 代码管理软件,是在实施 Devops
过程中的利剑,功能强大,并内置了 ci/cd、repository、监控等功能。在对 Gitlab 进行配置优化时,我们需要注意在配置时还 存在着全局生效配置
和 项目局部生效配置
,如在全局中配置了未见生效,可以去对应的项目组中查看此项目对应配置也做了相应的更改否。