mongrel-apacheの連携設定
MacOSX10.5上でMongrelをApacheに連携させるよう設定してみました。
とりあらえず、バランサーとかプロキシーは考えず、単純にApacheからmongrelへRewriteする設定を行いました。
Mongrel を起動
> mongrel_rails start -p <待ち受けポート> -r <アプリケーションのパス> -d
具体的には、railsのアプリケーションのルートの位置から以下のように実行しました。
> mongrel_rails start -p 3000 -r ./ -d
apacheのrewrite設定
VirtualHostへの接続をmongresの接続へとrewriteするよう設定しました。
MacOSX10.5には、mod_rewriteが標準で含まれているのでapacheの設定ファイルでVirtualHostへの接続をmongresの接続へとrewriteするよう設定しました。
MacOSXの場合、 /etc/apache2/users/
今回具体的には「192.168.24.32」というIPアドレスで「pankiti.goronyan.as.wakwak.ne.jp」というホスト名をもつ環境を対象にしました(ホスト名は/etc/hostsに設定しました)。
NameVirtualHost 192.168.24.32 <VirtualHost pankiti.goronyan.as.wakwak.ne.jp> ServerName pankiti.goronyan.as.wakwak.ne.jp ServerAdmin nyaago@goronyan.as.wakwak.ne.jp DocumentRoot /Users/nyaago/workspace/cart/public <IfModule mod_rewrite.c> RewriteRule ^/$ index.html [QSA] RewriteEngine on # 通常ファイル以外をMongrelのurlへrewriter RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ http://localhost:3000%{REQUEST_URI} [P,QSA,L] </IfModule> </VirtualHost>
通常ファイル以外がmongrelのurlにrewriterされるよう設定しました。
-
- 「RewriteEngine on」でrewriteを有効にしています。
- 「RewriteCond <ファイルパターン> !-f 」のかたちで、通常ファイル以外で次のRuleが適用されるようにしています。-fが通常ファイルであることを示し。「!」が否定式です。
- 画像ファイルなど通常ファイルは「DocumentRoot
」というかたちで設定したPath以下のファイルが読み込まれます。 - RewriteRuleで指定しているQSAフラグは、入力URLに含まれていたクエリ文字列が変換後のURLにも付加されるようにすることらしいです。(参考 http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20QSA%A5%D5%A5%E9%A5%B0)
- Lフラグは、そのRuleが適当されれば、それ以後のRuleの適用をしなくするためのものです。(参考 http://www.widexl.com/tutorials/mod_rewrite.html)
- PフラグはPloxyに関するものですが、理解していません。また、しらべよう...
apacheを起動
アクセス
これで「VirtualHost」で設定したurl
(今回はブラウザから「http://pankiti.goronyan.as.wakwak.ne.jp/」)にアクセスするとrailsアプリに接続されます。