web-dev-qa-db-ja.com

Ruby on Rails + Passenger + Apache toWorkを取得できません

これがばかげた質問である場合は申し訳ありませんが、Ruby on RailsをApacheサーバーで動作させることができません。Phusionを使用していますアプリデプロイメント用の乗客(mod_Rails、mod_rack)。これが私のWebサイトのApache構成ファイルにあるRoR固有の構成コードです。

Alias /Rails /var/www/syyborg.com/Ruby/blog/public
<Directory /var/www/syyborg.com/Ruby/blog/public>
     Options FollowSymLinks
     AllowOverride None
     Order Allow,Deny
     Allow from All
</Directory>
RailsBaseURI /Rails

繰り返しますが、私はこの種のことについてほとんど知識がありません。私はこれまでサーバーを最初からセットアップしたことがありません。とにかく、私のRailsアプリは、ご覧のとおり、/var/www/syyborg.com/Ruby/blog/にあります。http://[my domain, syyborg.com]/Railsからアクセスしようとしています。しかし、ロードしようとするとサイトで「403Forbidden」エラーが発生しました。助けていただければ幸いです。必要に応じて詳細をお知らせします。よろしくお願いします。

1
Luke Crowe

Mod_Railsがインストールされていないようです。あなたがこれを持っていると仮定して:

gem install passenger

そして

passenger-install-Apache2-module

次のように、自分で乗客を開始できるかどうかを確認してください。

cd /path/to/your/webapp
passenger start
1
Rilindo

Mod_Railsが適切にインストールおよびロードされている場合、Apacheで必要する唯一の構成は、ドキュメントルートをパブリックフォルダーにポイントすることです。 mod_Railsは、残りがどこから来ているのかを理解するのに十分賢いです。 Apacheの場合:<Directory>ステートメントは、認識されたパスではなく、物理ファイルの場所を参照します。これはまたあなたのRailsアプリのパブリックフォルダーになります。

つまり.

<Directory /var/www/syyborg.com/Ruby/blog/public>
     Options FollowSymLinks
     AllowOverride None
     Order Allow,Deny
     Allow from All
</Directory>

railsBaseURIは、使用しようとしているパスである必要があります。

つまり.

RailsBaseURI "/Rails"

エイリアスステートメントは問題ないようです。

1
TheCompWiz

Passengerは、ファイルシステムの魔法を使用して、実際のRailsアプリを見つけます。そのすべてのアクションは、仮想ホストのDocumentRootに基づいています。

基本的に、乗客は2つの構成設定を設定する必要があります。

  1. どのURLパスをRails appにする必要があるかを知る必要があります。これは、RailsBaseURIApache設定の値。
  2. Railsアプリケーションがファイルシステムのどこにあるかを知る必要があります。ここではかなり特殊なアプローチを使用しています。つまり、Railsのパブリックディレクトリを指すシンボリックリンクです。 = app(Rails_ROOTではありません)。このシンボリックリンクは、DOCUMENT_ROOTディレクトリ内にある必要があります。

したがって、DocumentRoot/srv/wwwであると仮定すると、次のシンボリックリンクを作成する必要があります。

ln -s /var/www/syyborg.com/Ruby/blog/public /srv/www/Rails

RailsアプリをDOCUMENT_ROOT内に配置しないことをお勧めします。また、Passengerは現在VirtualDocumentRootモジュールをサポートしていません。

詳細については、 乗客用ドキュメント のそれぞれのセクションを参照してください。

0
Holger Just