Back

源码管理系统Gitlab 5.0+Issue跟踪系统Redmine安装与整合(RVM)

作者 Leopku 微博 http://www.himysql.com 微博 http://weibo.com/leopku 最后更新时间 2013年4月26日

前言

Gitlab是一个开源项目,通过Gitlab可以搭建自己的类Github源码管理平台。

Gitlab 5.0相对之前的版本,最大改进是底层使用Gitlab自己研发的gitlab-shell代替了来自第三方的Gitolite。改进后的Gitlab将更稳定更高效,避免了之前一些用户遇到的莫名其妙的问题。

另外,Gitlab 5.0开始,加入了一个非常实用的新功能——跟Redmine的Issue系统整合。Gitlab自带的Issue功能跟Github类似,简洁明快。但是对于某些项目来说,有些轻量级。Redmine的Issue系统要强大很多。

系统环境

我们采用的系统平台是 Ubuntu 12.04 Server LTS

应用环境

由于服务器上运行着多个RoR项目,包括我们自己的业务系统、将要整合的Redmine、持续集成系统Gitlab-ci,我们使用了Ruby圈常用的RVM来作为Ruby环境。这是跟官方安装文档不一致的地方,也是可能会出问题的地方(所谓的坑)。

数据库环境

  • 关系型数据库:MySQL 5.5
  • KV数据库:Redis

注:我们的架构是业务、数据分离,MySQL和Redis分别运行在跟应用环境独立的服务器上。这一点也是跟官方安装文档不一致的地方,官方文档中应用、数据库是部署在同一台服务器上。在这里,我在安装的过程中也遇到了坑。主要是Redis。

安装步骤

基本跟官方文档一致,但是Ruby环境和数据库这两部分会略有不同。我会将安装过程遇到问题的地方也会标注出来。

添加Git帐号

$ sudo adduser --disabled-login --gecos 'GitLab' git
$ sudo su - git

若未作特殊说明,下面的操作均以git身份运行

安装系统依赖包

# 使用有sudo权限的账号执行
# 保持系统为最新
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install -y build-essential zlib1g zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev libcurl3-dev libreadline6 libreadline6-dev autoconf automake libtoolimagemagick libmagickwand-dev libpcre3-dev libsqlite3-dev libmysql-ruby libmysqlclient-dev vim nginx

官方文档中依赖包有postfix,由于我们有专用的邮件服务器,通过SMTP账号发送邮件,故在这里去掉。

检查系统中Python版本

$ python --version
# 如果显示python版本在2.5以上3.0以下,则符合要求。
# 如果你的系统也是Ubuntu 12.04 LTS,系统默认的python即可。
# 如果不是,则留意一下这里。
# 检查python2命令是否正常
$ python2 --version
# 如果出现找不到命令的错误,则运行如下命令
$ sudo ln -s /usr/bin/python /usr/bin/python2

安装Ruby环境

安装RVM

$ curl -L https://get.rvm.io | bash -s stable
# 载入 RVM 环境(新开 Termal 就不用这么做了,会自动重新载入的)
$ source ~/.rvm/scripts/rvm
# 检查一下是否安装正确
$ rvm -v
rvm 1.17.3 (stable) ...

2013年4月26日更新

在.vimrc的中找到 [ -z "$PS1" ] && return 所在行,将下述第3行插入在该行前。完成后的代码如下:

$ vim ~/.bashrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

Ubuntu用户的若不设置该处,gitlab搭建完之后git将出现git-shell错误、或连接ssh失败。

gitlab-shell:8: undefined method `require_relative' for main:Object (NoMethodError)   

这是git-shell典型的错误信息。

安装Ruby

$ sed -i 's!ftp.ruby-lang.org/pub/ruby!ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db
# 安装 Ruby 1.9.3
$ rvm install 1.9.3

设置ruby版本

$ rvm 1.9.3 --default
# 检查ruby版本是否正确
$ ruby -v
ruby 1.9.3p374 ...
$ gem -v
1.9.3
$ gem source -r https://rubygems.org/
$ gem source -a http://ruby.taobao.org

安装ruby包管理器Bundler

$ gem install bundler
# 检查安装是否正确,有版本号输出即可。
$ bundle -v
Bundler version 1.0

安装Gitlab shell

$ cd /home/git
# 下载gitlab shell源码
$ git clone https://github.com/gitlabhq/gitlab-shell.git
$ cd gitlab-shell
$ cp config.yml.example config.yml
# 根据实际情况填写
$ vim config.yml
# 安装
./bin/install

安装数据库

MySQL

参照https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/databases.md

Redis

第2步已经安装,确保redis服务器已经启动、监听端口正常即可。

安装Gitlab

$ cd /home/git
# 下载gitlab源码
$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
$ cd gitlab
# 取出5.0分支
$ git checkout 5-0-stable
$ cp config/gitlab.yml.example config/gitlab.yml
# 根据实际情况填写
$ vim config/gitlab.yml
# 如果要跟redmine整合的话,打开这里issues_tracker部分的redmine相关行的注释,将url改为你的redmine访问url即可。

# 设置目录权限
$ sudo chown -R git log/
$ sudo chown -R git tmp/
$ sudo chmod -R u+rwX  log/
$ sudo chmod -R u+rwX  tmp/
$ mkdir tmp/pids/
$ chmod -R u+rwX  tmp/pids/

#创建satellites目录
$ mkdir /home/git/gitlab-satellites

$ cp config/unicorn.rb.example config/unicorn.rb

# 配置数据库
$ cp config/database.yml.mysql config/database.yml
# 根据实际情况编辑
$ vim config/database.yml
$ cp config/resque.yml.example config/resque.yml
# 根据实际情况编辑
$ vim config/resque.yml

安装gem包

$ gem install charlock_holmes --version '0.6.9'
$ bundle install --deployment --without development test postgres

初始数据库

bundle exec rake gitlab:setup RAILS_ENV=production

安装自启动脚本

# 切换到有sudo权限的账号执行
$ sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab
$ sudo chmod +x /etc/init.d/gitlab
# 设为开机自启动
$ sudo update-rc.d gitlab defaults 21

配置nginx虚拟主机

# 切换到有sudo权限的账号执行
$ sudo curl --output /etc/nginx/sites-available/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/nginx/gitlab
$ sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
# 根据实际情况编辑
$ sudo vim /etc/nginx/sites-available/gitlab

做下最后的检查

$ bundle exec rake gitlab:env:info RAILS_ENV=production
$ bundle exec rake gitlab:check RAILS_ENV=production
# 如果所有检查结果都是绿色,恭喜你!

启动服务

# 切换到有sudo权限的账号执行
# 启动gitlab服务
$ sudo service gitlab start
# 或者
$ sudo /etc/init.d/gitlab restart
# 重载nginx服务
$ sudo nginx restart

大功告成

通过刚才配置好的nginx虚拟主机名(比如,http://git.yourdomain.com)赶紧体验吧。默认管理员账号:

admin@local.host
5iveL!fe

后记:

感谢群友 Microdog 指出文中多出笔误。 欢迎各位加入HiMySQL官方群讨论:8066111。

comments powered by Disqus