1

こんにちは私はCapistranoデプロイスクリプトを使用してPassenger/mongo / Rails 3.2(activerecordまたはmysqlなし)を実行しています。

Linuxサーバーでアプリを本番モードで実行しようとしています。

私のapache設定ファイルには、次のものがあります...

<VirtualHost *:80>
 ServerName example.com
 ServerAlias www.example.com
 DocumentRoot /srv/www/example.com/current/public
 ErrorLog /srv/www/example.com/current/log/error.log
 CustomLog /srv/www/example.com/current/log/access.log combined
 PassengerDefaultUser www-data
  <Directory /srv/www/test.example.com/current/public>
     AllowOverride all
     Options -MultiViews
  </Directory>
 RailsEnv production
</VirtualHost>

編集:私のenvironment.rbファイルにはもう次のものがありません...

RAILS_ENV="production"
RAILS_ENV.freeze

私のCapistranodeploy.rbには、次のものがあります...

set :rails_env, "production"

編集:しかし、capistranoを介してデプロイするか、sudoサービスapache2を再起動すると。apacheが再起動すると表示されますが、URLにアクセスしてもサーバーが起動しません。

4

5 に答える 5

1

異常な問題のようです。私は、類似または同一のスタックを持つ多くのアプリケーションを問題なくデプロイしました。

これを試して:

  1. この問題に関連するカスタムコードをenvironment.rbファイルから削除してください。
  2. デプロイファイルからrails_env変数を削除します
  3. Apache仮想ホスト構成内に「RailsEnvproduction」を残してください
  4. サーバーにSSHで接続し、Apacheを手動で再起動します

午前中にチェックしますが、mod_railsの再起動タスクは適切ではないと思います。デプロイ後に、手動でApacheを再起動したと思います。理由はわかりませんが、「current_path」が単なるシンボリックリンクであるか、「PassengerMinInstances」が変更されたコードで新しいパッセンジャースレッドを生成するのを妨げているという事実と関係があると考えてください。すべての憶測。

于 2012-11-20T21:15:50.483 に答える
1

config.ruファイルに付属するRails3.xアプリの場合、構成でRackEnvパラメーターを使用する必要があります。VirtualHost

RackEnv production

RAILS_ENVの内部を強制的に設定するべきではありませんenvironment.rb。それはあらゆる種類の問題を引き起こすに違いありません。

于 2012-11-01T18:48:31.990 に答える
0

私の本番環境(アプリケーション名conflux)では、タグ内にRailsEnv本番環境があります。

<Directory /var/www/conflux/current/public>
  RailsEnv production
  PassengerAppRoot /var/www/conflux/current
  Allow from all

  #Turn off MultiViews, which is incompatable with Passenger.
  Options -MultiViews
</Directory>

私は、environment.rb内にRAILS_ENVを設定しないことに同意します。一つには、RAILS_ENVは定数であり、使用されている場合(およびRails 3より前)、環境に入る前に設定されていると思います。したがって、すでに設定されている可能性があり、定数としては変更されません。

また、RAILS_ENVがRails3で使用されているかどうかもわかりません。

于 2012-11-01T18:55:32.760 に答える
0

アセットをプリコンパイルしてみましたか。プリコンパイルされると、アセットはパブリックフォルダーに配置され、本番モードで正常に実行できるのは自分だけになります。rake assets:precompilejrubyの場合は、これを試してくださいjruby -S rake assets:precompile

サーバーが本番モードの場合、アセットパイプラインとアセットサーバーをproduction.rbで「TRUE」に設定する必要があります

于 2012-11-21T11:02:25.370 に答える
0

これがあなたのディレクトリの権限設定だと思います

<Directory /srv/www/**test.example.com/**current/public>
     AllowOverride all
     Options -MultiViews
</Directory>

その場合、これはドキュメントのルート設定と同じである必要はありませんか?

DocumentRoot /srv/www/**example.com**/current/public

Capistranoやapacheにはあまり詳しくありませんが、これらは同じである必要があるといつも思っていました。

于 2012-11-27T17:56:41.190 に答える