CentOS6.5安装GitLab7.10.4

GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
GitLab 要求服务器端采用 Gitolite 搭建(为了方便安装,现已经用gitlab-shell代替Gitolite[1])。->wikipedia.org

GitLab的安装方式

GitLab的两种安装方法

编译安装

  1. 优点:可定制性强。数据库既可以选择MySQL,也可以选择PostgreSQL;服务器既可以选择Apache,也可以选择Nginx。
  2. 缺点:国外的源不稳定,被墙时,依赖软件包难以下载。配置流程繁琐、复杂,容易出现各种各样的问题。依赖关系多,不容易管理,卸载GitLab相对麻烦。

通过rpm包安装

  1. 优点:安装过程简单,安装速度快。采用rpm包安装方式,安装的软件包便于管理。
  2. 缺点:数据库默认采用PostgreSQL,服务器默认采用Nginx,不容易定制。

安装GitLab CE Omnibus包

查看系统版本

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

下载系统对应的安装包

https://about.gitlab.com/downloads/archives/
进入gitlab官方网站,选择对应的操作系统——CentOS 6 (and RedHat/Oracle/Scientific Linux 6)

按照官方的提示进行安装

安装配置必要的依赖

在Centos 6 和 7 中,以下的命令将会打开HTTP和SSH在系统防火墙中的可访问权限。

1
2
3
4
5
6
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
wget https://downloads-packages.s3.amazonaws.com/centos-6.6/gitlab-ce-7.10.4~omnibus-1.x86_64.rpm
sudo rpm -i gitlab-ce-7.10.4~omnibus-1.x86_64.rpm

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

配置并启动GitLab

  1. 打开/etc/gitlab/gitlab.rb
  2. external_url = 'http://git.example.com'修改为自己的IP地址:http://xxx.xx.xxx.xx
  3. 然后执行下面的命令,对GitLab进行编译。sudo gitlab-ctl reconfigure

登录GitLab

Username: root
Password: 5iveL!fe

安装过程中出现的问题

在浏览器中访问GitLab出现502错误

原因:内存不足。

解决办法:检查系统的虚拟内存是否随机启动了,如果系统无虚拟内存,则增加虚拟内存,再重新启动系统。

80端口冲突

原因:Nginx默认使用了80端口。

解决办法:

  1. 为了使Nginx与Apache能够共存,并且为了简化GitLab的URL地址,Nginx端口保持不变,修改Apache的端口为4040
  2. 这样就可以直接用使用ip访问Gitlab。
  3. 而禅道则可以使用4040端口进行访问,像这样:xxx.xx.xxx.xx:4040/zentao
  4. 具体修改的地方在/etc/httpd/conf/httpd.conf这个文件中
  5. 找到Listen 80这一句并将之注释掉
  6. 在底下添加一句Listen 4040
  7. 保存后执行service httpd restart重启apache服务即可。
1
2
#Listen 80 
Listen 4040

8080端口冲突

原因:由于unicorn默认使用的是8080端口。

解决办法:

  1. 打开/etc/gitlab/gitlab.rb
  2. 去掉# unicorn['port'] = 8080的注释,将8080修改为9090
  3. 保存后运行sudo gitlab-ctl reconfigure即可。

STMP设置

配置无效,暂时不知道原因。

GitLab头像无法正常显示

原因:gravatar被墙
解决办法:
编辑 /etc/gitlab/gitlab.rb,将

1
2
3
# gitlab_rails['gravatar_plain_url'] = 'http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon'
## 修改为:
gitlab_rails['gravatar_plain_url'] = 'http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon'

然后在命令行执行:

1
2
sudo gitlab-ctl reconfigure 
sudo gitlab-rake cache:clear RAILS_ENV=production

补充

使用过程中 500

起初以为是GitLab本身的问题

期间试了N中方法, 并没有成功, 这里记录下来一种比较靠谱的说法

1
2
3
4
5
6
gitlab-rake gitlab:check

gitlab-rake db:migrate

gitlab-ctl reconfigure
gitlab-ctl restart

我遇到的实际的原因

就只是应为我服务器的内存过小
真的就只是这个问题而已, 整了好久 %>_<%

Ps: 推荐内存2GB以上

关于第三方有email的问题

尝试了N久, 并没能成功

http://905010.com/archives/472
http://my.oschina.net/u/1158620/blog/289191?fromerr=hW0nWMlX
http://iceeggplant.blog.51cto.com/1446843/1611147

系统发件问题

尽量不要用IP地址访问

原因: IP地址访问会导致发件人的姓名变成`gitlab@xx.xx.xx.xx`, 而各大邮箱运营商都是屏蔽IP地址邮箱名的, 应为这个问题搞的我重装了此系统, 悲剧

解决方法:

  1. 使用域名访问

    1
    2
    3
    4
    5
    6
    7
    vim /etc/gitlab/gitlab.rb
    # 将
    external_url = 'http://xxx.xx.xxx.xx'
    # 修改为你的域名, 需要解析
    external_url = 'http://git.example.com'
    # 然后执行下面的命令,对GitLab进行编译。
    sudo gitlab-ctl reconfigure
  2. 如果你非要用ip地址访问

一定要把ip地址加到有收件人邮箱的白名单中
Ps: 是IP地址不是发件人, 是IP地址不是发件人, 是IP地址不是发件人, 这点非常重要

参考资料

原文: GitLab 安装配置笔记 (Ps: 对文章有删减, 如有侵权, 请及时联系本人)
https://about.gitlab.com/
http://leo108.com/pid-2150.asp
https://gitlab.com/gitlab-org/gitlab-ce/issues/2052