Railsでproductionモードで起動するときの作業
やるべきことまとめ
- productionモード用の設定
- productionモード用DBのセットアップ
- アセットのプリコンパイル
- SECRET_KEY_BASEの設定
- 環境変数を指定してサービス起動
productionモード用の設定
最低限、DB接続先(config/database.yml)と、migrateは必要。
production: <<: *default adapter: mysql2 encoding: utf8 reconnect: false pool: 5 host: <DBのIPアドレス、ホスト名など> #AWSなら、内部ネットワークのIPアドレスで指定するとレスポンス面もトラフィック面も効率が良い。 database: <データベース名> username: <%= ENV['RAILS_DATABASE_USER'] %> #環境変数に外出しが良い。 password: <%= ENV['RAILS_DATABASE_PASSWORD'] %> #環境変数に外出しが良い。
productionモード用DBのセットアップ
rake db:migrate RAILS_ENV=production
アセットコンパイル
rake assets:precompile RAILS_ENV=production
SECRET_KEY_BASEの設定
config/secrets.ymlがこうなっていることを、念のため確認する。
developmentモード、testモードはsecrets.ymlに直書きしているが、productionモードはプロジェクトから外出しする前提になっている。
Gitなどソース共有時にproductionモード用の値を共有・公開してしまわないようにという理由らしい。
production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
環境変数を指定してサービス起動
#環境変数にSECRET_KEY_BASE、RAILS_ENVを設定して、サービス開始 #config/puma.rbでデーモン化ONを入れたり外したりすれば、デーモン化なのかコンソールでログをモニタリングしたりを切り替えられる。 export SECRET_KEY_BASE=`rake secret`;export RAILS_ENV=production;pumactl start
環境変数を指定してサービス起動するように自動起動スクリプトに反映する。/etc/init.d/puma
#変更前 sh -c "$PUMA_BIN start" #変更後 sh -c "export SECRET_KEY_BASE=`rake secret`;export RAILS_ENV=production; $PUMA_BIN start"