
1:手動でのデプロイまでの流れ
①git commitとpush
VSCodeで「database.yml」の本番環境の設定を編集する。本番環境のデータベースに関する設定はproduction:以降で変更できます。
本番環境のmysqlの設定に合わせるため、database.ymlを以下のように編集する。
config/database.yml
production:
<<: *default
adapter: mysql2
database: (アプリ名)_production
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
※databaseは、例:アプリ名がaaaa_123456の場合、aaaa_123456_productionのようになります。
次に、編集を「commit→push」しましょう。
リモートリポジトリが更新されたため、サーバ上のアプリケーションにも反映させる。
②GitHubの内容をEC2に反映させる。
1:sshへ接続する。
cd .ssh/ →ssh -i キーペア名.pem ec2-user@Elastic IPアドレス
→EC2へのログインパス
ターミナル(EC2内で実行)
[ec2-user@ip-172-31-23-189 ~]$ cd /var/www/[リポジトリ]
→EC2環境内のアプリへ移動する。
[ec2-user@ip-172-31-23-189 <リポジトリ名>] git pull origin main
2:EC2内でデータベースを作成するのですが、「RAILS_ENV=production」というオプションがつきます。
「RAILS_ENV=production」とは、本番環境でコマンド実行する時につくオプションです。
実行しようとしているコマンドは、「RAILSのENV(環境)がproduction(本番環境)」という意味です。
ターミナル(EC2内で実行)
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ rails db:create RAILS_ENV=production
Created database '<データベース名>'
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ 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の起動を試してみる。
③Railsを起動
ターミナル(EC2内で実行)
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
④アセットコンパイル( rails assets:precompile RAILS_ENV=production)
⑤Unicorn再起動
→①ターミナル(EC2内で実行):[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ ps aux | grep unicornを実行し、現在動いているプロセスを確認する。

大事なのは左から2番目の列です。ここに表示されるのがプロセスのidになります。
「unicorn_rails master」と表示されているプロセスがUnicornのプロセス本体です。この時のプロセスidは「17877」となっています。
②ターミナル(EC2内で実行)
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ kill <確認したunicorn rails mainのプロセスid>
③ターミナル(EC2内で実行):実行したプロセスを再度表示させ、終了できていることを確認する。
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ ps aux | grep unicorn
⇩ 下記のようになっていれば、終了できている。
ec2-user 17918 0.0 0.2 110532 2180 pts/0 S+ 02:05 0:00 grep --color=auto unicorn
④ターミナル(EC2内で実行)
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
※「RAILS_SERVE_STATIC_FILES=1」は、Railsがコンパイルされたアセットを見つけられるように指定する役割がある。
⑤Railsを起動できているかブラウザで確認する。
→方法:ブラウザでhttp://ご自身のElastic IPを入力:3000/にアクセスして、サイトが正常に表示されているか確認する。
この一連の流れをすれば、デプロイが完了されます。
「エラーでうまく表示されていない時のチェックリスト」
・ローカル→GiuHubへのpushのし忘れはないか(mergeまで確認)
・GitHubからEC2への反映(git pull origin master)のし忘れはないか
・EC2サーバー側でエラーログの内容を確認し、原因を見つけたか
・カリキュラム通りの記載ができているか
・データベースは正しく起動しているか
・EC2サーバー側の環境変数は正しく設定できているか
・EC2インスタンスの再起動を行ってみる