web-dev-qa-db-ja.com

Rails Phusion Passengerのアプリ(Redmine)

LinuxボックスにApache用のmod_passengerをインストールしました。モジュールは正しくコンパイルされ、Apacheは正しくロードしているようです(こちら側にエラーはありません)。

しかし、Rails app(Redmineプロジェクト管理))を指すように仮想ホストを設定すると、「Ruby on Railsアプリケーションはできませんでした」とうめき声を上げるページが表示されます。具体的には、「エラーメッセージ:そのようなファイルまたはディレクトリはありません-config /environment.rb」。

Redmineのルートフォルダーにconfig/environment.rbがあることがわかります。私の仮想ホスト設定は次のようなものです:

<VirtualHost *:80>
# server DocumentRoot, address, and admin email

RailsBaseURI /redmine
DocumentRoot /srv/www/htdocs

</VirtualHost>

私は/ srv/www/htdocs/redmineにRedmineソースを持っています(それについてうめき声を上げていたので、シンボリックリンクなどはありません)。

何も機能していなかったので、怒り狂って、/ redmineフォルダーのファイル所有権とモードをwwwrun:www(私のApacheユーザーとグループ)と777に再帰的に設定しました。これが問題だと思いますか?

どんなアイデアやアドバイスも大歓迎です。

PS。 PHPでRedmineを書き直すプロジェクトはありますか?笑!

1
Dougal

同じエラーが発生しましたが、これは http://randomthoughtsgr.wordpress.com/2011/10/17/redmine-sub-uri-and-Apache-configuration/ で解決できました。

サブウリでRedmineをセットアップしようとしているときに、Apacheをセットアップしようとすると問題が発生します。乗客は次のエラーを表示します:Redmine Webページにアクセスしようとしているときに、そのようなファイルまたはディレクトリはありません– config/environment.rb

この問題についていくつかの提案を試した後、Redmineを次の構成で動作させることができました。

Passenger.load構成ファイルは次のとおりです(パスはインストールによって異なる可能性があります)。

LoadModule passenger_module /opt/Ruby-enterprise-1.8.7-2011.03/lib/Ruby/gems/1.8/gems/passenger-3.0.9/ext/Apache2/mod_passenger.so
PassengerRoot /opt/Ruby-enterprise-1.8.7-2011.03/lib/Ruby/gems/1.8/gems/passenger-3.0.9
PassengerRuby /opt/Ruby-enterprise-1.8.7-2011.03/bin/Ruby
PassengerDefaultUser www-data

仮想ホスト構成で、以下を追加しました。

PassengerAppRoot /usr/local/lib/redmine-1.2/
RailsBaseURI /redmine
RailsEnv production

PassengerAppRootは、redmineがインストールされているパスを表します。
RailsBasedURIは、Redmineを表すURLのサブディレクトリを表します。 http://www.example.org/redmine

(これが機能するためには、redmine-/ publicのシンボリックリンクがWebルートフォルダー内にあることも不可欠です)。

また、redmine-1.2フォルダーとシンボリックリンクredmineフォルダーの所有権をApacheユーザー/グループに変更しました(必要だと感じています)。

1
Rafael Franco

乗客のサブURI展開の展開モードはかなり具体的です。

あなたはシンボリックリンクを作成する必要があります。これらは、(Rails_ROOTではなく)publicディレクトリを指している必要があります。乗客は、このシンボリックリンクからの情報を使用して、アプリケーションの残りの部分を見つけます。これは、Railsアプリをドキュメントルート内にインストールしないようにするためです(コードと構成が誰にも公開されないようにするために、絶対にインストールしないでください)。

あなたの場合、それは/srv/www/redmineのようなものにRedmineをインストールすることを意味します。次に、シンボリックリンクを作成します

ln -s /srv/www/redmine/public /srv/www/htdocs/redmine

これが適切な場所にあると、Webサーバーユーザーが/srv/www/redmine/public内のすべてのファイルを読み取る権利を持っていると仮定して、仮想ホストをそのまま維持できます。最後のヒントとして、config/environment.rbファイルの所有者を確認してください。その所有者は、redmineが実行されるユーザーになります(rootでない限り)。

詳細については、優れた 乗客用ドキュメント をご覧ください。

0
Holger Just