之前做项目一直使用SVN作为主要的版本控制工具,但是后来发现SVN没法图形化统计一个用户的提交数据,那么这样就不好评估我的工作效率。因此,就转向了 GitLab 作为我们的版本控制工具。

GitLab的安装方式

GitLab的两种安装方法:

  • 编译安装

    • 优点:可定制性强。数据库既可以选择 MySQL,也可以选择 PostgreSQL;服务器既可以选择 Apache,也可以选择 Nginx

    • 缺点:国外的源不稳定,被墙时,依赖软件包难以下载。配置流程繁琐、复杂,容易出现各种各样的问题。依赖关系多,不容易管理,卸载 GitLab相对麻烦。

  • 通过 rpm 包安装

    • 优点:安装过程简单,安装速度快。采用 rpm 包安装方式,安装的软件包便于管理。

    • 缺点:数据库默认采用 PostgreSQL,服务器默认采用 Nginx,不容易定制。

由于国内网络环境的原因,再加上阿里云 ECS 的坑爹深度定制,最好采用第二种方式。

之前太年轻,尝试了第一种方式,编译总是出错…试了好几次都不行,吓鸟了,最后换成了 rpm安装。

Note 阿里云的ECS至少要一核 & 1G内存

安装 GitLab CE Omnibus

在linux终端下,使用cat /etc/issue命令查询当前系统的发行版本,查询到阿里云所安装的linux版本为CentOS release 6.6 (Final)。

进入gitlab官方网站,选择对应的操作系统——CentOS 6 (and RedHat/Oracle/Scientific Linux 6),按照官方的提示进行安装。

首先安装配置必要的依赖,在Centos 6 和 7 中,以下的命令将会打开HTTP和SSH在系统防火墙中的可访问权限。

1
2
3
4
5
6
7
8
9
10
11
sudo yum install openssh-server

sudo yum install postfix

sudo yum install cronie

sudo service postfix start

sudo chkconfig postfix on

sudo lokkit -s http -s ssh

接下来下载 Omnibus package 包并安装:

1
2
curl -O https://downloads-packages.s3.amazonaws.com/centos-6.6/gitlab-ce-7.10.0~omnibus.2-1.x86_64.rpm
sudo rpm -i gitlab-ce-7.10.0~omnibus.2-1.x86_64.rpm

Note 由于amazonaws的服务器被墙,下载这个包时可能需要翻墙下载。

然后配置并启动GitLab,

打开/etc/gitlab/gitlab.rb,将external_url = 'http://git.example.com'修改为自己的域名地址:http://example.com

然后执行下面的命令,对 GitLab 进行编译。

1
sudo gitlab-ctl reconfigure

最后登录GitLab

1
2
Username: root 
Password: 5iveL!fe

配置GitLab的默认发信邮箱

GitLab 中使用 postfix 进行邮件发送。

因此,可以卸载系统中自带的 sendmail

使用 yum list installed 查看系统中是否存在 sendmail ,若存在,则使用 yum remove sendmail 指令进行卸载。

接下来我们就要测试系统是否可以正常发送邮件

1
echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]

注:上面的[email protected]为你希望收到邮件的邮箱地址。

当邮箱收到系统发送来的邮件时,将系统的地址复制下来,如:`[email protected],打开/etc/gitlab/gitlab.rb`,将

1
# gitlab_rails['gitlab_email_from'] = '[email protected]'

修改为

1
# gitlab_rails['gitlab_email_from'] = '[email protected]'

保存后,执行 sudo gitlab-ctl reconfigure 重新编译GitLab。

如果邮箱的过滤功能较强,请添加系统的发件地址到邮箱的白名单中,防止邮件被过滤。

我使用的 Outlook 就马上翻脸给拦截了…

Note: 系统中邮件发送的日志可通过 tail /var/log/maillog 命令进行查看。

参考

GitLab 安装配置笔记