* Rails3をApache上で運用する [#t0255f08]

専用のポートを開けるのではなく、既存の Apache 上で Rails3 アプリを動作させる方法です。

** 環境 [#s6a719ed]
- Apache2
- Ubuntu 7.10

** Passengerモジュール [#je7c0bcc]
*** Passengerモジュールのインストール [#q67c428a]
Apache 上で Rails3 アプリを動かすには、Passenger モジュールを Apache に組み込む必要があります。

gem で Passenger のパッケージを入手して下さい。
 $ gem i passenger

続いてインストールを行ないます。
 # passenger-install-apache2-module

途中いろいろ必要なパッケージを入れろと警告が出るかと思います。インストール方法まで丁寧に示してくれるので、それに従い対応します。

*** Apache の設定 [#fca73a61]
続いて、Apache の設定を行ないます。 /etc/apache2/mods-available に移動して、rails.conf、rails.load というファイルを生成して下さい。"rails" の部分は任意の名称で良いです。

rails.load
 LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.8/ext/apache2/mod_passenger.so

rails.conf
 PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.8
 PassengerRuby /usr/local/bin/ruby

最後に、公開したい Rails アプリの場所を設定します。Rails アプリを動かしたいバーチャルホストに以下の設定をします。
 <VirtualHost *:80>
     ...(略)...
     RailsBaseURI /prof/RailsAppName/public
 </VirtualHost>
RailsAppName という Rails アプリを自動生成したさいに、public ディレクトリも生成されています。RailsBaseURI には、public ディレクトリを指定します。URI は、このバーチャルホストの DocumentRoot からの、相対パスになります。

*** 動作確認 [#obc39ad2]
ブラウザから、http://ホスト名/prof/RailsAppName/public で Rails アプリにアクセス出来ます。

*** public をパスから隠蔽する [#s7cb407c]
URL から "public" を隠蔽するには、シンボリックリンクを利用します。Rails アプリ本体を適当な場所に置いて下さい。Apache の DocumentRoot 配下でも、それ以外の場所でも良いです。(自分は、Webサーバのバックアップをまとめて取りたいので、DocumentRoot 配下に置いています)

今回の例では、DocumentRoot 直下の rails ディレクトリに Rails アプリを配置することにします。

まず、以下のようにシンボリックリンクを作成します。
 ln -s rails/RailsAppName/public RailsAppName

Apache の RailsBaseUri を以下のように設定します。
 RailsBaseUri /RailsAppName

これでブラウザから、http://ホスト名/prof/RailsAppName/ で Rails アプリにアクセス出来ます。

** 余談 [#ja8b5c47]
Rails アプリは、Perl や PHP のようなスクリプト言語ではなく、Java Servlet のようなイメージを持つと分かりやすいかと思います。最初のアクセスでは若干処理が重くなり、以降の処理は軽くなります。Servlet と同じく、初回時はコンパイルのようなことをしているのでしょうか。

----
** 履歴 [#e3c1f47d]
- 2011/08/13 : ぼくぴ 新規作成

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS