akishin999の日記

調べた事などを書いて行きます。

GitLab 5.4.0 を CentOS 6.4 にインストールする

この暑さのせいか、自宅サーバの HDD がクラッシュしてしまったので、ここしばらく復旧作業に明け暮れていました。
ただ元の環境に戻すのも面白くないので、いい機会だと OS 含めいろいろと最新バージョンをインストールする事に。

その流れで GitLab も 5.4.0 にしてみたので、構築手順をまとめておきます。

環境は以下になります。

ApacheMySQL に関しては標準の yum から入るもの(Apache 2.2, MySQL 5.1)でも問題はないはずです。

SELinux を無効にする

本当は細かく適切に設定出来た方がいいのだと思いますが、取りあえずここでは無効に設定しておきます。

# setenforce 0
# sed --follow-symlinks -i "s/\(^SELINUX=\).*/\1disabled/" /etc/selinux/config

※ 2013/08/19 修正
/etc/sysconfig/selinux は /etc/selinux/config へのシンボリックリンクなので、直接 sed で書き換えてはいけませんでした。
コメント欄で id:ishikawa84g さんに教えて頂いた「--follow-symlinks」オプションを使用するよう修正しました。
ご指摘ありがとうございました!

依存パッケージのインストール

Git のビルドや GitLab の gem が依存しているパッケージをインストールします。

# yum install -y patch \
                 make \
                 gcc \
                 gcc-c++ \
                 libxml2-devel \
                 libxslt-devel \
                 libicu-devel \
                 openssl-devel \
                 curl-devel \
                 zlib-devel \
                 gettext \
                 perl-ExtUtils-MakeMaker \
                 http://dl.fedoraproject.org/pub/epel/6/x86_64/paco-2.0.9-6.el6.x86_64.rpm

MySQL 5.6 のインストール

以前書いた記事の通りにインストールしました。

CentOS 6.3 に MySQL 5.6 をインストールしてみた - akishin999の日記
http://d.hatena.ne.jp/akishin999/20130207/1360241401

Apache 2.4, Ruby 2.0, Passenger のインストール

こちらは別のホストで以前書いた記事の通りに RPM を作成したものをインストールしました。

Apache 2.4 + Ruby 2.0 + Passenger 4 環境を構築する - akishin999の日記
http://d.hatena.ne.jp/akishin999/20130624/1372026355

Ruby が入ったら bundler をインストールしておきます。

# gem install bundler --no-rdoc --no-ri

Redis 2.6 のインストール

以前の記事の通りに RPM を作成してインストールするか、または Remi リポジトリが提供している 2.6 系をインストールします。

Redis 2.6 の RPM を作成する - akishin999の日記
http://d.hatena.ne.jp/akishin999/20130411/1365634589

Remi リポジトリのものをインストールする場合は以下。

# yum install -y http://dl.fedoraproject.org/pub/epel/6/x86_64/libunwind-1.1-2.el6.x86_64.rpm \
                 http://dl.fedoraproject.org/pub/epel/6/x86_64/libunwind-devel-1.1-2.el6.x86_64.rpm \
                 http://dl.fedoraproject.org/pub/epel/6/x86_64/gperftools-libs-2.0-11.el6.3.x86_64.rpm \
                 http://rpms.famillecollet.com/enterprise/6/remi/x86_64/redis-2.6.13-1.el6.remi.x86_64.rpm

インストールしたら起動しておきます。

# service redis start
# chkconfig redis on

Git 1.8 のインストール

RPM が無かったのでソースコードからインストールしました。
削除したくなった時に備え、 paco 経由で入れています。

# cd /usr/local/src/
# wget https://git-core.googlecode.com/files/git-1.8.3.4.tar.gz
# tar xzf git-1.8.3.4.tar.gz
# cd git-1.8.3.4
# ./configure --prefix=/usr
# make all
# paco -D make install
# git --version
git version 1.8.3.4

ユーザの作成

GitLab 用ユーザを作成します。
設定ファイル内などで /home/git などが直書きされているところがあるようなので、手間を軽減するため素直に git という名前のユーザを作成しました。

# useradd git
# su - git
$ git config --global user.name  "GitLab"
$ git config --global user.email "gitlab@localhost"

gitlab-shell のインストール

