CentOS6.2でGitLabのインストール

GitLabとは、自ホストにGitHubのようなリポジトリ管理サイトを構築することができるオープンソースツールです。

Gitを使いたいが外部サイトに依存するには抵抗がある場合は、自前のサイトでホストしてプロジェクト管理、タスク管理、ソース管理できるのでとても有用なプロダクトです。

ここではCentOS6.2(x86_64)にインストールする手順をメモしておきます。


■必要なパッケージの導入
epelをリポジトリに追加します。Rubyやgitolite、GitLabで使用するパッケージ群を入れます。無駄なものもあるかもです。

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
# vim /etc/yum.repos.d/epel.repo 【#enabled=0に変更】
# yum update
# yum -y groupinstall 'Development Tools' 'Additional Development' --enablerepo=epel
# yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc gitolite 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 --enablerepo=epel


■gitoliteインストール&ユーザー準備
gitolite管理用ユーザgitとgitlab実行用ユーザgitlabhqユーザを作成します。
また、gitlabhqユーザをgit グループにも所属させておきます。

# useradd git
# useradd gitlabhq
# usermod -G git gitlabhq

グループに所属するユーザからリポジトリを参照できるように、/home/git にグループに対するパーミッションを設定します。

# chmod g+rx /home/git

gitolite へ登録するための管理ユーザ用公開鍵を作成するため gitlabhq ユーザになります。

# su - gitlabhq

一旦localhostssh接続を試み、/home/gitlabhq/.ssh/known_hostsが作成されlocalhostが登録されるところまで実行します。

$ ssh localhost

公開鍵を作成し、 git ユーザのホームディレクトリに移動させておきます。

$ ssh-keygen -t rsa -P "" -f ~/.ssh/gitadmin
$ exit     <span class="deco" style="color:#0000FF;"># root に戻ります</span>
# mv /home/gitlabhq/.ssh/gitadmin.pub /home/git

Gitのホストとなるgitoliteを入れます。
git ユーザになり、gitoliteをgithubからcloneしインストールします。

# su - git
$ git clone git://github.com/gitlabhq/gitolite
$ gitolite/install
$ gitolite/src/gitolite setup -pk /home/git/gitadmin.pub

/home/git/.gitolite.rcのUMASKを0077→0007へ変更。

#$REPO_UMASK = 0077;
$REPO_UMASK = 0007;

gitlabhqユーザになり、~/.ssh/configを作成します。。

$ exit     【# gitlabhqユーザにsuするためrootに戻る】
# su - gitlabhq
$ vim ~/.ssh/config

環境に合わせ、以下のような内容を記述します。

Host localhost
  HostName localhost
    User git
    IdentityFile ~/.ssh/gitadmin

作成したら権限を変更。

$ chmod 0600 ~/.ssh/config

gitlabhqユーザでのgitの初期設定を行っておきます。

$ git config --global user.email "gitadmin@example.com"
$ git config --global user.name "gitadmin"


Rubyのインストール
インストール済みの場合は飛ばしてください。
Rubyはrbenvを/usr/local/にインストールしてユーザグループ共通(ここではrubyist)で使うようにしました。

$ exit 【#root】
# cd /usr/local
# git clone https://github.com/sstephenson/rbenv.git
# mkdir rbenv/shims rbenv/versions rbenv/plugins
# groupadd rubyist
# chgrp -R rubyist rbenv
# chmod -R g+rwxXs rbenv
# cd rbenv/plugins
# git clone git://github.com/sstephenson/ruby-build.git
# cd ruby-build/
# ./install.sh
# vi /etc/profile

PATHを追加します。ユーザグループ共通のRuby環境が不要であれば、.bashrcや.zshrcに追記でもいいと思います。

# vi /etc/profile
export RBENV_ROOT="/usr/local/rbenv"
export PATH="/usr/local/rbenv/bin:$PATH"
eval "$(rbenv init -)"

先ほどのPATHを反映させるために、再度ログインしてrbenvでRubyをインストールします。

# which rbenv
# rbenv install #リスト表示
# rbenv install 1.9.3-p194
# rbenv rehash
# rbenv global 1.9.3-p194
# gem update --system
# gem update
# gem install bundler --no-rdoc --no-ri
# rbenv rehash


■Redisのインストール

# yum install -y python-devel python-pip redis libicu-devel --enablerepo=epel
# pip-python install pygments
# chkconfig redis on
# service redis start


MySQLのインストール
インストール済みの場合は飛ばしてください。

# yum install mysql-server
# vim /etc/my.cnf
# service mysqld start


■GitLabのインストール

# su gitlabhq
$ git clone git://github.com/gitlabhq/gitlabhq.git
$ cd ./gitlabhq
$ bundle install --deployment --without development test

設定ファイルの雛形をコピーします。database.ymlのMySQLアカウントとgitlab.ymlのホスト名などは環境に合わせて変更してください。

$ cp config/database.yml.example config/database.yml
$ cp config/gitlab.yml.example config/gitlab.yml

$ vim config/database.yml
$ vim config/gitlab.yml

Rakeコマンドを実行して初期データを投入します。

$ bundle exec rake db:setup RAILS_ENV=production
$ bundle exec rake db:seed_fu RAILS_ENV=production

以下のように初期用のアカウントとパスワードが生成されます。

Administrator account created:

login………admin@local.host
password……5iveL!fe

以上で準備完了なので実行してみてください。なお、以下のコマンドで実行した場合はデフォルトで3000番ポートを使うので、iptablesの設定をしている場合は、3000番ポートの通信を許可してください。

$ bundle exec rails s -e production

ブラウザ経由でアクセスして、以下のように表示されれば、インストールは成功です。


Apacheと連携設定
このままでは、手動で起動しなきゃいけないので、PassengerとApacheを利用するように設定します。

# su
# gem install passenger
# passenger-install-apache2-module

さきほどpassenger-install-apache2-moduleのインストール完了時に表示されたLoadModuleの設定を元に、/etc/httpd/conf.d/以下にgitlab.confを以下の内容で作成します。

# vim /etc/httpd/conf.d/gitlab.conf
LoadModule passenger_module /usr/local/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.17
PassengerRuby /usr/local/rbenv/versions/1.9.3-p194/bin/ruby
RailsEnv production

<VirtualHost *:80>
    ServerAdmin info@exmple.com
    ServerName gitlab.exmple.com
    DocumentRoot /home/gitlabhq/gitlabhq/public
    ErrorLog logs/gitlabhq_error_log
    CustomLog logs/gitlabhq_access_log common
</VirtualHost>

ApacheからGitLabを見られるようにするための設定を行います。
Apache実行ユーザ(ここではapacheとします)が/home/gitlabhqにアクセスできるよう、gitlabhq グループに追加し、グループからのアクセスを許可するようパーミッションを設定します。

# usermod -G gitlabhq apache
# chmod g+rX /home/gitlabhq

Apacheを再起動します。

# /etc/init.d/httpd restart

ブラウザでhttp://ホスト名/にアクセスしてみてください。
先ほどのログイン画面が表示されればインストール成功です。

けっこう大変ですね。



■おすすめサービス