開発環境で作成したAPPをAWSのEC2でデプロイした後、変更や修正点があった際、引き続き本番環境にアップする手順(コマンド)をまとめた。
①user_name@computer_name ~ % cd .ssh/
②user_name@computer_name ~ .ssh % ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスに紐付けたElastic IP
③[ec2-user@作成したEC2インスタンスに紐付けたElastic IP ~]$ cd /var/www/[リポジトリ]
④[ec2-user@作成したEC2インスタンスに紐付けたElastic IP リポジトリ名]$git pull origin master
※GitHubの内容をEC2に反映させる
⑤[ec2-user@作成したEC2インスタンスに紐付けたElastic IP リポジトリ名]$rails db:create RAILS_ENV=productionCreated database ‘APP名_production’
※「RAILS_ENV=production」とは、本番環境でコマンド実行する時につくオプション
※「RAILSのENV(環境)がproduction(本番環境)ですよ」という意味。
⑥[ec2-user@作成したEC2インスタンスに紐付けたElastic IP リポジトリ名]$rails db:migrate RAILS_ENV=production
!!!ここで「Mysql2::Error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'」というエラーが起こった場合、データベースが起動していない可能性があり
→「sudo systemctl start mariadb」というコマンドをターミナルから打ち込み、mysqlの起動を試す。
⑦[ec2-user@作成したEC2インスタンスに紐付けたElastic IP リポジトリ名]$rails assets:precompile RAILS_ENV=production
※「アセットファイル」とは、画像・CSS・JavaScript等を管理しているファイル。
※アセットファイルを圧縮し、そのデータを転送する処理を「コンパイル」と言う。
※アセットファイルを行わないと、本番環境でCSSが反映されずにビューが崩れしまったり、エラーでブラウザが表示されない、などの問題が生じる。
⑧[ec2-user@作成したEC2インスタンスに紐付けたElastic IP リポジトリ名]$bundle exec unicorn_rails -c config/unicorn.rb -E production -D
※Railsを起動
⑨[ec2-user@作成したEC2インスタンスに紐付けたElastic IP リポジトリ名]$ps aux | grep unicorn
※本番環境のRails再起動の為、「psコマンド」で、現在動いているプロセスを確認
→その後、
[ec2-user@作成したEC2インスタンスに紐付けたElastic IP リポジトリ名]$ kill <確認したunicorn rails masterのプロセスid>
で、強制終了
⑩[ec2-user@作成したEC2インスタンスに紐付けたElastic IP リポジトリ名]$RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
※「RAILS_SERVE_STATIC_FILES=1」というオプションをつけて、Rails再起動
※「RAILS_SERVE_STATIC_FILES=1」で、Railsがコンパイルされたアセットを見つけられるように指定する