#概要
AWS EC2で、デプロイする方法について述べています。
#はじめに
AWS EC2を導入後、いまいちデプロイの仕方が掴めないという方向けの記事となっています。
私も導入したばかりで、デプロイの手順の備忘録として載せています。
#前提
AWS EC2を導入済み
#バージョン
rubyのバージョン ruby-2.6.5
Railsのバージョン Rails:6.0.0
#実行の大まかな流れ
①【GitHub】ローカルでのコードの変更を、masterにpushする
②【ローカル】ターミナルでEC2にログイン
③【EC2】ターミナルで、ps aux | grep unicorn を実行
④【EC2】ターミナルで、kill プロセス番号 を実行
⑤【ローカル】ターミナルで、bundle exec cap production deploy を実行
#実行方法
##①【GitHub】ローカルでのコードの変更を、masterにpushする
GitHubでコードの変更内容をマージしてください。
##②【ローカル】ターミナルでEC2にログイン
以下の手順を、ローカル内のターミナルで実行してください。
$ cd
↓
$ cd .ssh/
↓
$ ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP
※ダウンロードした鍵の名前:AWS公式ページにて自身が設定したキーペア名のこと
※作成したEC2インスタンスと紐付けたElastic IP:AWS公式ページで記載している個人に割り振られているElastic IPアドレスのこと
※EC2にログイン完了
↓
cd /var/www/開発中のアプリケーション
##③【EC2】ターミナルで、ps aux | grep unicornを実行
以下の手順を、EC2内のターミナルで実行してください。
$ ps aux | grep unicorn
##④【EC2】ターミナルで、kill プロセス番号を実行
以下の手順を、EC2内のターミナルで実行してください。
$ kill Unicornのプロセス本体のid
※Unicornのプロセス本体のid:unicorn_rails masterのプロセスidのこと
##⑤【ローカル】ターミナルで、bundle exec cap production deployを実行
以下の手順を、ローカル内のターミナルで実行してください。
$ bundle exec cap production deploy
#補足説明
##AWS EC2とは?
Amazonが提供している仮想サーバー構築サービスです。
##②【ローカル】ターミナルでEC2にログイン
ホームディレクトリに移動します。
$ cd
↓
「.ssh」という隠しディレクトリに移動します。
ユーザーに見せる必要がないファイルなので隠しディレクトリに置いています。
$ cd .ssh/
↓
ssh接続を実行して、EC2に接続しています。
$ ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP
↓
開発中のアプリケーションの格納場所まで移動しています。
※人によってディレクトリの名称は異なります。
cd /var/www/開発中のアプリケーション
##③【EC2】ターミナルで、ps aux | grep unicornを実行
unicornのプロセスを確認しています。
・「プロセス」とは、PC上で動くすべてのプログラムの実行時の単位です。
・「psコマンド」とは、現在動いているプロセスを確認するためのコマンドです。
・「unicorn_rails master」と表示されているプロセスがUnicornのプロセス本体です。
$ ps aux | grep unicorn
##④【EC2】ターミナルで、kill プロセス番号を実行
killコマンドは、現在動いているプロセスを停止させるためのコマンドです。
・UnicornのプロセスをKillしています。
・killする理由としてはすでにunicornのサーバーが立ち上がっている状態で自動デプロイをすると、二重でサーバーを立ち上げることになるためです。(自動デプロイもサーバーを立ち上げる役割を担っています)
$ kill Unicornのプロセス本体のid
##⑤【ローカル】ターミナルで、bundle exec cap production deployを実行
・自動デプロイのコマンドです。
・EC2を導入するまでで、ローカルのターミナルからコマンド一発でデプロイできるようになっております。
$ bundle exec cap production deploy
#間違いやすいポイント(主観)
⑤の、bundle exec cap production deployを実行を誤って、EC2内で行ってしまうことがありました。
EC2内で実行すると以下のエラーが起こります。
bundler: command not found: cap
Install missing gem executables with `bundle install`
意味を理解しながらと言えど、連続して行う作業なので、間違いがちかなって思います(恥)
以上です。