4

ローカルでは、私のアプリは正常に実行され、ログに書き込まれます。

私の本番サーバーは、Passengerを実行しているApacheサーバーでCentOSを実行しています。デバッグしようとすると、ログファイルが書き込まれていないことに気付きました。私が最初にしたことはchmod0666でしたが、それが機能しないことがわかったとき、apacheログを調べました。私はこれを見つけました:Railsエラー:ログファイルにアクセスできません。/var/www/vhosts/mysite.com/rails/exp/releases/20091124020342/log/production.logが存在し、chmod 0666であることを確認してください。ログレベルがWARNに引き上げられ、出力が問題が発生するまでSTDERRに送信されます。固定されています。

(注:私はcapistranoで展開しています)

とにかく、グーグルで検索して、SELinuxの問題だと言う人を見つけたので、乗客のドキュメントを調べて、これを見つけました:http ://www.modrails.com/documentation/Users%20guide.html#_my_rails_application_8217_s_log_file_is_not_being_written_to

これは基本的にこれを行うと言っています:chcon -R -h -t httpd_sys_content_t / path / to / your / rails / app

ただし、適切なパスを入力すると、次のようになります。操作はサポートされていません。

かなり困惑しています...何かアイデアはありますか?

4

2 に答える 2

4

ログ ファイルの "ls -l" の結果は何ですか? Ubuntu では、ログ ファイルの ACL が正しいことを確認する必要があります。私は通常、それを使用して解決します

sudo chown -R deploy:deploy /path/to/app

Deploy は、passenger が実行されるユーザーです。

于 2009-11-25T13:52:44.253 に答える
3

ubuntu 10.x サーバーで同じ問題に遭遇しました。トラブルシューティング中に私が学んだことは次のとおりです。

  • 前述およびドキュメントで説明したように、Passenger は config/environment.rb ファイルの所有者として rails ruby​​ プロセスを実行します。何か特別なことをしていない限り、これは通常、Rails アプリケーション ディレクトリ全体の所有者と同じです。capistrano デプロイメントの場合、これは capistrano ユーザーです。
  • environment.rb が root によって所有されている場合 (おそらく root としてデプロイしているため)、passenger は rails プロセスを「nobody」として実行します。

top コマンド (または任意の数の他の手法) を使用して、プロセスが実行されているユーザーを確認できます。

どちらの場合でも、たまたま後者でした-レールプロセスがログファイルに書き込めない場合、ログには何も表示されません(当然)。Rails は、このパーミッション拒否エラーを無視し、通常どおりリクエストを処理しようとします。

解決策は、Rails Ruby プロセスが、Rails デプロイメント、config/environment.rb ファイル、およびログ ディレクトリとファイルを所有する同じユーザーとして実行されていることを確認することです。

これは、問題のファイルとディレクトリを chown するための展開構成ステップ、または apache を構成し、特定のユーザー (たとえば、nobody ではなく root) として ruby​​ プロセスを実行するように指示することができます。root として実行することは明らかにお勧めできませんが、何らかの理由で root として実行していて、Rails ログが正しく書き込まれていることを確認する必要がある場合は、以下を追加することで実行できます。

# in /etc/apache2/apache2.conf
PassengerDefaultUser root 

root としてデプロイしていない場合 (私が持っている別のサーバーの場合)、典型的なシナリオは、rails アプリ ディレクトリが非 root ユーザーによって所有され、乗客が同じユーザーとして rails プロセスを実行する必要があるということです。 . そして、すべてがうまくいくはずです。

[1] http://www.modrails.com/documentation/Users%20guide%20Apache.html#_the_rails_application_reports_that_it_8217_s_unable_to_start_because_of_a_permission_error

于 2012-04-01T23:29:54.240 に答える