CentOS6にGitLabをインストールする方法

 2012/07/01

GitLabはgithubのクローンのようなもので、表に出せないけどgithubみたいなものが使いたいという場合に有効だろう。

ここではCentOS6 (x86_64)にインストールする手順を解説する。

yum用の追加レポジトリの設定

CentOS6の標準レポジトリには存在しないパッケージが多数あるため、epelとremiを使用する。まだepelとremiを利用していない場合は、以下のように設定する。

rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

必要なパッケージの導入

CentOS6.2のrubyのバージョンはデフォルトでは1.8.7であるが、GitLabは1.9.2が求められているため新たにソースから自分でビルドする。それを含めてビルドや動作に必要となるパッケージを導入する。

yum install -y gettext rpm-build httpd-devel libcurl-devel gdbm-devel libyaml-devel mysql-server mysql-devel git python-devel python-pip redis libicu-devel postfix
pip-python install pygments

Redis サービスの起動

gitlabで利用するRedisとは「remote dictionary server」から名付けられたオープンソースのkey-valueデータストアで値にデータ構造をセットできるのが特徴である。 先ほどyum経由でインストールしたので、サービスを常時起動するように設定しておく。

/sbin/chkconfig --level 2345 redis on
service redis start

なお、MySQLやApacheも今回初導入の場合は同じように以下のようにしておくのは言うまでもない。

/sbin/chkconfig --level 2345 mysqld on
service mysqld start
/sbin/chkconfig --level 2345 httpd on
service httpd start

checkinstallの導入

checkinstallは、ソース形式で提供され自身でmake installするソフトウェアをrpm化してくれるツールである。これを使うとパッケージの管理が楽になるので導入しておく。

mkdir -p /root/rpmbuild/SOURCES
cd /tmp
git clone http://checkinstall.izto.org/checkinstall.git/
cd checkinstall
make
make install
/usr/local/sbin/checkinstall

これでrpmが/root/rpmbuild以下に作成されるので、以下のようにしてインストールする。

rpm -Uvh /root/rpmbuild/RPMS/x86_64/checkinstall-20120701-1.x86_64.rpm

ruby1.9.3の導入

CentOS6の古いrubyをシステム全体として入れ替える。既存のサーバ等で入れ替えが難しい場合はRVMを使ってもよい。その場合は以降の手順は変わってくる。

cd /tmp
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
tar xvfz ruby-1.9.3-p194.tar.gz
cd ruby-1.9.3-p194
./configure --prefix=/usr
make
/usr/local/sbin/checkinstall --fstrans=no

これでrpmが作れたのでインストールする。

rpm -Uvh /root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p194-1.x86_64.rpm

バージョンを確認しておこう。

[root@localhost ruby-1.9.3-p194]# ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

引き続きrubygemsをインストールし、その後bundlerをインストールする。

cd /tmp
wget http://rubyforge.org/frs/download.php/76073/rubygems-1.8.24.tgz
tar xvfz rubygems-1.8.24.tgz 
cd rubygems-1.8.24
ruby setup.rb
gem install bundler

ここまでで事前準備完了だ。続いてgitlabのインストールに入ろう。 なおGitLabの動作には、Gitoliteのインストールが必要だ。GitoliteはGitリポジトリのユーザー管理やアクセス制御を簡単に行うオープンソースのツールだ。 詳しくはこちらを参照すると良いだろう。

必要なユーザーとグループの追加

まずGitLabとGitoliteに必要なユーザーを追加し、ディレクトリのパーミッションを変更する。

useradd git
useradd gitlab
usermod -G git gitlab
chmod g+rx /home/git

gitlabアカウントが自身のサーバに接続するための鍵ファイルを作成

GitLabは、自身のサーバのgitアカウントに接続することで様々な処理を行う。 そのため、gitlabアカウントの鍵ペアを作成し、gitアカウント側に公開鍵を登録する必要がある。なお、下記でSSH接続するのはknown_hostsに追加するためなので、それが終わったらsshを終了して良い。

su - gitlab
ssh localhost
ssh-keygen -t rsa -P "" -f ~/.ssh/gitadmin
exit #rootに戻る
mv /home/gitlab/.ssh/gitadmin.pub /home/git

gitlabユーザーになり、sshの設定を行う。

su - gitlab
vi ~/.ssh/config

なお、configには以下を追加する。

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

編集が完了したらconfigのパーミッションを変更するとともにgitの設定を初期化する。

chmod 0600 ~/.ssh/config
git config --global user.email "gitadmin@example.com"
git config --global user.name "gitadmin"
exit

Gitoliteをインストールする

以下のようにソースを取得し、インストールしたあとに、先ほど作成してgitディレクトリに移動した公開鍵を登録する。 その後、.gitolite.rcを開き、UMASKの値を0077から0007に変更する。これを行わないと、GitLabからソースが読めない。

su - git
git clone git://github.com/sitaramc/gitolite
gitolite/install
gitolite/src/gitolite setup -pk gitadmin.pub 
vi /home/git/.gitolite.rc
exit

GitLabのインストール

gitlabアカウントのホームディレクトリにインストールする。今回導入するのは2.5.0だ。 なお、過去の2.2系ではデフォルトでsqliteを利用していたが、現在はMySQLを利用するようになっている。

su - gitlab
wget --content-disposition https://github.com/gitlabhq/gitlabhq/tarball/v2.5.0
tar xzf gitlabhq-gitlabhq-v2.5.0-0-gcc83691.tar.gz
ln -s gitlabhq-gitlabhq-8c70ac2 gitlabhq
cd /home/gitlab/gitlabhq
bundle install --deployment --without development test

設定ファイルを準備し、適宜編集する。

cp config/database.yml.example config/database.yml
cp config/gitlab.yml.example config/gitlab.yml
vi config/database.yaml
vi config/gitlab.yaml

なお、database.yamlではDBの接続先やユーザー情報を設定する。 gitlab.yamlでは、接続対象となるgitの設定を行うが、デフォルトがlocalhostとなっており、このままでは外部から扱えないので、他のマシンからアクセス可能なIPアドレスまたはFQDNに変更する。

データベースの初期データを流し込み、ユーザーを作成する。

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
chmod 777 /home/gitlab
gem install passenger
passenger-install-apache2-module

CentOSの場合は設定ファイルはconf.d以下にxxx.confという名前を作っておくと管理しやすいので、/etc/httpd/conf.d/以下にgitlab.confを以下の内容で作成し、Apacheを再起動する。

LoadModule passenger_module /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.13
PassengerRuby /usr/bin/ruby
<virtualhost *:80>
  # ServerName www.yourhost.com
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /home/gitlab/gitlabhq/public    
  <directory /home/gitlab/gitlabhq/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews
  </directory>
</virtualhost>

今度はポート番号指定なしでアクセスできることを確認しておこう。ここから先はgithubの操作とほとんど変わりない。

プロジェクトを作成する

作成が完了すると、操作のガイドが表示される。

このとき、まだ自分の公開鍵を登録していないので、プロフィール画面から登録する。(以下に出ている鍵は使い捨て用なのでご心配なく!)

あとは、ローカルのマシンからソースを登録してみると良い。

mkdir sandbox
cd sandbox
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@192.168.200.11:sandbox.git
git push -u origin master

複数ファイルは以下のように表示される。

ソースは、自動的に種別が判定されハイライト表示される。

以上だ。

 2012/07/01

サイト内検索


著作

寄稿

Latest post: