2012年2月17日金曜日

Gitlabってなんじゃ?(EC2にインストール編)


Gitlabとは自ホストにGithubライクなリポジトリ管理サイトを立てられるオープンソースツールで、Gitlabhqとも呼ばれています。
Gitを使いたいが外部サイトに依存するには抵抗がある場合は、自前のサイトでホストしてプロジェクト管理、タスク管理、ソース管理できるのでとても有用なプロダクトです。

では早速導入してみます。

GitlabのホストをするためのインスタンスをEC2に立ち上げます。
運用時は必要に応じてインスタンスサイズを変えれば良いですが、インストール時は思いコンパイルが走るので、small以上にしておくと待ち時間が減ります。

今回はCentOS(suz-lab_ebs_centos-core-x86_64-6.0.5)へインストールを行ってみます。
gitアクセスとサイトのブラウジングでSSHとHTTPを使用するため、セキュリティグループ設定でSSHとHTTPを適宜開放しておきます。

以降はEC2インスタンスが起動し、SSH接続した時点からの手順になります。


必要なライブラリのインストール


SELinuxが有効な場合は無効に設定します。
# setenforce 0

まず、rootで以下のライブラリをインストールしておきます。
# yum install -y wget gcc gcc-c++ make patch libtool openssl-devel openssh-clients libxml2 libxml2-devel libxslt libxslt-devel readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel db4-devel byacc curl-devel zlib-devel httpd httpd-devel apr-devel apr-util-devel sqlite-devel libicu-devel pcre-devel git git-core python-setuptools python-devel

また、easy_installでpygmentsもインストールしておきます。
# cd /usr/local/src/
# curl -O http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install pygments

次にredisのインストールと起動を行います。redisとは高速で永続化可能なインメモリDBで、gitlabhqで利用されています。
# wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz
# tar zxvf redis-2.4.6.tar.gz
# cd redis-2.4.6
# make
# make install
# nohup redis-server &


ユーザーの追加

ここでgitリポジトリとGitlabを管理するためのユーザーを追加し、グループを共有しておきます。
# useradd git
# useradd gitlabhq
# usermod -a -G git gitlabhq
# passwd gitlabhq

gitlabhqユーザーでSSHの鍵を作成します。gitlabhqのプロダクトからgitリポジトリにアクセスするために使用します。できた公開鍵をgitユーザーのホームディレクトリに置いておきます。
# su - gitlabhq
$ ssh-keygen -t rsa
$ ssh git@localhost
$ exit
# cp /home/gitlabhq/.ssh/id_rsa.pub /home/git/rails.pub
# chown git:git /home/git/rails.pub
# chmod 600  /home/git/rails.pub


gitoliteのインストール

gitリポジトリそのものの管理やアクセス管理をするためのgitoliteというプロダクトをインストールします。gitlabhqは間接的にgitoliteを使用してリポジトリを管理します。
# su - git
$ git clone git://github.com/gitlabhq/gitolite /home/git/gitolite
$ /home/git/gitolite/src/gl-system-install
$ sh -c "PATH=/home/git/bin:$PATH; gl-setup ~/rails.pub"

インストールの最中に自動的に設定ファイルが開くので、以下の変更を行います。
  //$REPO_UMASK = 0077;
  $REPO_UMASK = 0007;
ファイルを保存し閉じるとインストールが再開し、まもなく完了します。

次に各ディレクトリのパーミッションを調整します。
$ exit
# chmod 755 /home/gitlabhq/
# chmod 750 /home/git/
# chmod -R g+rwX /home/git/repositories/
# chown -R git:git /home/git/repositories/


gitlabhqのインストール

gitlab本体はgithubと同じくRails製です。ここでRubyとRailsをインストールします。今回はApacheで起動するためPassengerもインストールします。
# su - gitlabhq
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
$ source ~/.bash_profile
$ rvm install 1.9.2
$ rvm 1.9.2 --default
$ gem install rails passenger rake bundler grit
$ passenger-install-apache2-module

次にgitlabhq本体をgitからインストールします。
$ git clone git://github.com/gitlabhq/gitlabhq.git
$ cd gitlabhq
$ bundle install --without development test
<---追記:2012/02/28時点でのマスターブランチでは以下のようにymlをコピーをする必要があります。
$ cp config/database.yml.example config/database.yml
$ cp config/gitlab.yml.example config/gitlab.yml
--->
$ bundle exec rake db:setup RAILS_ENV=production
$ bundle exec rake db:seed_fu RAILS_ENV=production
$ vi  config/gitlab.yml
   gitlab.ymlのgit_host/host: の欄にこのインスタンスのパブリックIPかパブリックDNS名を入力


Apacheの設定

次に、gitlabhqをApacheでホストするための設定を行います。
まず、/var/www/htmlにgitlabhqのpublicフォルダへのリンクを貼ります。
$ exit
# cd /var/www/html
# ln -s /home/gitlabhq/gitlabhq/public gitlabhq


次にhttpd.confの設定を行います。
さきほどpassenger-install-apache2-moduleのインストール完了時に表示されたLoadModuleの設定とVirtualHostのサンプルを元に、httpd.confの最後尾に以下のように追加します。
# vi /etc/httpd/conf/httpd.conf
-------
LoadModule passenger_module /home/gitlabhq/.rvm/gems/ruby-1.9.2-p290/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/gitlabhq/.rvm/gems/ruby-1.9.2-p290/gems/passenger-3.0.11
PassengerRuby /home/gitlabhq/.rvm/wrappers/ruby-1.9.2-p290/ruby
RailsEnv production

<VirtualHost *:80>
    ServerName gitlabhq.cloudpack.jp
    DocumentRoot /var/www/html
    ErrorLog logs/gitlabhq_error_log
    CustomLog logs/gitlabhq_access_log common
    RailsBaseURI /gitlabhq
</VirtualHost>

Apacheを起動します。
# /etc/init.d/httpd start


問題なく起動したら、さっそく画面を見てみましょう。

ブラウザでhttp://ホスト名/gitlabhq/を見てみます。


おお、表示されました!
インストールは成功のようです。

今回は以上です。
次回はGitlabの機能をさわってみたいと思います。