Menu

搭建自己的GitLab

实验环境

自己购买的 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

参考 CentOS 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