194

Railsアプリケーションを本番モードで実行するように変更するにはどうすればよいですか?それを行うための設定ファイル、たとえばenvironment.rbはありますか?

4

15 に答える 15

352

これは今

rails server -e production

または、よりコンパクト

rails s -e production

Rails3+プロジェクトで機能します。

于 2010-10-08T21:36:42.987 に答える
75

ApacheとPhusionPassengerを使用してRails4アプリを本番モードで(ステップバイステップで)セットアップして実行する方法:

通常、Railsプロジェクトに参加して、 http://something.com:rails s 3000でアプリの開発バージョンを入手できます。本番モードは設定が少し難しいです。

私はしばらくこれをいじっていたので、初心者(私など)のためにこれを書くと思いました。インターネット全体に広がっているいくつかの小さな調整があり、これはもっと簡単かもしれないと考えました。

  1. サーバーのコアセットアップについては、このガイドを参照してください(CentOS 6、ただしほぼすべてのLinuxフレーバーに適用されるはずです):https ://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-with-apache-and-passenger-on-centos-6

  2. Passengerを設定した後/etc/httpd/conf/httpd.conf、ディレクトリ構造を反映するようにファイルを編集したことを絶対に確認してください。DocumentRootをRailsプロジェクト/publicフォルダーにポイントする必要がありhttpd.confます。この種のディレクトリを持つファイルの任意の場所:/var/www/html/your_application/public更新する必要があります。そうしないと、すべてが非常にイライラします。私はこれを十分に強調することはできません。

  3. サーバーを再起動します(または少なくともApacheを再起動します- service httpd restart

  4. Railsプロジェクトフォルダーに入り/var/www/html/your_application、で移行を開始しrake db:migrateます。後でテーブルを追加する予定がある場合でも、データベーステーブルが存在することを確認してください(これも手順1の一部です)。

  5. RAILS_ENV=production rake secret-これにより、に追加できるsecret_keyが作成されますconfig/secrets.yml。これをコピーしてconfig/secrets.ymlに貼り付けて実行することができますが、これは行わないことをお勧めします個人的には、この手順を実行して他のすべてが機能していることを確認してから、元に戻して後で調達します。

  6. RAILS_ENV=production rake db:migrate

  7. RAILS_ENV=production rake assets:precompile静的アセットを提供している場合。これにより、js、css、画像ファイルが/publicフォルダーにプッシュされます。

  8. RAILS_ENV=production rails s

http://something.com/whateverこの時点で、アプリはの代わりにで利用できるはずです:3000。そうでない場合は、次passenger-memory-statsのようなエントリがあるかどうかを確認します908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname

私は恐らく凶悪な何かを逃したかもしれませんが、これは過去に私のために働いてきました。

于 2014-12-11T23:47:55.050 に答える
62

Passengerで実行している場合、デフォルトでは、apacheconfで本番環境で実行されます。

<VirtualHost *:80>
  ServerName application_name.rails.local
  DocumentRoot "/Users/rails/application_name/public"
  RailsEnv production ## This is the default
</VirtualHost>

mongrelまたはwebrickでローカルサーバーを実行しているだけの場合は、次のことができます。

./script/server -e production

またはbashで:

RAILS_ENV=production ./script/server

enviornment.rbのRAILS_ENV定数を実際にオーバーライドすることは、おそらく設定されたままになることはないので、おそらく最後の手段になるはずです(私がそれについて与えた別の回答を参照してください)

于 2009-12-23T02:25:50.263 に答える
54

mipadiの提案が機能しない場合は、これをconfig/environment.rbに追加してください

# force Rails into production mode when                          
# you don't control web/app server and can't set it the proper way                  
ENV['RAILS_ENV'] ||= 'production'
于 2009-12-22T21:25:01.950 に答える
19

環境変数RAILS_ENVをに変更しますproduction

于 2009-12-22T21:22:57.130 に答える
19
$> export RAILS_ENV=production
于 2013-04-10T11:16:37.253 に答える
18

スクリプト/サーバーに環境を渡すこともできます。

$ script/server -e production
于 2009-12-22T22:35:41.210 に答える
12
rails s -e production

RAILS_ENVこれにより、 =でサーバーが実行されます'production'

これとは別に、アセットパスをで設定する必要がありますproduction.rb

config.serve_static_assets = true

これがないと、アセットは読み込まれません。

于 2015-07-29T14:38:18.213 に答える
8
RAILS_ENV=production rails s

また

rails s -e production

デフォルトの環境は開発です。

于 2017-01-11T07:08:08.213 に答える
5

他の人が投稿したように:rails server -e production

または、私の個人的なお気に入り: RAILS_ENV=production rails s

于 2015-10-08T17:15:46.610 に答える
2

Rails3

Rails.env = ActiveSupport::StringInquirer.new('production')application.rbに追加すると、rails sと同じように機能しますrails server -e production

module BlacklistAdmin
  class Application < Rails::Application

    config.encoding = "utf-8"
    Rails.env = ActiveSupport::StringInquirer.new('production')

    config.filter_parameters += [:password]
  end
end
于 2011-07-05T13:39:18.233 に答える
2

「railsserver-eproduction」によって本番環境でRailsサーバーを実行するのは良い方法ではありません。これは、Railsがシングルスレッドアプリケーションとして実行され、一度に1つのHTTPリクエストにしか応答できないためです。

Railsの本番環境に関する最高の記事は、本番環境-Rails3です。

于 2012-10-22T17:31:54.723 に答える
1

デフォルトサーバーの場合:rails s -e product

コスタムサーバーポートの場合:rails s -p [port] -e product、例:rails s -p3002-e生産

于 2014-08-13T04:50:18.463 に答える
1

デフォルトでは、サーバーは開発環境で実行されます。$ rails s

実稼働環境で実行している場合:$ rails s -e productionまたは$ RAILS_ENV=production rails s

于 2018-04-30T11:12:12.600 に答える
0

以下のenvironment.rbファイルが完了していることを確認してください。

ENV ['RAILS_ENV']||='プロダクション'

アプリケーションが共有ホスティング環境またはphushionpassengerで実行されている場合は、.httaccess(パブリックフォルダー内)を変更し、モードを本番環境に設定する必要がある場合があります。

于 2014-07-29T08:16:44.923 に答える