Railsの開発において面倒な点として、Mongrelやら何やらを通してサーバを起動しないといけない点である。
別にそれだけなら数あるデーモンの一つというだけで済むが、問題はRailsプロジェクトごとにポートが新しく
必要になることだ。起動するたびにポートが埋まってしまうのは大変面倒である。特に常駐でRedmineが動いている
サーバなのだ、常時ポート3000は埋まっている状態だ。ローカルでちょっと遊ぶくらいには良いかもしれないが、
実際の運用サーバ等に組み込んだときにどんどんセキュリティに穴を開けてしまうのは非常によろしくない。
できれば3000だってあけたくない。
ので、そういった面倒を回避するためにPhusion Passengerを導入する。
これを導入することにより、わざわざruby script/serverなんてしなくても、3000番ポートを
あけなくてもRailsアプリケーションが、しかもいくつでも立ち上げられるようになるのだ。
これには運用の簡略化以外にもレスポンスの向上も望めるそうなので、ちゃきちゃき入れたい。
ではまず本体のPassengerを導入。
次にApaccheとのモジュール
対話形式でインストールが進む。
Apacheをインストールしていない場合は足りないもののリストアップとインストール方法を教えてくれるので、
それにしたがってやれば問題ない。
何も入ってなかったらこれでいいはず。
インストール終了後、以下のメッセージが表示される。
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5
PassengerRuby /usr/bin/ruby
After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
Press ENTER to continue.
Enterを押すと流れてしまうので、今のうちにコピーしておくと楽。
なお、これはたぶん環境によって生成されるものが違うので、上のをコピーしてもうまくいかないやも。
Enterを押すとさらに以下が表示される。virtualhostの設定が表示される。
Suppose you have a Ruby on Rails application in /somewhere. Add a virtual host
to your Apache configuration file, and set its DocumentRoot to
/somewhere/public, like this:
<VirtualHost *:80>
ServerName www.yourhost.com
DocumentRoot /somewhere/public # <-- be sure to point to 'public'!
</VirtualHost>
And that's it! You may also want to check the Users Guide for security and
optimization tips and other useful information:
/usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/doc/Users guide Apache.html
Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
http://www.modrails.com/
Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.
これでインストールは終了なので、さっき指示された通りにファイルをいじりませう。
ファイルの最終行に上で出力された文を追加する。
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5
PassengerRuby /usr/bin/ruby
<VirtualHost *:80>
ServerName www.yourhost.com ←DNSサーバ名や分からない、ないならIPそのものを
DocumentRoot /somewhere/public ←Redmineのルート+さらにpublicを足したもの
</VirtualHost>
また、これによりファイルの実行がMongrelではなくApacheによって行われるため、いくつかのファイルの所有権を移す必要がある。
Redmineのトップフォルダ内で
そしてApacheを再起動する。
http://ServerName
にアクセスすると、以前ruby /script/serverと同じ画面が!