搭建自己的GitLab LeeRinji

实验环境

自己购买的 1C2G 腾讯云服务器。

CentOS 7.6。

实验过程

以下操作均在 root 账号下进行。

修改宿主的 SSH 端口

修改宿主的 SSH 端口,使用非 22  端口,这样以后从自建 gitlab 上拉取代码可以少费些功夫了。此外,管理用的宿主 SSH 端口改成别的也更安全。

修改 SSHD 配置文件,/etc/ssh/sshd_config,将其中的  Port 22 改为其它端口号,然后service sshd restart

semanage port -a -t ssh_port_t -p tcp 2222

配置 SWAP 交换分区

由于 GitLab 较为消耗资源,我们需要先创建交换分区,以降低物理内存的压力。在实际生产环境中,如果服务器配置够高,则不必配置交换分区。(我 好 穷 啊

新建 8 GB 大小的交换分区(一般来说 2 GB 就够了,可以自己改下面的大小):

dd if=/dev/zero of=/root/swapfile bs=1M count=8192

使用 SWAP 分区专用的格式化命令mkswap,对新建的主分区进行格式化操作:

mkswap /root/swapfile
swapon /root/swapfile

为了能够让新的交换分区设备在重启后依然生效,需要将相关信息写入到配置文件中。

echo "/root/swapfile swap swap defaults 0 0" >> /etc/fstab

安装 docker

参考 CentOS Docker 安装

yum update -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
docker run \
    --detach \
    --hostname gitlab.wu-kan.cn \
    --name gitlab-ce \
    --restart always \
    --publish 443:443 \
    --publish 80:80 \
    --publish 22:22 \
    --env GITLAB_OMNIBUS_CONFIG=\
"external_url 'https://gitlab.wu-kan.cn/'
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['i@wu-kan.cn']
gitlab_pages['enable'] = true
pages_external_url 'http://gitlab-pages.wu-kan.cn/'" \
    gitlab/gitlab-ce

运行 docker container ls,可以看到下面容器的状态是(health: starting)。等这个状态变成 (healthy) 时则说明已经部署完成,可以访问了。

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 服务。

service docker restart