記事概要
AWSサーバーを本番環境として利用している場合のデプロイ方法を説明する。
言語やフレームワーク
使用技術 | |
---|---|
フロントエンド | HTML |
バックエンド | Ruby 3.2.0 Ruby on Rails 7.0.8.6 |
データベース | MySQL(mariadb) |
インフラ | AWS |
API | - |
その他 | Capistrano(Gem) Unicorn(Gem) |
前提
- 1度AWSサーバーにデプロイ済みである
- GemのCapistranoを適用している
- GemのUnicornを適用している
- GitHubのリポジトリを連携している
パターン別のデプロイ手順
状況 | 参照手順 |
---|---|
ローカルでVSCodeを修正 | ①③ |
ローカルでデータベース関連の内容を修正 | ①②③ |
本番環境でサーバーを再起動 | ③ |
Nginxを修正 | ④ |
手順①
- 変更点をリモートリポジトリにcommit→pushの実行
- mergeの実行
- ローカルリポジトリにpullの実行
手順②(DB再起動)
- EC2にログインするため、ターミナルにて下記を実行
% ssh -i ~/.ssh/my-key-pair.pem ec2-user@<EC2インスタンスに紐付けたElastic IP>
- 本番環境のDBを再起動するため、EC2ユーザーでターミナルにて下記を実行
% RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rails db:drop % rails db:create RAILS_ENV=production % rails db:migrate RAILS_ENV=production
- シード値の適用が必要な場合、下記記事を参照
https://qiita.com/likapantrip/items/a49c004bccbc1fd5f6fe
手順③(デプロイの実行)
- EC2にログインするため、ターミナルにて下記を実行
% ssh -i ~/.ssh/my-key-pair.pem ec2-user@<EC2インスタンスに紐付けたElastic IP>
- Unicornのプロセスを停止するため、EC2ユーザーでターミナルにて下記を実行
# 実行中のプロセスを確認 % ps aux | grep unicorn # プロセスを停止 % kill <確認したunicorn rails masterのプロセスid> # Unicornのプロセスが停止していることを確認 % ps aux | grep unicorn #=> ec2-user 758 0.0 0.0 119436 920 pts/0 S+ 10:07 0:00 grep --color=auto unicorn # 「ps aux | grep unicorn」コマンドのプロセスが存在するため、上記のような結果が1行返ってくる
- ログアウトするため、EC2ユーザーでターミナルにて下記を実行
% exit
- デプロイするため、ターミナルにて下記を実行
# アプリのディレクトリにいることを確認 % pwd /~/[アプリ名] % bundle exec cap production deploy
手順④(Nginxを適用)
- EC2にログインするため、ターミナルにて下記を実行
% ssh -i ~/.ssh/my-key-pair.pem ec2-user@<EC2インスタンスに紐付けたElastic IP>
- Nginxを再起動するため、EC2ユーザーでターミナルにて下記を実行
% sudo systemctl restart nginx