* 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 : ぼくぴ 新規作成