GitLabのインストール
さくらVPS(CentOS)にGitLabをインストールした際のメモ。
参考:https://github.com/gitlabhq/gitlabhq/blob/stable/doc/installation.md
yum
今回はDBにsqlite3を利用するため、あらかじめyumでインストールしておきます。
その他、gitは当たり前として、wgetやcurlもインストールしておくこと。
また、後でcharlock_holmesをインストールするときにlibicu-develも必要となるので、これもインストール。
さらに、redisもインストールして走らせておきます。
$ su - % yum install sqlite-devel libicu-devel redis % /etc/init.d/redis start
ユーザ作成
まずgitユーザとgitlabユーザを作成。
gitlabユーザはgitグループに入れます。
また、gitlabユーザが/home/gitにアクセスできるようにパーミッションを変更します。
$ sudo useradd git $ sudo passwd git $ sudo useradd gitlab $ sudo passwd gitlab $ sudo usermod -G git gitlab $ sudo chmod g+rx /home/git
また、後で必要になるため、一時的にgitlabユーザをsudoersに入れておきます。
(gitlabの動作を確認できたらsudoersから外しておく)
$ sudo vim /etc/sudoers gitlab ALL=(ALL) ALL
ruby(1.9.2-p320)のインストール
環境を汚さないよう、gitlabユーザのホームディレクトリ以下にインストールします。
gemのアップデートもやっておきます。
$ su - gitlab $ mkdir -p local/src $ cd local/src $ wget ftp://ftp.iij.ad.jp/pub/lang/ruby/1.9/ruby-1.9.2-p320.tar.gz $ tar xvfz ruby-1.9.2-p320.tar.gz $ cd ruby-1.9.2-p320 $ ./configure --prefix=$HOME/local/ruby-1.9.2-p320 $ make $ make install $ vim ~/.bashrc export PATH=$HOME/local/ruby-1.9.2-p320/bin:$PATH $ source ~/.bashrc $ gem i rubygems-update $ update_rubygems
python(2.7.3)のインストール
rubyと同様、環境を汚さないようにgitlabユーザのホームディレクトリ以下にインストールします。
後で必要になるため、libpythonへのパスも通しておきます。
$ su - gitlab $ cd local/src $ wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz $ tar xvfz Python-2.7.3.tgz $ cd Python-2.7.3 $ ./configure --enable-shared --prefix=$HOME/local/python-2.7.3 $ make $ make install $ vim ~/.bashrc export PATH=$HOME/local/python-2.7.3/bin:$HOME/local/ruby-1.9.2-p320/bin:$PATH export LD_LIBRARY_PATH=$HOME/local/python-2.7.3/lib:$LD_LIBRARY_PATH
easy_install、pipのインストール
$ su - gitlab $ cd local/src $ wget http://peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.py $ easy_install pip
gitoliteのインストール
gitlabユーザのssh鍵を作成し、公開鍵をgitユーザのホームディレクトリに置いておきます。
$ su - gitlab $ mkdir .ssh $ ssh-keygen -t rsa -P "" -f .ssh/id_rsa $ sudo cp .ssh/id_rsa.pub /home/git/gitlab.pub $ sudo chmod 0444 /home/git/gitlab.pub
gitユーザのホームディレクトリ以下にインストールします。
$ su - git $ git clone -b gl-v304 git://github.com/gitlabhq/gitolite.git /home/git/gitolite $ ./gitolite/install -ln /home/git/bin $ PATH=$PATH:$HOME/bin $ gitolite setup -pk /home/git/gitlab.pub $ sed -i 's/0077/0007/g' /home/git/.gitolite.rc $ exit $ sudo chmod -R g+rwX /home/git/repositories/ $ sudo chown -R git:git /home/git/repositories/
リポジトリにアクセスできるかを確認します。
下の通りに表示され、/tmp/gitolite-adminが作成されていればOK(確認できたら削除)。
$ su - gitlab $ git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin Initialized empty Git repository in /tmp/gitolite-admin/.git/ remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 0 (delta 0) Receiving objects: 100% (6/6), done. $ rm -rf /tmp/gitolite-admin
gitlabのインストール
まず必要となるライブラリを先にインストールし、。
$ su - gitlab $ gem i charlock_holmes --version '0.6.8' $ pip install pygments $ gem i bundler
gitlabをダウンロードしてきます。
$ git clone -b stable git://github.com/gitlabhq/gitlabhq.git gitlab
設定ファイルを設置します。
DBに関しては、今回はsqliteを利用します。
$ cd gitlab $ cp config/gitlab.yml.example config/gitlab.yml $ cp config/database.yml.sqlite config/database.yml
次にgemをインストールするのですが、その前にGemfileに書かれている'https://'の部分を'git://'に書き換えます。また、今回はDBにmysqlを利用しないため、mysql2のインストールも行わないようにします。
$ vim Gemfile (https://をgit://に書き換え、gem "mysql2"をコメントアウト) $ bundle install --without development test --no-deployment
gemのインストールを行いますが、下のコマンドは失敗します。
$ bundle install --without development test --deployment You are trying to install in deployment mode after changing your Gemfile. Run `bundle install` elsewhere and add the updated Gemfile.lock to version control.
この原因は、先ほどGemfileをいじったことのようです。
解決策はいまいち理解していないのですが、stackoverflowに書かれていた方法でうまく動いています。
参考:http://stackoverflow.com/questions/6785626/unable-to-update-gems-on-production-server
$ bundle install --without development test --no-deployment $ bundle update $ bundle install --without development test --deployment
gitの設定をしておきます。
$ git config --global user.name 'gitlab' $ git config --global user.email 'gitlab@example.com'
データベースのセットアップをします。
最後にadminのユーザ名・パスワードが表示されますので、これをメモっておきます。
/home/gitlab/gitlab/vendor/bundle/ruby/1.9.1/gems/blankslate-3.1.2/lib/blankslate.rb:51: warning: undefining `object_id' may cause serious problems
というエラーがでますが、とりあえず無視しておいて大丈夫そうです。
原因・解決策をお分かりになる方がいたら教えていただきたいです。
$ bundle exec rake gitlab:app:setup RAILS_ENV=production ..... Administrator account created: login.........admin@local.host password......5iveL!fe .....
フックのセットアップをします。
$ sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive $ sudo chown git:git /home/git/.gitolite/hooks/common/post-receive
最後に、正しくインストールが行われているかを確認します。
"NO"が出ていなければ問題ありません。
$ bundle exec rake gitlab:app:status RAILS_ENV=production
gitlab動作確認
まずgitlabを起動します。
デフォルトでは3000番ポートで起動しますので、必要に応じてiptablesの設定を行って下さい。
$ su - gitlab $ cd gitlab $ bundle exec rails s -e production
3000番ポートにアクセスして表示されたら、先ほどメモしておいたadminアカウントでログインします。
初回アクセス時には表示されるまでかなり時間がかかりますが、気長に待っていれば大丈夫です。
ログインが確認できたら動作確認完了ですが、adminのパスワードはすぐに変えておきましょう。もしくは、新たな管理者を作成して、adminアカウントを消しておきましょう。
設定変更
リポジトリを1つ作ってみると分かるのですが、httpアクセスのポート番号が80になっており、このままでは正しくアクセスできません。
正しいポート番号(デフォルトなら3000)を、config/gitlab.ymlに設定する必要があります。
その他、必要に応じてconfig以下のファイルを修正します。
auto mergeの有効化
gitlabはブランチ間でmerge requestを送ることができます。
手作業でマージしてもいいのですが、gitlabにはauto merge機能があり、この作業を楽にしてくれます。
ただし、デフォルトでは有効になっていないため、以下のコマンドを実行し、gitlabを再起動します。
$ bundle exec rake gitlab:app:enable_automerge RAILS_ENV=production
まとめ
以上でgitlabの全インストール工程が完了しました。
ここからさらにunicornで動かしたりといった作業があったりもしますが、これに関しては後日。