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の機能をさわってみたいと思います。