【ruby on rails AWSデプロイ】AWSでのデプロイ〜railsの設定とUnicorn・nginxの起動
こんにちは!
今回は設定したファイルを動かし作成したrailsを手動でデプロイする備忘録です。
・AWSの無料枠
・EC2の解放(AWSの登録は省略します)
・Linuxサーバの設定
・webサーバNginx設定
→今回はrails起動編
------------
・【自動デプロイ】capistrano設定
・IAMユーザの登録
・S3(ストレージ)の設定
・railsの起動
railsアプリケーションのcloneはしている前提です。
■環境変数の設定
ローカルの環境変数の場合:.bash_profile または .bashrc に記述
production環境の環境変数の場合:/etc/environment に記述
※現在設定されている環境変数を見る
$printenv
上記はプロジェクト全体に適応される環境変数です。
railsで使用する環境変数は、secret.ymlあるいはcrediential.yml(rails5.2以降)で設定できます。
環境変数の設定はコチラ(次記事)に記載しています。
■secret_key_baseの環境変数設定
production環境で動かすためにrailsアプリを動かすためにsecret_key_baseを生成します。
・production環境
(EC2のリポジトリ上)$ rake secret
作成された文字列をコピー・以下の手順でEC2上の/etc/environmentに環境変数として記載します。(ついでに作成したDBのパスワードも追記)
(EC2上)$vi /etc/environment //下記の環境変数をファイルに追記
SECRET_KEY_BASE='作成された文字列'
DATABASE_PASSWORD='作成したパスワード'
(EC2上)$exit //※環境変数適用のため
(EC2上)$env | grep xxxxxx //※環境変数適用の確認
※EC2上の環境変数に.bash_profileを使用しないのは自動デプロイ設定(capistrano)するからです。capistranoは.bash_profileを参照しません
(2020.3追記)
■MySQLパスワードの追記
Mysqlのrootユーザにもパスワードを設定しておき、環境変数(ローカルの.bash_profile)に追記しておきます。
・ローカルの設定
→credential.ymlに追記しています。コチラ(次記事)
■assetsプリコンパイル
アセットプリコンパイルされていない状態だと、本番環境でレイアウト崩れが起こるため下記を実行します(本番環境では自動でコンパイルはされないので、設定が必要なようです。)
(EC2上)$ rake assets:precompile RAILS_ENV=production
用語の備忘録
・アセットプリコンパイル:開発がしやすいようにファイルを分割し、最終的に一つのファイルに連結・圧縮する(つまり複数に分割しているJSやCSSなどを統合して読み込むようにさせる)
参考:アセットパイプライン
■Unicornの起動(自動デプロイ設定前)
$RAILS_SERVE_STSTIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
■Nginxの起動
$sudo service nginx start
■mySQLの起動
$sudo service mysqld start
参考にさせていただきました
よく使うコマンド集https://qiita.com/15grmr/items/7ad36caa82a0fa27c4bd
以上です。
railsのcredential.ymlの設定が残っていますが、可能な場合は.bash_profileに記載しrailsを動かせるかと思います。(後で削除)
コマンド集・エラー集も覚えているうちにまとめようと思います。
まだまだ勉強中のため、抜けている箇所があるかもしれません。拙い記載ご了承ください🙇♀️