Rails4.2+passenger+apacheの環境でプロジェクトを作り本番(production)にデプロイ、アクセスしたらエラーになってしまった備忘録。
環境
CentOS 6.2、Apache2.2、PushionPassenger5.0、Rails4.2
apache起動時にエラーが発生
apacheのエラーログにこんなメッセージが。
App 3303 stderr: [ 2016-02-28 09:35:17.3257 3416/0x007f33ccd16328(Worker 1) utils.rb:68 ]: *** Exception RuntimeError in Rack application object (Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`) (process 3416, thread 0x007f33ccd16328(Worker 1)):
何やら「production環境向けの"secret_token"と"secret_key_base"が無い、"config/secrets.yml"を見ろ」と言われている。
…何それ?
secrets.yml
developmentは問題無かったよな〜、と思いながらconfig/secrets.ymlを覗いてみます。
#config/secrets.yml development: secret_key_base: xxxxxxxxxx....... test: secret_key_base: yyyyyyyyyy........ # Do not keep production secrets in the repository, # instead read values from the environment. production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
secrets.ymlはRails4.1からrails newで自動生成されるファイル。
アプリケーションのシークレット値のほか、APIキーを管理するときなどに使う(らしい)。
Ruby on Rails 4.1 Release Notes — Ruby on Rails Guides
それで、developmentとtest向けにはrails newした時に勝手に値が入っているが、produciton向けには"SECRET_KEY_BASE"という環境変数の値を設定するようになっている。
つまり、productionでrailsアプリを動かすためには、この環境変数を設定してその値をpassengerへ渡す必要があるようです。
Rails 4.1 の secret.yml とは… - ARCHIVESDRIVE HD
ちなみにRails4.0以前では、config/initializers/secret_token.rbの中で、secretの値を設定していたようです。
#config/initializers/secret_token.rb AppName::Application.config.secret_token = 'xxxxxxxxxx........'
producitonでの対応
ということで、secrets.ymlの中身に従いproduction向けのsecret_key_baseを生成します。
secret_key_baseを生成するためのrakeが用意されているようです。
bundle exec rake secret xxxxxxxxxx......... #これを環境変数に設定 export SECRET_KEY_BASE=xxxxxxxxxxx........
Rails が production 環境で真っ白、SECRET_KEY_BASE 設定忘れが原因でした | EasyRamble
環境変数に設定するのではなく、httpd.confでsetEnvする方法もあるようです。
Passenger + ApacheでのRails4のSECRET_KEY_BASEの設定方法 - QA@IT
Ruby on Rails 4 アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/11
- メディア: 大型本
- この商品を含むブログ (6件) を見る
サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)
- 作者: 鶴長鎮一
- 出版社/メーカー: 技術評論社
- 発売日: 2012/03/23
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 109回
- この商品を含むブログ (14件) を見る