【Ruby】Passengerを使って、RailsとPHPの環境を同じサーバーで構築してみる。

久しぶりにRailsの環境を構築したので、その記録を残しておこう。

RailsをApache上で動かすためのモジュールであるPassengerを使い、Apacheのvhost設定でphpとrubyをそれぞれ動かす環境を構築。このブログではRailsやPHPがインストールされている前提でRailsインストール後から記述する。

環境

Mac OS X : 10.7.5

Apache : 2.2

Ruby : 1.9.3

rvm : 1.15.3

Rails : 3.2.8

Passenger : Phusion Passenger version 4.0.2

Passengerのインストール

$ gem install passenger
$ passenger-install-apache2-module

 

・Permission problemsが表示されたら、下記のコマンドでインストール

$ rvmsudo passenger-install-apache2-module

Passenger設定情報取得

インストールを完了すると上記のようなコードと下のコードをコピーしてください。

 

<VirtualHost *:80>

  ServerName sample.localhost
  DocumentRoot "/example/sample/public"
  # !!! Be sure to point DocumentRoot to 'public'!
  <Directory /example/sample/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>

Apacheの設定(HTTPD.CONF)

$ sudo vi /etc/apache2/httpd.conf

 

・上記イメージのコードを追記してください。

・下のようにVirtual hostをONにします。

 

# Virtual hostsInclude

#/private/etc/apache2/extra/httpd-vhosts.conf

これを

# Virtual hostsInclude

/private/etc/apache2/extra/httpd-vhosts.conf

にする。

 

hostsの設定

$ sudo vi /etc/hosts

 

下記を追記(後ろのドメイン名はどれでも良い。)

127.0.0.1       php.localhost

127.0.0.1       rails.localhost

httpd-vhosts.confの設定

<VirtualHost *:80> 

    ServerName php.localhost 

    DocumentRoot "/php_sample/hello" 

    <Directory "/php_sample/hello">   

        AllowOverride all   

        Options -MultiViews 

    </Directory>

</VirtualHost>

 

<VirtualHost *:80> 

    ServerName rails.localhost 

    # !!! Be sure to point DocumentRoot to 'public'! 

    DocumentRoot "/rails_sample/hello" 

    <Directory "/rails_sample/hello">   

        AllowOverride all   

        Options -MultiViews 

    </Directory>

</VirtualHost>

上記をvhostsに追記します。

上はphpで下はrailsです。

それぞれのプロジェクトのRootを設定すればオッケーです。

 

ここまで終わったらApacheを再起動

$ sudo /usr/sbin/apachectl restart

確認

rails.localhostで接続するとこんな画面。

php.localhostで接続するとこんな画面。