回答:
ApacheとPhusion Passengerを使用してRails 4アプリをプロダクションモードで(段階的に)セットアップして実行する方法:
通常、Railsプロジェクトにrails s
アクセスして、http://something.com: 3000でアプリの開発バージョンを取得できます。プロダクションモードは、設定が少し難しいです。
私はしばらくこれをいじり続けてきたので、初心者(自分のような)のためにこれを書くと思いました。インターネット全体に広がっているいくつかの小さな調整があり、これはより簡単かもしれないと考えました。
サーバーのコアセットアップについてはこのガイドを参照してください(CentOS 6ですが、ほぼすべてのLinuxフレーバーに適用されるはずです):https : //www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-with-apache-and-passenger-on-centos-6
Passengerのセットアップ後、/etc/httpd/conf/httpd.conf
ファイルを編集してディレクトリ構造を反映したことを確認してください。DocumentRootがRailsプロジェクトの/ publicフォルダーを指すようにしたい場合httpd.conf
は、この種のdirを含むファイル内のどこでも/var/www/html/your_application/public
更新する必要があります。そうしないと、すべてが非常にイライラします。私はこれを十分に強調できません。
(非常に少なくとも、またはApache -サーバーを再起動しますservice httpd restart
)
Railsプロジェクトフォルダー/var/www/html/your_application
を入力し、から移行を開始しrake db:migrate
ます。後でテーブルを追加する場合でも、データベーステーブルが存在することを確認してください(これも手順1の一部です)。
RAILS_ENV=production rake secret
-これにより、追加可能なsecret_keyが作成されconfig/secrets.yml
ます。これを実行するために、これをconfig / secrets.ymlにコピーして貼り付けることができますが、これはしないことをお勧めします。個人的には、他のすべてが機能していることを確認するためにこの手順を実行し、それを元に戻して後で調達します。
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake assets:precompile
静的アセットを提供している場合。これにより、js、css、画像ファイルが/public
フォルダーにプッシュされます。
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
私は恐ろしい何かを逃したかもしれませんが、これは過去に私のために働いていました。
これは今でしょう
rails server -e production
または、よりコンパクト
rails s -e production
Rails 3+プロジェクトで動作します。
rails s -e production
server -e production
それらを実行するには?
production
は常にデフォルトです。
echo "export RAILS_ENV=production" >> ~/.bash_profile
Passengerで実行している場合、デフォルトではapache confで本番環境で実行されます。
<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定数をオーバーライドすることは、おそらく設定を維持しないため、おそらく最後の手段になるはずです(これについて別の回答を参照してください)。
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'
ENV['RAILS_ENV'] ||= 'production'
あまりにもそれらに適用されますか?
環境変数RAILS_ENV
をに変更しますproduction
。
~/.bashrc
か、~/.bash_profile
あるいは単にexport RAILS_ENV=production"
でRailsの3
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
Railsサーバーを「rails server -e production」で運用環境で実行するのは良い方法ではありません。これは、railsがシングルスレッドアプリケーションとして実行され、一度に1つのHTTPリクエストにしか応答できないためです。
Railsの本番環境に関する最良の記事は、本番環境-Rails 3です。
デフォルトのサーバーの場合:rails s -e production
Costumサーバーポートの場合:rails s -p [port] -e production、たとえば レールs -p 3002 -e生産