読者です 読者をやめる 読者になる 読者になる

Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

RailsをローカルでProductionモードで起動させる方法

Rails初級

ローカル環境でRailsをproductionモードで起動させようとするといろいろと詰まるので起動方法をまとめました。

確認環境

  • Rails 4.1
  • Rails 4.2

productionモードで起動させる方法

まず、production環境のDBを作成します。

bin/rake db:migrate RAILS_ENV=production


productionモードでは静的ファイルはNginxやApacheなどのWebサーバーが配信するのが適切なのですが、今回は、Webサーバーを立てるのがめんどくさいので、Rails側で静的ファイルを配信しなければなりません。
そのため、以下の設定をtrueにします。
NginxやApacheなどのWebサーバー経由でアクセスする場合は、下記は必要ありません。

# config/environments/production.rb

# Rails 4.1の場合
# Disable Rails's static asset server (Apache or nginx will already do this).
# config.serve_static_assets = false
config.serve_static_assets = true


# Rails 4.2の場合は、次のようになっています。
# 特に修正する必要はないが、起動時にRAILS_SERVE_STATIC_FILES という環境変数を指定する必要があります。
# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?


そして、静的ファイルをPreCompileしておきます。

rake assets:precompile RAILS_ENV=production


productionモードでは、secret_key_baseが必要なので作成し、一時的に設定します。
そして、サーバーをproductionモードで起動します。
本番のときは、SECRET_KEY_BASEは環境変数に設定し、起動するたびに変更しないようにしてください。

// Rails 4.1 の場合
SECRET_KEY_BASE=$(rake secret) rails s -eproduction

// Rails 4.2 の場合
SECRET_KEY_BASE=$(rake secret) RAILS_SERVE_STATIC_FILES=true rails s -eproduction


最後に、実際に画面にアクセスし、スタイルシートやJSファイルが読み込まれているか確認してください。
うまく読み込まれていない場合は、ブラウザのログにスタイルシートやJSが見つからないといったような、
次のようにエラーが出ているはずです。
f:id:nipe880324:20141108153747p:plain:w480

以上です。