CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
实验环境
自己购买的 1C2G 腾讯云服务器。
CentOS 7.6。
实验过程
以下操作均在 root 账号下进行。
修改宿主的 SSH 端口
修改宿主的 SSH 端口,使用非 22 端口,这样以后从自建 gitlab 上拉取代码可以少费些功夫了。此外,管理用的宿主 SSH 端口改成别的也更安全。
修改 SSHD 配置文件 /etc/ssh/sshd_config
,将其中的 #Port 22
去掉注释并改为其它端口号(比如我改成Port 2222
)。
1
2
service sshd restart
semanage port -m -t ssh_port_t -p tcp 2222 # 未安装semanage可忽略
配置 SWAP 交换分区
由于 GitLab 较为消耗资源,我们需要先创建交换分区,以降低物理内存的压力。在实际生产环境中,如果服务器配置够高,则不必配置交换分区。(我 好 穷 啊
新建 8 GB 大小的交换分区(一般来说 2 GB 就够了,可以自己改下面的大小):
1
dd if=/dev/zero of=/root/swapfile bs=1M count=8192
使用 SWAP 分区专用的格式化命令mkswap
,对新建的主分区进行格式化操作:
1
mkswap /root/swapfile
1
swapon /root/swapfile
为了能够让新的交换分区设备在重启后依然生效,需要将相关信息写入到配置文件中。
1
echo "/root/swapfile swap swap defaults 0 0" >> /etc/fstab
安装 docker
1
2
3
yum update -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
1
systemctl start docker
运行下面指令,拉取 gitlab 镜像并运行。为了方便日后备份维护,这里把三个重要的目录挂载进容器。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
docker pull gitlab/gitlab-ce
docker run \
--detach \
--hostname gitlab.wu-kan.cn \
--name gitlab-ce \
--restart always \
--publish 443:443 \
--publish 80:80 \
--publish 22:22 \
--volume /root/gitlab/etc/gitlab:/etc/gitlab \
--volume /root/gitlab/var/log/gitlab:/var/log/gitlab \
--volume /root/gitlab/var/opt/gitlab:/var/opt/gitlab \
--env GITLAB_OMNIBUS_CONFIG=\
"external_url 'https://gitlab.wu-kan.cn/'
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['[email protected]']
gitlab_pages['enable'] = true
pages_external_url 'http://gitlab-pages.wu-kan.cn/'" \
gitlab/gitlab-ce
运行 docker container ls
,可以看到下面容器的状态是(health: starting)
。等这个状态变成 (healthy)
时则说明已经部署完成,可以访问了。
1
2
3
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
1a6c9c5ea464 gitlab/gitlab-ce "/assets/wrapper" About a minute ago Up About a minute (health: starting) 0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp gitlab-ce
运行的时候配置过低的话(比如我),会出现终端卡死。进入云服务商的监控页可以看到 CPU 和内存都是爆满的,建议喝一杯茶再回来看。
如果持续出现 unhealthy
的状态,可以考虑重启 docker 服务。
1
service docker restart
gitlab-runner
1
2
3
4
5
6
7
docker run \
-d \
--name gitlab-runner\
--restart always \
-v /root/gitlab-runner/etc/gitlab-runner:/etc/gitlab-runner \
-v /root/gitlab-runner/var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner
接下来进行注册操作。相关信息可以在https://gitlab.wu-kan.cn/admin/runners获取。
1
docker exec -it gitlab-runner gitlab-runner register