2013年3月19日星期二

在CentOS6.3上安装GitLab

本文主要参考了Install GitLab on CentOS 一文,并附加一些安装错误的解决方案。

GitLab简介

GitLab是一个用于仓库管理系统的开源项目,项目首页:http://gitlab.org/
使用Git作为版本控制工具,并在此基础上搭建起web服务。web服务使用的ruby on rails,并使用了gitolite协同工作。使用mysql和redis作为数据服务。

一键安装脚本

请访问:https://github.com/mattias-ohlsson/gitlab-installer/blob/master/gitlab-install-el6.sh 。本文并未使用一键安装脚本。由于自定义了mysql和redis,因此有些配置是自己手动实现的。

安装系统依赖

如果安装了redis,下面的脚本中就将redis去掉。
# yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel gcc-c++ libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui python-devel redis mysql-devel postgresql-devel
请注意libicu-devel,请注意安装时是否成功安装,如果不成功,将会在后面的安装过程出现错误,安装失败请手动安装libicu-devel

安装Ruby

先安装qt
# yum install qt-devel qtwebkit-devel -y
查看系统中ruby的版本,gitlab需要ruby至少是1.9.3
# curl -O http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz  
# tar xzvf ruby-1.9.3-p0.tar.gz  
# cd ruby-1.9.3-p0

# ./configure --disable-install-doc

更新gem&安装rails

可以先更新一下gem,再安装rails
# gem update --system  
# gem update  
# gem install rails

安装gitolite

创建git和gitlab用户,并加入组
# adduser --system --shell /bin/bash --comment 'gitolite' --create-home --home-dir /home/git git
# adduser --shell /bin/bash --create-home --home-dir /home/gitlab gitlab
# usermod -a -G git gitlab
# usermod -a -G gitlab git
# sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
# cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
# chmod 0444 /home/git/gitlab.pub
安装gitolite
sudo -H -u git git clone -b gl-v304 https://github.com/gitlabhq/gitolite.git /home/git/gitolite
切换到git用户
su git
$ cd /home/git
$ git clone -b gl-v304 https://github.com/gitlabhq/gitolite.git /home/git/gitolite
$ mkdir bin
$ gitolite/install -ln /home/git/bin
$ bin/gitolite setup -pk /home/git/gitlab.pub

修正权限

# chmod -R g+rwX /home/git/repositories/
# chown -R git:git /home/git/repositories/
# chmod 750 /home/git
检查权限是否生效:
# sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin

安装pygments和bundle

# easy_install pip  
# pip install pygments  
# gem install bundler

安装补充依赖

# gem install ruby-debug19
# gem install charlock_holmes

安装gitlabhq

在gitlab用户下安装
# su gitlab
$ cd /home/gitlab
$ git clone -b stable https://github.com/gitlabhq/gitlabhq.git gitlab
修改配置
请注意:三个文件的配置需要根据自身修改。比如database.yml指定了mysql服务的配置信息。gitlab中指定了host,port,repositories目录等信息,需要一一修改。
$ cd /home/gitlab/gitlab/config
$ cp gitlab.yml.example gitlab.yml
$ cp database.yml.mysql database.yml
$ cp unicorn.rb.example unicorn.rb
再安装一些依赖
# cd /home/gitlab/gitlab
# sudo -u gitlab -H bundle install --without development test sqlite postgres  --deployment

配置gitlab的git用户信息

# sudo -u gitlab -H git config --global user.email "gitlab@localhost"
# sudo -u gitlab -H git config --global user.name "Gitlab"

安装,初始化程序

注意,此时需要有一个mysql的服务,并在database.yml中配置好用户名和密码。
如果没有安装mysql,可以执行:
# yum install mysql-client mysql-server
# sudo gitlab
$ cd /home/gitlab/gitlab
$ RAILS_ENV=production rake db:setup
$ RAILS_ENV=production rake db:seed_fu  

运行一下看看:)

$ nohup bundle exec rails s -e production > /home/gitlab/gitlab.log 2>&1 &
访问地址:
http://127.0.0.1:3000

默认的管理员密码

user: admin@local.host
pass: 5iveL!fe

配置nginx

注意,需要修改nginx的启动用户:
#user              nginx;
user              gitlab root;

启动脚本


放入/etc/init.d并启动服务:
# curl --output /etc/init.d/gitlabhq https://github.com/gitlabhq/gitlab-recipes/blob/master/init.d/gitlab-centos
# chmod 755 /etc/init.d/gitlabhq
# service gitlabhq start
如果出现以下信息表示启动成功:
Starting unicorn:                                          [  OK  ]
Starting sidekiq:                                          [  OK  ]
注意:gitlab.socket此时才在指定目录出现,而以上面的测试方式启动在3000端口的服务是无法获得unix的socket的。此时使用脚本启动完成后,nginx的配置也会生效。
如果访问nginx proxy的地址后,出现css加载失败的情况,请执行下面命令后重启gitlab。
# bundle exec rake assets:precompile RAILS_ENV=production
之前曾经出现过ssh_key校验失败的错误,现在也没有复现了,考虑可能和更改使用socket方式有关,或者是因为执行了下面这条命令,具体原因无法分析了。
# bundle exec rake gitlab:enable_namespaces RAILS_ENV=production 
使用merge requests中出现错误提示:This repository does not have satellite. Ask administrator to fix this issue  需要执行下面的命令:
# bundle exec rake environment gitlab:enable_automerge RAILS_ENV=production
执行中如果出现错误:
Updating repo permissions ...
... done

Creating satellites for ...
Administrator / tongji-app ... 
rake aborted!
No such file or directory - chdir
需要手动创建目录
# mkdir /home/gitlab/gitlab-satellites

没有评论:

发表评论