在腾讯云CentOS 7云服务器安装GitLab

2018-09-17|Categories: Cloud, Linux|

准备工作

GitLab是一个庞大、复杂的系统,在正式安装GitLab之前,需要先完成一些准备工作。

安装依赖包

GitLab官网有详细的教程描述如何在CentOS 7上安装GitLab,但云服务器的环境略有不同,因此需要对官网的教程稍作改动。

yum install -y curl policycoreutils-python openssh-server
# 即使最小化安装的CentOS 7也会默认安装curl和openssh-server这两个包,
# 因此以上命令可能会更新这两个包。

# 云服务器的sshd服务默认是开机启动的,因此不需要执行官网教程的以下步骤:
systemctl enable sshd
systemctl start sshd

# 腾讯云的CentOS 7默认关闭了防火墙,因此不需要执行官网教程的以下步骤:
firewall-cmd --permanent --add-service=http
systemctl reload firewalld

安装、配置postfix

腾讯云的CentOS 7默认安装了postfix,因此不需要执行官网教程的以下步骤:

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

但postfix默认的配置有问题,启动时会报错:

fatal: parameter inet_interfaces: no local interface found for ::1

必须修改主配置文件后才可以正常启动:

$ vim /etc/postfix/main.cf

# 取消注释下面这一行(删除行首的井号)
inet_interfaces = all

# 注释掉下面这一行(行首添加井号)
#inet_interfaces = localhost

# (可选)修改下面这一行(all -> ipv4)
inet_protocols = ipv4

重启postfix服务:

$ systemctl restart postfix
$ systemctl status postfix | grep 'active (running)'
   Active: active (running) since Sat 2018-09-01 03:04:04 CST; 11min ago

添加swap分区

GitLab运行期间会消耗大量内存,即使物理内存充足,官方仍然推荐系统上最少要有2GB的swap分区,否则会出现500错误和其它奇怪的错误。我首次安装就碰到了502错误:

这是因为腾讯云提供的免费体验服务器的内存只有1G,达不到正常运行GitLab所需的最低标准:

… keep in mind that you need at least 4GB available before running GitLab. With less memory GitLab will give strange errors during the reconfigure run and 500 errors during usage.

We recommend having at least 2GB of swap on your server, even if you currently have enough available RAM. Having swap will help reduce the chance of errors occurring if your available memory changes.

We also recommend configuring the kernel's swappiness setting to a low value like 10 to make the most of your RAM while still having the swap available when needed.

https://docs.gitlab.com/ce/install/requirements.html#memory

此时需要添加swap分区来解决:

# 可用内存很少,为了避免`dd: memory exhausted`错误,只能指定较小的`bs`
$ dd if=/dev/zero of=/swapfile bs=50MiB count=40
40+0 records in
40+0 records out
2097152000 bytes (2.1 GB) copied, 3.77658 s, 555 MB/s

$ ls -lh /swapfile
-rw-r--r-- 1 root root 2.0G Aug 31 21:00 /swapfile

$ mkswap /swapfile
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=a846e43b-3a64-4530-a9d7-62ebc6e75406

$ vim /etc/fstab
# 添加一行
/swapfile none swap defaults 0 0

$ swapon -a
swapon: /swapfile: insecure permissions 0644, 0600 suggested.

$ chmod 600 /swapfile

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           991M        107M        162M        280K        721M        704M
Swap:          2.0G        264K        2.0G

域名解析

安装GitLab之后,我计划通过 gitlab.liyang85.com 这个域名来访问,因此必须在安装前完成域名解析相关的配置,我使用了DNSPod的域名解析服务。

安装GitLab

# 创建 /etc/yum.repos.d/gitlab_gitlab-ce.repo 文件
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

# 在这里指定` EXTERNAL_URL="https://" `,安装过程中会自动配置Nginx,
# 而且会自动从Let's Encrypt下载、安装证书。
EXTERNAL_URL="https://gitlab.liyang85.com" yum install -y gitlab-ce

安装包比较大,总共424M,还好云平台的网速比较给力,3分钟左右就完成了下载:

安装过程是通过Chef Cookbook完成的,主要是安装以下组件:

Starting Chef Client, version 13.6.4
resolving cookbooks for run list: ["gitlab"]
Synchronizing Cookbooks:
  - postgresql (0.1.0)
  - registry (0.1.0)
  - mattermost (0.1.0)
  - consul (0.0.0)
  - gitaly (0.1.0)
  - letsencrypt (0.1.0)
  - nginx (0.1.0)
  - acme (3.1.0)
  - crond (0.1.0)
  - gitlab (0.0.1)
  - package (0.1.0)
  - runit (0.14.2)
  - compat_resource (12.19.0)
Installing Cookbook Gems:
Compiling Cookbooks...

整个安装过程产生的输出共有7960行,包括组件的安装、配置、启动,例如其中的PostgreSQL组件,安装、配置、启动之后还要创建数据库和表,非常繁琐,也难怪GitLab官方会推荐这种自动化的安装方式。

安装成功的标志是出现GitLab logo:

Chef Client finished, 468/672 resources updated in 03 minutes 45 seconds
gitlab Reconfigured!

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.



     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Thank you for installing GitLab!
GitLab should be available at https://gitlab.liyang85.com

终于完成了安装,接下来就是从浏览器访问GitLab的安装地址:https://gitlab.liyang85.com ,首次访问会要求修改密码:

然后就可以使用root账户和刚刚修改的密码登录GitLab了,最终见到的庐山真面目是这样:

Leave A Comment