ApacheとPhusion Passengerのセットアップ

2012/01/29

『改訂新版 基礎Ruby on Rails』 読者サポートページ > Rails本番環境構築ガイド

以下、asagao.oiax.jp というホスト名でRailsアプリケーションasagaoを公開する、という前提で手順を記述します。ご自分のホスト名(ドメイン名)で読み替えてください。

この文章の内容は、随時更新しています。最終更新日: 2012/05/06

対象とするOSは次の3つです:

  • CentOS 6.2 (「Basic Server」タイプでインストールされたもの)
  • Ubuntu Server 12.04 LTS
  • Ubuntu Server 10.04 LTS

リモートマシンにsudo権限を持つユーザーでSSH接続し、コマンドを順に実行してください。なお、% はコマンドプロンプトを示します。これらの文字は入力しないでください。

Phusion Passengerのインストール

% sudo gem install passenger --no-ri --no-rdoc
% sudo passenger-install-apache2-module

Apacheの準備

CentOS 6.2の場合

% sudo -s
$ cd /etc/httpd
$ echo "Include /etc/httpd/sites-enabled/" >> conf/httpd.conf
$ mkdir sites-available
$ mkdir sites-enabled
$ rm conf.d/welcome.conf

エディタで /etc/httpd/conf/httpd.conf を開き

#ServerName www.example.com:80

という箇所のコメント記号(#)を取り除いてください。

また、

#NameVirtualHost *:80

のコメント記号(#)を取り除いてください。

httpd.confのServerNameに指定する値はデフォルトの「www.example.com:80」のままにしておいてください。

Ubuntu Server 12.04/10.04 LTS の場合

% sudo -s
$ mkdir /var/www/html
$ cd /etc
$ ln -s apache2 httpd
$ cd httpd
$ echo "ServerName www.example.com:80" >> httpd.conf

「www.example.com:80」の部分は、このままにしてください。ご自分のホスト名(ドメイン名)で読み替える必要はありません。

Phusion PassengerをApacheに組み込む

新規ファイル /etc/httpd/conf.d/passenger.conf に次の内容を書き込みます。

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
PassengerRuby /usr/local/bin/ruby

「3.0.12」はPassengerのバージョン番号です。適宜読み替えてください。

バーチャルホストの追加

新規ファイル /etc/httpd/sites-available/default に次の内容を書き込みます。

<VirtualHost *:80>
  DocumentRoot /var/www/html
  <Directory /var/www/html>
    AllowOverride all
    Options None
    Order Deny,Allow
    Deny from All
  </Directory>
</VirtualHost>

Ubuntuの場合は、既存ファイルdefaultの内容を書き換えてください。asagao.oiax.jp以外のドメイン名やIPアドレスによるアクセスを拒否するための設定です。

シンボリックリンクを設定します(CentOS 6.2の場合のみ)。

$ ln -s /etc/httpd/sites-available/default /etc/httpd/sites-enabled/000-default

新規ファイル /etc/httpd/sites-available/asagao に次の内容を書き込みます。

<VirtualHost *:80>
  ServerName asagao.oiax.jp
  DocumentRoot /var/rails/asagao/public
  RackEnv production
  <Directory /var/rails/asagao/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>
$ ln -s /etc/httpd/sites-available/asagao /etc/httpd/sites-enabled/001-asagao

一時的にasagaoをバーチャルホストから外したい場合は、001-asagaoをunlinkしてください。

Apacheの起動(CentOS 6.2の場合)

$ service httpd start

Apacheの再起動(Ubuntu 12.04/10.04 LTSの場合)

$ service apache2 restart

動作確認

以上で、asagaoがインターネットに公開されます。ブラウザで表示を確認してください。

目次