akishin999の日記

調べた事などを書いて行きます。

GitLab を Apache2 + Passenger で動かしてみる

前回インストールした GitLab を Apache + Passenger で動作するように設定してみます。
httpdhttpd-devel は既にインストール済みのものとします。

2013.08.16 追記
新しいバージョンについて記事を書いています。
こちらも参照してください。
GitLab 5.4.0 を CentOS 6.4 にインストールする

Passenger のインストール

gem から passenger をインストール。

# gem install passenger --no-rdoc --no-ri

gem が無事インストールされたら以下を実行し Apache モジュールをインストールします。

# passenger-install-apache2-module

ここでビルドに必要なヘッダファイルなどが足りなければ表示されるので、一旦インストールしてから再度 passenger-install-apache2-module を実行します。

インストールが完了すると、以下のように Apache 用の設定が表示されます。

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11
PassengerRuby /usr/local/bin/ruby

この内容を Apachehttpd.conf に記述します。
ここでは /etc/httpd/conf.d/passenger.conf という設定ファイルを作成し、上記内容を記述しました。

# vi /etc/httpd/conf.d/passenger.conf

以上で Passenger モジュールのインストールは完了です。

Apache 設定

続いて Apache から GitLab を見られるようにするための設定を行います。

まずは Apache実行ユーザ(ここでは apache とします)が /home/gitlabhq にアクセスできるよう、 gitlabhq グループに追加します。

# usermod -G gitlabhq apache

次に /home/gitlabhq にグループからのアクセスを許可するようパーミッションを設定します。

# chmod g+rX /home/gitlabhq

GitLab 用の VirtualHost 定義ファイルを作成します。
ここでは IP ベースの VirtualHost としましたが、名前ベースで設定したい場合は、/etc/httpd/conf/httpd.conf 内の NameVirtualHost の設定も行って下さい。

# vim /etc/httpd/conf.d/gitlab.conf

以下のような内容を記述します。

 <VirtualHost 192.0.2.0:80>
    ServerName 192.0.2.0
    DocumentRoot /home/gitlabhq/gitlabhq/public
 </VirtualHost>

完了したら設定ファイルの文法チェックを実施し、問題なければ Apache を再起動します。

# apachectl configtest
Syntax OK
# service httpd restart

以上で Apache + Passenger で GitLab が実行できるようになりました。

上記で上手く表示されない場合、home ディレクトリのパーミッションSELinux の設定を確認してみてください。
SELinux の設定によっては home ディレクトリ配下のディレクトリを Apapche の DocumentRoot として指定できない場合があります。