RailsアプリをApacheで動かすためのモジュール.
入手
- # apachectl stop
- # gem install --no-ri --no-rdoc passenger
環境変数の設定
- Apacheをソースからインストールしたので,passenger設定時にパスが見つからずエラーが出るので,以下を実行
- # export HTTPD=/usr/local/apache2/bin/httpd
- # export APXS2=/usr/local/apache2/bin/apxs
- # export PATH=/usr/local/apache2/bin/:$PATH
設定
- # passenger-install-papche2-module
- Apacheがpassengerモジュールをロードするための設定およびバーチャルホストの設定例が表示されるので,メモっておく
- # emacs /usr/local/apache2/conf/httpd.conf
- passengerモジュールをロードするように,メモに従って,ファイルの末尾に以下を追加.
LoadModule passenger_module /usr/local/lib/ruby/gems/XX/gems/passenger-XXX/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/XX/gems/passenger-XXX
PassengerRuby /usr/local/bin/ruby
RailsEnv development
- 4行目のエントリは,RailsEnvのデフォルトがproductionになっているから.
- バーチャルホストでの運用は,DNSに手を入れないとダメくさいので,以下に示す方法にて運用する.
複数のユーザによる複数のRailsアプリをホスティングするための設定
- 今,ユーザhirochikaが作ったRailsアプリが/home/hirochika/hogeにあり,そのコントローラ名がpeopleであったとする.
- さらに,ユーザhirokoが作ったRailsアプリが/home/hiroko/hogehogeにあり,そのコントローラ名がpersonであったとする.
- MongrelやWebrickでこれらを表示するなら
- http://ホスト名:ポート番号/people/
- http://ホスト名:ポート番号/person/
- のようになる場合に,これらをApache2+passengerでホスティングすることを考える.
- DocumentRootの作り直し
- # cd /usr/local/apache2
- # mkdir html
- # chmod a+w html
- シンボリックリンク作成
- ユーザhirochikaおよびhirokoのホームディレクトリのパーミッションが755であることを確認し,各ユーザがDocumentRootにシンボリックリンクを作成する
- hirochika$ cd /usr/local/apache2/html
- hirochika$ ln -s /home/hirochika/hoge/public hoge
- hiroko$ cd /usr/local/apache2/html
- hiroko$ ln -s /home/hiroko/hogehoge/public hogehoge
- httpd.confの編集とサーバ再起動
- # emacs /usr/local/apache2/conf/httpd.conf
- DocumentRootを変更したので,まずはそれを反映させる
DocumentRoot "/usr/local/apache2/html"
- つぎに,そのディレクトリへのアクセス設定を以下のように追加する.
<Directory "/usr/local/apache2/html">
AllowOverride all
Options -MultiViews
Allow from all
</Directory>
- 最後に,Railsアプリを登録する.
RailsBaseURI /people
RailsBaseURI /person
- # apachectrl restart
- http://ホスト名/hoge/people
- http://ホスト名/hogehoge/person
- でアクセス可能になる.