GitLab 5 からは gitlite の代わりに gitlab-shell を使うようになりました。
というわけで gitlab-shell をインストールします。

GitHub から gitlab-shell を clone し、v1.7.0 タグをチェックアウトします。

$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlab-shell.git
$ cd gitlab-shell/
$ git checkout -b 1.7.0 v1.7.0

設定ファイルの雛形をコピーし編集します。

$ cp config.yml.example config.yml
$ vi config.yml

gitlab_url などを環境に合わせて変更してください。
もしユーザ名を git ではない名前にした場合は、repos_path や auth_file も変更する必要があるようです。

変更したらインストールします。

$ ./bin/install

これで gitlab-shell のインストールは完了です。

GitLab のインストール

GitHub から GitLab を clone し、v5.4.0 タグをチェックアウトします。

$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
$ cd gitlab
$ git checkout -b 5.4.0 v5.4.0

チェックアウトしたら設定ファイルの雛形をコピーして設定ファイルを作成し、host 名などを必要に応じて編集します。

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

ここでももしユーザ名を git ではない名前にしている場合はディレクトリなどのパスを変更する箇所があるようです。

database.yml をコピーして作成し、環境に合わせて設定します。
DB がまだ作成されていない場合、rake db:create で DB を作成するので、DB 作成権限を持つユーザを設定しておいて下さい。

$ cp config/database.yml.mysql config/database.yml
$ vi config/database.yml

bundler で gem をインストールします。

$ bundle install --deployment --without development test postgres

pids ディレクトリが存在しないようなので作成。

$ mkdir /home/git/gitlab/tmp/pids

※ 2013/08/23 追記
バックアップ時にエラーになってしまうため、以下のディレクトリも作成しておく必要があるようです。

$ mkdir /home/git/gitlab/public/uploads

データベースを作成します。

$ bundle exec rake db:create RAILS_ENV=production

gitlab:setup を実行します。

$ bundle exec rake gitlab:setup RAILS_ENV=production

Redis の起動を忘れていたりすることここでコケるので、もしエラーが発生するようならプロセスを確認してみて下さい。

root ユーザになり Sidekiq 用起動スクリプトを配置します。
gitlab-recipes にある起動スクリプトは puma + sidekiq なのですが、今回は Apache + Passenger を使うので sidekiq だけの起動スクリプトを使用します。

gitlab-recipes の起動スクリプトを Sidekiq のみ扱うよう修正したものをここに置いてあるのでよかったらどうぞ。

ここでは上記の起動スクリプトを配置して起動します。

$ su -
# wget -O /etc/init.d/sidekiq https://gist.github.com/akishin/6104332/raw/50f19f74e31880b3fd12f06516e94530d3d2d222/sidekiq
# chmod +x /etc/init.d/sidekiq
# chkconfig --add sidekiq
# service sidekiq start
# ps -ef | grep  sidekiq

無事起動していたら再度 git ユーザになり、以下を実行して設定等を確認します。

# exit
$ bundle exec rake gitlab:check RAILS_ENV=production

「Init script up-to-date?」以外でエラーが出なければ OK です。

Apache から GitLab のディレクトリにアクセスできるようにするため、apache ユーザを git グループに追加し、グループに対して権限を付与します。

$ su -
# usermod -G git apache
# chmod g+rX /home/git

GitLab 用の VirtualHost 定義ファイルを作成します。

# vi /etc/httpd/conf.d/gitlab.conf

内容は以下。

<VirtualHost *:80>
   ServerName gitlab
   DocumentRoot /home/git/gitlab/public
   <Directory /home/git/gitlab/public>
      AllowOverride all
      Options -MultiViews
      Require all granted
   </Directory>
</VirtualHost>

Apache を再起動します。

# apachectl configtest
Syntax OK
# service httpd start

これで GitLab の構築は完了です。
ブラウザからサーバにアクセスすると GitLab のログインページが開くはずです。

初期ユーザ、パスワードはいつも通り、以下のようになっています。

ID admin@local.host
Password 5iveL!fe


他のミドルウェアも同時に構築したので手順は多いですが、GitLab 自体は以前と比べると大分シンプルにセットアップできるようになりましたね。
自由に使える GitLab が身近にあるとなかなか便利なので、是非一度構築してみて下さい。