Apache+RailsのPassengerが無事にインスコ出来ましたので、インストール手順を出来るだけわかりやすくエントリーします。

以下のエントリーはPassengerのインストール手順になるので、「RubyRails、Gem、Rake」などのインストール方法については他の方のブログを参考に行ってください。


インストールを行ったディストリビューションFedoraCentOSの2つで、DBはSqliteを使用する事にします。
結論として当然ですが、問題無くインストール出来ました。Apacheなのでサクサク動きます。
rubyなどのバージョンは同じ(2010/01現在の最新版)です。


基本的にオレンジの項目に沿ってインストールを行います。
もし、問題が発生した場合は青の項目を参考にしてください。


それでは、最初に現状把握。

コマンドとバージョンの確認

# ruby -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i686-linux]
#rails -v
Rails 2.3.5
# gem -v
1.3.5
# rake -V
rake, version 0.8.7

この時点でインスコしていない物は入れておきます。
コマンドが認識されない場合はwhichコマンドで環境変数を登録します。

コマンドが認識されない場合、whichコマンドで環境変数の登録
# which ruby
/usr/local/ruby/bin/ruby
# export PATH=/usr/local/ruby/bin/ruby:$PATH
# ruby -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i686-linux]

インストールしているにも関わらず、それでもコマンドが認識されない場合(殆ど無いと思いますが僕の場合rakeコマンドが認識されませんでした)は直接パスを指定して実行してみます。

どうしてもコマンドが認識されない場合、直接パスを指定して実行
# /usr/local/ruby/bin/rake -V
rake, version 0.8.7

一通りの確認は出来、問題は無いのでPassengerをインストールします。

Passengerのインストール

# gem install passenger
# passenger-install-apache2-module

もし、passengerのApacheモジュールコマンド(passenger-install-apache2-module)が実行出来ない場合は、パスを直接指定して実行します。

PassengerのApacheモジュールコマンドが実行出来ない場合
# find / -name 'passenger-install-apache2-module'
# /usr/local/ruby/bin/passenger-install-apache2-module
>> ↑findコマンドで検索した結果に出てきたパスを指定して実行

passenger-install-apache2-moduleが実行されると下記のような文字が出ます。

Passengerインストール

Welcome to the Phusion Passenger Apache 2 module installer, v2.2.9.

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.

そのままEnterキーを押します。

Passengerインストール前確認
--------------------------------------------

Checking for required software...

 * GNU C++ compiler... not found
 * Ruby development headers... found
 * OpenSSL support for Ruby... found
 * RubyGems... found
 * Rake... found at /usr/local/ruby/bin/rake
 * rack... found
 * Apache 2... found at /usr/sbin/httpd
 * Apache 2 development headers... not found
 * Apache Portable Runtime (APR) development headers... not found
 * Apache Portable Runtime Utility (APU) development headers... not found

Some required software is not installed.
But don't worry, this installer will tell you how to install them.

Press Enter to continue, or Ctrl-C to abort.

「not found」となっている物が足りないので「CtrlとC」キーを押して一時中断します。
(全てインストール済みの場合は以下省略)

Passengerインストールに足りないパッケージのインストール
>> GNU C++ compiler... not foundの場合
# yum install gcc
# yum install gcc-c++
>> OpenSSL support for Ruby... not foundの場合
# yum install openssl
# yum install openssl-devel
>> Apache 2 development headers... not foundの場合
# yum install httpd-devel

Apache Portable Runtime」系は「Apache 2 development headers」と同じく「httpd-devel」をインストールすれば大丈夫です。
以上、準備が完了したら再度「passenger-install-apache2-module」コマンドを実行します。

再度Passengerのインストールを実行

# passenger-install-apache2-module
------- 以下省略 ------
--------------------------------------------
The Apache 2 module was successfully installed.

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

   LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-2.2.9/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-2.2.9
   PassengerRuby /usr/local/ruby/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!

最後に上記のような文字が表示されればインストールは完了です。
ここで、もしsqliteがインストールされていない場合はインストールしておきます。

sqliteが入っていない場合はインストール
# yum install sqlite
# yum install sqlite-devel
# gem install sqlite3-ruby

ついでにrailsアプリケーションが生成されていなければ確認用として先に生成しておきます。

動作確認用railsアプリケーションの生成
# cd /home/htdocs/
# rails rails.example.com
# rake db:create

次に、Apacheにpassengerの設定を行います。

httpd.confへの移動
# cd /etc/httpd/conf
# vi httpd.conf

httpd.conf」ファイルの最下部へ以下の設定を追加します(バーチャルホストの場合です)。

httpd.confの編集

# ↓バーチャルホストの場合はこんな感じです
<VirtualHost *:80>
    DocumentRoot /home/htdocs/rails.example.com/public
    ServerName rails.example.com
    RailsEnv development
    <Directory /home/htdocs/rails.example.com/public>
       AllowOverride all
       Options -MultiViews
    </Directory>
</VirtualHost>
# ↓ここはpassengerインスコ完了時に表示されたモジュールのパスを記述します
LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-2.2.9/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-2.2.9
PassengerRuby /usr/local/ruby/bin/ruby

上記を記述したらApacheを再起動します。

Apacheの再起動

# /etc/rc.d/init.d/httpd restart

以上で完了です。
この例の場合は「rails.example.com」をブラウザから表示させます。
(当然ApacheRailsを実行しているのでWEBrickサーバの起動などは行わなくて良いです)