それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Railsをmod_proxy でApacheと動かす。

railsApacheの連携でよく紹介されてたのがmod_proxyを使う方法proxyだからApacheと連携してるとは言いがたいんだけど。まぁApacheとURLを共有できるからある意味連携かな。

railsサーバーを起動してApacheが受付になってRailsにリクエストする方式。

が必要になる。

mod_proxyは apache2.2ではいくつかのサブモジュールに分割されてる。

proxy 経由でHTTPへ転送するには proxy httpが必要

mod_proxy はproxyを使うよってことで
mod_proxy_http は proxy 先へのプロトコルに httpを使うよ
mod_proxy_ajp は proxy 先のプロトコルに ajpを使うよってことで。

インストール

debianの場合は、apacheモジュールのインストールはとても楽

a2enmod proxy 
a2enmod proxy_http
service apache2 reload


Apacheの設定を理解するにはDebianを使うことを勧めす。httpd.confをちまちま読むCentOSスタイルだとドコの設定がどうなってるかが見通し悪くて学習には向かない。Debianスタイルは管理も楽だし、学習にも向いてる。オススメ

railsの起動

localhost に起動する。

rails server -b localhost 

proxyの設定

ProxyPass /book http://localhost:3000/
ProxyPassReverse /book http://localhost:3000/

このように書くと

192.168.1.210/bookへのアクセスは mod_proxy_http経由で http://localhost:3000へ転送される。

railsの自動起動設定

しかしこの場合欠点がある。railsの自動起動が出来ない。めんどくさーい

rubyのdaemonsを使えば良い

daemonsを使ってinitスクリプトとして動くようにして、自動起動に登録すれば良い。

my_app_init.rb
#!/usr/bin/env ruby
require "rubygems"
require "daemons" 


Dir.chdir "path/to/my/app”
Daemons.run(“rails server -b 192.168.2.1")

これで作って。

cp my_app_init.rb /etc/init.d/
rccnonf 

とでもやって、起動時に実行されるように登録すれば良い。centosならchkconfig かな



proxyって色々考えること多いからいっこで終わりませんね。

Apacheの設定のプロになってきた気がする。