ここでは CentOS/RedHat の Apache 2.2 に Phusion Passenger をプラグインし、Apache 上で Ruby on Rails アプリケーションを動かせるようにするまでの手順を説明します。
Phusion Passenger のインストール手順は「Phusion Passenger の概要とインストール手順」を参考にして下さい。 ここでは Phusion Passenger は既にインストールしていあることを前提に説明を進めます。
事前準備
後述する Phusion Passenger の Apache 版モジュールを作成するために、Ruby や Gem、Apache がインストールされている事に加えて以下のライブラリが必要です。前もってインストールしておいてください。
- C compiler
- C++ compiler
- Curl development headers with SSL support
- OpenSSL development headers
- Zlib development headers
手っ取り早く yum でインストールしてしまう場合のコマンドは下記の通りです。
yum install gcc gcc-c++ libcurl-devel openssl-devel zlib-devel
また、Apache 2.2 はインストールされていたとしても別途以下のライブラリが必要になります。
- Apache 2 development headers
- Apache Portable Runtime (APR) development headers
- Apache Portable Runtime Utility (APU) development headers
yum でインストールする場合のコマンドは以下です。
yum install httpd-devel apr-devel apr-util-devel
そして本記事の最後で Ruby on Rails のデモアプリを動かします。 その際に SQLite を利用しますので、SQLite のライブラリもインストールしておきます。
yum install sqlite-devel
Phusion Passenger の Apache モジュール版を作成してプラグインする
Phusion Passenger を Apache と連携させるには、Apache モジュール版をインストールします。 Phusion Passenger をインストールした際に passenger-install-apache2-module というコマンドがインストールされていますので、そのコマンドを使用します。
passenger-install-apache2-module のコマンドを叩くと、親切にも下記の実行例のようにこれからの手順を表示してくれます。 そのまま Enter することでモジュールの作成が開始されます。
# passenger-install-apache2-module
This installer will guide you through the entire installation process. It shouldn't take more than 3 minutes in total.
Here's what you can expect from the installation process:
1. The Apache 2 module will be installed for you.
2. You'll learn how to configure Apache.
3. You'll learn how to deploy a Ruby on Rails application.
Don't worry if anything goes wrong. This installer will advise you on how to solve any problems.
Press Enter to continue, or Ctrl-C to abort.
モジュールの作成が完了すると、以下のようなメッセージが表示されます。 今回は /opt 配下に rbenv をインストールした ruby の環境ですので、作成したモジュールのパスが下記のようになっていますが、皆さんの実行環境に合わせてモジュールの作成先が違って表示されていると思います。
The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /opt/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.48/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.48
PassengerDefaultRuby /usr/local/rbenv/versions/2.1.2/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.
メッセージには Apache の設定ファイルに3行追加しなさいと書かれていますので、Apache の設定ファイルに表示されたままを追記します。 /etc/httpd/conf/httpd.conf に上記で表示された3行をファイルの末尾に追記します。
LoadModule passenger_module /opt/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.48/buildout/apache2/mod_passenger.so
PassengerRoot /opt/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.48
PassengerDefaultRuby /opt/rbenv/versions/2.1.2/bin/ruby
上の3行の追記が完了したら、モジュールのインストールのコンソールに戻り、また Enter を押すと以下のようなメッセージが表示されます。 VirtualHost の設定をする例が表示されています。
Deploying a Ruby on Rails application: an example
Suppose you have a Rails application in /somewhere. Add a virtual host to your Apache configuration file and set its DocumentRoot to /somewhere/public:
<VirtualHost *:80>
ServerName www.yourhost.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public
<Directory /somewhere/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>
And that's it! You may also want to check the Users Guide for security and optimization tips, troubleshooting and other useful information:
/opt/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.29/doc/Users guide Apache.html
http://www.modrails.com/documentation/Users%20guide%20Apache.html
Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
次の節で、デモの Ruby on Rails アプリを作りながらバーチャルホストの設定を同時に説明します。
Ruby on Rails のアプリを動かしてみよう
ここまでの設定で Apache 2.2 で Ruby on Rails のアプリケーションが動くようになったはずです。 Ruby on Rails のデモアプリを利用してそれを確かめてみましょう。
Ruby on Rails のための rails コマンドをまだインストールしていない場合は、下記のコマンドでインストールしてください。 (インストールしたら、ターミナルを開き直します)
# gem install rails
ここでは /var/www/html の下に demo という Ruby on Rails のデモアプリを設置します。 (下記のコマンドについては Ruby on Rails アプリを作成するためのコマンドであり本稿の趣旨とは異なる為、コマンドの詳細は別稿にゆずります。)
# cd /var/www/html
# rails new demo
# echo "gem 'therubyracer'" >> ./demo/Gemfile
# cd demo
# bundle install
# rails generate scaffold Blog title:string content:text
# rake db:create RAILS_ENV=production
# rake db:migrate RAILS_ENV=production
Apache の httpd.conf に、以下のようにバーチャルホストの設定を記述します。(※ホスト名はあなたの持つドメイン、もしくはIPアドレスを指定してください)
<VirtualHost *:80>
ServerName your.host.name
DocumentRoot /var/www/html/demo/public
<Directory /var/www/html/demo/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
以上で Apache を起動(再起動)して、http://(あなたのホスト)/blogs にアクセスしてみてください。 作成したブログ・エントリーを管理できるデモアプリが表示されると思います。
トラブルシューティング
Apache を起動した際に SELinux が有効になっていると mod_passenger.so を読み込もうとして Permission denied のエラーになる場合があるので、その場合 SELinux を無効にするなり再設定するなりが必要です。
更新履歴
- 2013年12月31日 – 初版を投稿しました。
- 2014年08月01日 – 記事を校正して最新化しました。