Apache2とRuby on Railsの連携

Apache2から、Ruby on Railsで作ったウェブアプリケーションにアクセスできるようにします。

curlをインストールします。

※CentOSの場合
$ sudo yum -y install curl-devel

※Ubuntuの場合
$ sudo apt-get -y install libcurl4-openssl-dev

※Vine Linuxの場合
$ sudo apt-get -y install curl-devel

passenger gemをインストールします。

$ sudo `which gem` install passenger --no-ri --no-rdoc

Phusion Passengerをインストールします。

・Apache2をソースインストールしたとき

$ su -
# export APXS2=/usr/local/apache/bin/apxs ※Apache2のインストール先に応じて適宜変更する。
# /usr/local/bin/passenger-install-apache2-module

・UbuntuにApache2をパッケージインストールしたとき

$ sudo /usr/local/bin/passenger-install-apache2-module

※必要なヘッダーファイルがインストールされていなくて、Phusion Passengerがインストールできないときは、『UbuntuにPhusion Passengerがインストールできない』をご覧ください。

※以下、出力メッセージ

Welcome to the Phusion Passenger Apache 2 module installer, v5.0.23.

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.
〜省略〜
Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/local/lib/ruby/gems/2.3.0/gems/passenger-5.0.23/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/local/lib/ruby/gems/2.3.0/gems/passenger-5.0.23
     PassengerDefaultRuby /usr/local/bin/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.

指示に従ってインストール作業を行います。
Phusion Passengerのコンパイルが終わると設定内容が表示されるので、それをhttpd.confに記述(コピー&ペースト)します。
(UbuntuにApache2をパッケージインストールしたときは、/etc/apache2/apache2.confを修正する)

■httpd.confの修正

LoadModule passenger_module /usr/local/lib/ruby/gems/2.3.0/gems/passenger-5.0.23/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.3.0/gems/passenger-5.0.23
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

その他、ドキュメントルートをRailsアプリケーションのディレクトリにするため、以下の部分を変更します。

(変更前)

DocumentRoot "/usr/local/apache/htdocs"
<Directory "/usr/local/apache/htdocs">
〜省略〜
</Directory>

(変更後)

DocumentRoot /home/solima/pg/sample/public
<Directory "/home/solima/pg/sample/public">
    RailsEnv development # デフォルトでproduction環境が実行されるので、
                         # 開発環境のものを実行するときは、この行を付け足す。
〜省略〜
</Directory>

※UbuntuにApache2をパッケージインストールした環境でRailsアプリケーションを動かそうとすると、いろいろなトラブルに悩まされるかもしれません。
対策はこちら » Rails & Apache2 on Ubuntuのトラブル対策