2

私は Rails3、Phusion パッセンジャー 3、Apache を持っています。hello world を印刷するための 1 つのコントローラーと 1 つのビューを備えたかなり単純なアプリがあります。仮想ホスト「RailsEnv development」からこの行を削除すると、「500 Internal Server Error」のように http 500 エラーが発生します。そして、「RailsEnv development」という行を戻すと、アプリは正常に動作します。プロダクションが動作するように設定する必要があるパッセンジャーについて何かありますか?

新しいパッセンジャーのインストールが本番モードで機能するかどうかをテストする必要があるだけです。

以下は、関連する構成です。[usertest@test-server web_app1]$ ruby​​ -v ruby​​ 1.9.3p327 (2012-11-10 リビジョン 37606)

[usertest@test-server web_app1]$ which ruby
/usr/local/bin/ruby

[usertest@test-server web_app1]$ cat /etc/apache/conf.d/passenger.conf 
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-   3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
PassengerRuby /usr/local/bin/ruby

<VirtualHost *:80>
  ServerName siteexample.com 
 DocumentRoot  /var/www/mysites/apps/web_app1/public   
 RailsEnv development
<Directory /var/www/mysites/apps/web_app1/public>    
     AllowOverride all        
     Allow from all
     Options -MultiViews   
     Options FollowSymLinks
</Directory>
</VirtualHost>
4

2 に答える 2

6

Phusion Passenger を使用して本番サーバーにデプロイするには、RailsEnv productionディレクティブをそのまま使用する必要があります。

ただし、関連する Rails 環境が正しく構成されていることも確認する必要があります。これらのファイルは に保存されapps/config/environments/、新しい Rails プロジェクトには 3 つdevelopment(デフォルト)、test、およびが付属していますproduction。たとえばstaging、このディレクトリにファイルを追加することで、他のユーザーを追加できます。

各ファイルには、環境に適した多数の設定があります。開発中は、適切な詳細ログ、プレーンテキストの CSS および JS ファイル、およびブラウザーに表示されるエラーが必要です。運用環境では、簡潔なロギング、コンパイルされたアセット、ユーザー フレンドリーなエラー ページなど、すべてを可能な限り高速にする必要があります。

あなたの場合、Rails で使用されるアセット (特にすべての CSS および JS ファイル) は、Rails の「アセット パイプライン」によってまだ処理されていません。アセットをプリコンパイルするための rake タスク ( rake assets:precompile) があります。これは、既定のproduction環境で想定されているものです。デフォルトの開発環境は、CoffeeScript と SASS ファイルをそれぞれオンザフライで JS と CSS にコンパイルし、それ以外の場合は最小限の処理を行います。

そのため、本番環境へのデプロイの一環として、アセットを追加または変更するたびに、この rake タスクを実行する必要があります。デプロイするたびに、これと他の多くの同様の詳細が必要になるため、ほとんどの Rails アプリがデプロイに使用する Capistrano という優れた gem があります。確かに、それはまったく別の獣ですが、プロセスが進むにつれて、間違いなく検討したくなるでしょう. 最小限に構成された capistrano スクリプトでさえ、アセットをプリコンパイルし、完了したらサーバーを再起動することを知っています。

于 2012-11-21T19:40:05.027 に答える
0

設定してみるRailsEnv production

Apache を再起動してから Passenger を再起動します。touch /var/www/mysistes/apps/web_app1/tmp/restart.txt

于 2012-11-21T18:28:26.037 に答える