新人Railsエンジニアの備忘録

忘れやすい性格なので、ハマったところとか、日々学んだことをメモとして残します。他の方が参照したときに少しでも役立てれば、うれしいです。

【Rails4】実行モードを本番(production)に変更の手順

f:id:fairemygeneration:20181210142227j:plain:w300

・Railsプロジェクト作成
実行環境の指定は不要でrails newで作成する。
$ rails new <プロジェクト名>

・本番用DB作成
$ sudo rake db:create RAILS_ENV=production

・秘密鍵生成
$ rake secret <長い秘密鍵の文字列が表示される>

・環境変数設定
$ vi ~/.bash_profile

SECRET_KEY_BASE='xxx' #これを追記
RAILS_ENV='production'
RAILS_DATABASE_PASSWORD='<MySQLパスワード>'
export PATH SECRET_KEY_BASE RAILS_ENV RAILS_DATABASE_PASSWORD #これを追記

上記の設定でexport -p で変数が設定されていることも確認できたが秘密鍵のエラーが発生したので、下記の代替案で設定しました。

【代替案】
秘密鍵の設定は環境変数に設定するのではなく、httpd.confに設定する方法もある
https://qa.atmarkit.co.jp/q/3704

$ vi /etc/httpd/conf/httpd.conf

SetEnv SECRET_KEY_BASE <長い秘密鍵の文字列> #これを追記
Allow from all
Options -MultiViews

・実行環境を確認
$ rails console

irb(main):001:0> Rails.env
 => "production"
irb(main):002:0> Rails.env.development?
=> false
irb(main):003:0> Rails.env.production?
  => true
>  irb(main):004:0> Rails.env.test?
>  => false

$ vi /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
RailsEnv production #これを追記

$ vi config/database.yml

database: Myapp_production

username: <ユーザ名> #これを追記
password: <パスワード> #これを追記
host: localhost #これを追記

・本番環境用のログファイル作成
$ touch log/production.log

・秘密鍵情報を追記
$ vi config/secrets.yml

production:
secret_key_base: △<長い長い秘密鍵の情報が表示> #これを追記

※ 必ず半角スペース(△)を入れること、入れないとブラウザからアクセスした際にエラーになる。

・アプリに設定変更を反映
$ passenger-config restart-app

※環境情報
OS:Centos6.9
フレームワーク : Rails 4.2.9
Web:apache 2.2
DB : MySQL 5.6
ruby:2.3.7