share facebook facebook twitter menu hatena pocket slack

2012.02.17 FRI

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

三浦 悟

WRITTEN BY 三浦 悟

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 $ 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
$ 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


    ServerName gitlabhq.cloudpack.jp
    DocumentRoot /var/www/html
    ErrorLog logs/gitlabhq_error_log
    CustomLog logs/gitlabhq_access_log common
    RailsBaseURI /gitlabhq

Apacheを起動します。

# /etc/init.d/httpd start

問題なく起動が完了したら、Gitlabの画面を確認してみます。

ブラウザでhttp://ホスト名/gitlabhq/を表示します。

上記のように、問題なく表示され、インストールは成功のようです。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら

三浦 悟

三浦 悟

高円寺在住のなんじゃ系男子 またの名をmemorycraftといいます。 炭水化物大好き 日々の「なんじゃ?」を記事にしてます。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。