在 Ubuntu 12.04 上安装 GitLab

gitlab

我们需要一套能自己托管 git 的工具,类似 GitHub,但是要求能 host 在自己的服务器上,看了一下 Git Enterprise 版本,20人每年授权费用是5000美金,太贵,只能找找类似的开源工具,以前用的是 Redmine + GitTrac + Git/Subversion 来管理实验室的项目,有点腻了,听一个朋友说 GitLab 挺好用、基于 Rails & Gitolite、社区活跃每月都有 release、安装起来比 Gitorious 要简单。下午没事装了一个试了一下,感觉还不错,有个重要功能是支持 LDAP 认证,可以很容易和我们的 LDAP 服务器连起来,这样我们不需要在 GitLab 里另外创建用户就可以使用 GitLab 了。GitLab 的官方安装文档非常详细,按照步骤就可以完成安装。

安装 GitLab

安装 curl 后下载 GitLab 的自动安装脚本 debian_ubuntu.sh 并安装:

$ sudo apt-get install curl
$ sudo curl https://raw.github.com/gitlabhq/gitlab-recipes/master/install/debian_ubuntu.sh | sh

上面的安装脚本只进行了完成了部分工作,接下来安装一些库和包、下载 gitlab 源代码、拷贝配置文件:

$ sudo gem install charlock_holmes --version '0.6.8'
$ sudo pip install pygments
$ sudo gem install bundler
$ cd /home/gitlab

# 下载 gitlab 源代码
$ sudo -H -u gitlab git clone -b stable https://github.com/gitlabhq/gitlabhq.git gitlab

$ cd gitlab

# 拷贝配置文件
$ sudo -u gitlab cp config/gitlab.yml.example config/gitlab.yml

安装数据库引擎(可选 SQLite, MySQL, Postgres)、根据对应的数据库引擎(这里选择 SQLite)选择拷贝相应的配置文件并按照对应的 gem,最后安装数据库表:

$ sudo apt-get install -y sqlite3 libsqlite3-dev

$ sudo -u gitlab cp config/database.yml.sqlite config/database.yml

$ sudo -u gitlab -H bundle install --without development test mysql postgres  --deployment

$ sudo -u gitlab bundle exec rake gitlab:app:setup RAILS_ENV=production

配置 gitlab hooks:

$ sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
$ sudo chown git:git /home/git/.gitolite/hooks/common/post-receive

测试一下程序状态,是否该有的配置文件都有了:

$ sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production

运行 gitlab 和 resque:

$ sudo -u gitlab bundle exec rails s -e production
$ sudo -u gitlab bundle exec rake environment resque:work QUEUE=* RAILS_ENV=production BACKGROUND=yes

下载 gitlab 启动脚本并设为系统自动启动:

$ sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab -P /etc/init.d/
$ sudo chmod +x /etc/init.d/gitlab

$ sudo update-rc.d gitlab defaults 21

现在可以通过 /etc/init.d/gitlab 来启动、关闭和重启 gitlab 服务了:

$ sudo /etc/init.d/gitlab restart

配置 LDAP 支持(可选)

如果需要配置 LDAP 认证登陆,修改 gitlab.yml 文件的 2. Auth settings 部分:

$ sudo vi config/gitlab.yml
#
# 2. Auth settings
# ==========================
ldap:
  enabled: true
  host: 'ldap.vpsee.com'
  base: 'dc=vpsee,dc=com'
  port: 636
  uid: 'uid'
  method: 'ssl' # plain
  bind_dn: 'cn=admin,dc=vpsee,dc=com'
  password: 'password'

安装和配置 Nginx + Unicorn

GitLab 可以用 Rails 自带的服务器独立运行,但是在生产环境我们选择用 Nginx + Unicorn:

# 配置 Unicorn
$ cd /home/gitlab/gitlab
$ sudo -u gitlab cp config/unicorn.rb.example config/unicorn.rb
$ sudo -u gitlab bundle exec unicorn_rails -c config/unicorn.rb -E production -D

# 安装 nginx
$ sudo apt-get install nginx

# 增加 gitlab 的 nginx 配置文件
$ sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/nginx/gitlab -P /etc/nginx/sites-available/
$ sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

# 修改 **YOUR_SERVER_IP** 和 **YOUR_SERVER_FQDN**
$ sudo vi /etc/nginx/sites-enabled/gitlab

# 重启 nginx
$ sudo /etc/init.d/nginx restart

测试

打开浏览器访问这台机器域名或 IP 地址,默认用户名是 admin@local.host 密码是 5iveL!fe,登陆后可见如下界面:

gitlab