EC2インスタンスへのログイン
すでにEC2のアカウントのディレクトリを作成している状態であるものとします
ターミナル(ローカル)
# ホームディレクトリに移動
% cd ~
# .ssh/ディレクトに移動
% cd .ssh/
# 「作成したEC2インスタンスと紐付けたElastic IP」は以下の画像を参照し、ご自身のものに編集しましょう
% ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP
するとこのような画面になると思います。
###おまけ
# EC2インスタンス内でのコマンド
# デプロイしているディレクトリへの移動
[ec2-user@ip-172-31-23-189 ~]$ cd /var/www/[リポジトリ]
# 環境変数の設定
[ec2-user@ip-172-31-23-189 ~]$ sudo vim /etc/environment
# 設定した環境変数の確認
[ec2-user@ip-172-31-23-189 ~]$ env | grep 設定した環境変数の名前
# リモートリポジトリの更新された内容をサーバ上のアプリケーションにも反映させる
[ec2-user@ip-172-31-23-189 <リポジトリ名>] git pull origin master
# EC2内にデータベースを作成
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ rails db:drop RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ rails db:create RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ rails db:migrate RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1
# アセットフィイルをコンパイルさせる
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ rails assets:precompile RAILS_ENV=production
## 自動デプロイツールCapistranoを導入後に使用するコマンド
ターミナル(ローカル)
# Unicornを再起動
[ec2-user@ip-172-31-23-189 <リポジトリ名>]ps aux | grep unicorn
[ec2-user@ip-172-31-23-189 <リポジトリ名>]kill プロセス番号
# 自動デプロイのコマンド
% bundle exec cap production deploy
# EC2インスタンスを再起動した場合に行うコマンド
データベースがmariadb, Nginxを使用している場合
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl restart mariadb
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl restart nginx
# currentディレクトリに移動
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ cd current
# production.logの最新のログを10行分表示
[ec2-user@ip-172-31-23-189 log]$ tail -f production.log
Unicornのプロセスをkill
自動デプロイをする前に、unicornプロセスをkillする必要がある
すでにunicornのサーバーが立ち上がっている状態で自動デプロイをすると、二重でサーバーを立ち上げることになるためです。
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ ps aux | grep unicorn
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ kill プロセス番号
データベース、Nginxの再起動
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl restart mariadb
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl restart nginx
EC2内にデータベースを作成する際に用い「RAILS_ENV=production」とは、「RAILSのENV(環境)がproduction(本番環境)ですよ」という意味です。