railsアプリをapacheで動かす方法

railsアプリをapacheで動かす方法

rails s でも、とりあえず動作確認できるけど、できれば専用のWebサーバであるapacheで動作させたい。
調べてみたら、Phusion Passengerというgemを使うのが一般的のようだ。

railsアプリをapacheで動かすには、以下の手順を踏めばいいらしい。
手順その1 gem install passenger
手順その2 passenger-install-apache2-module コマンド実行
手順その3 出てきたconfig設定をhttpd.confに書く

手順その1 gem install passenger
a) vi Gemfileで書き込む( gem ‘passenger’ )
b) bundle installで反映

手順その2 passenger-install-apache2-module コマンド実行
updatedb #全ファイルパスのDB更新。デフォだと1日1回
locate passenger-install-apache2-module #コマンドのフルパスを探してもらって実行。
対話式だけど、デフォルトのままで大丈夫。

サーバの状態を解析してApache用モジュールのコンパイルに数分かかるが、最終的に以下の様なconfig設定が出力されればOK!

LoadModule passenger_module /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/passenger-5.0.29/buildout/apache2/mod_passenger.so

PassengerRoot /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/passenger-5.0.29
PassengerDefaultRuby /usr/local/rbenv/versions/2.3.1/bin/ruby

手順その3 出てきたconfig設定をhttpd.confに書く

a) DocumentRootをrailsのpublicに指定する。
httpsの場合は、/etc/httpd/conf.d/ssl.conf
ヴァーチャルホストの場合は、/etc/httpd/conf.d/virtul

b) 手順その2の最後に出てきた設定をapacheに伝えるために新規ファイルを追加する
vi /etc/httpd/conf.d/passenger.conf

c) DocumentRoot/public/.htaccessに、動作環境を定義(productionにすれば本番環境)

これを忘れると、以下の様なエラー画面になってしまう(デフォルトは、product設定です。)
We’re sorry, but something went wrong.
We’ve been notified about this issue and we’ll take a look at it shortly.

d) apacheを再起動して、定義したURLにアクセスすれば表示されるはず
service httpd graceful

とりあえず、apacheで動作するようになったけど、なんか超重たい!
railsは遅いとは聞いてたけど、何秒もかかるようだと実用には耐えられ無さそう…。
1

複数のrailsアプリを同じサーバで動作させるには?

http://sample.co.jp/rails_project1/public
http://sample.co.jp/rails_project2/public
みたいな感じで問題なければ、そのまま配置すればいいだけ。

http://sample.co.jp/shop
http://sample.co.jp/sample
みたいな感じにするなら、