LoginSignup
7
1

More than 1 year has passed since last update.

【AWS】 EC2にデプロイしたRailsアプリを更新する方法

Last updated at Posted at 2021-02-02

はじめに

最近は初学者でもRailsアプリをAWSのEC2にデプロイする人が増えてきました。
そしてデプロイした後も機能の追加や修正をして更新したい!と思う方は多いかと思います。
しかし自動デプロイを設定するのは大変、いち早く再デプロイしたいと思う方もいるでしょう。
そこで「手動」デプロイする方法を自分自身の体験も含め、初学者向けにまとめておきます。

*複雑な変更を加えた場合はご自身で必要な操作を調べてください。
*コマンドの実行は慎重に!

この記事の対象者

特にGitやGitHubの基本的な使い方を理解していないと、APIキーを公開してしまったり思わぬコンフリクトが発生してパニックになったり、痛い目に合うかもしれません。
先にGitやGitHubの使い方を学習することを推奨します。

理解を深めるため、最後の「おまけ」に載せた記事も参考にしてみてください。

前提

環境: MacOS, GitHub, EC2, Nginx, Unicorn

手順

1.ローカルで編集し、GitHubにpushする

はじめは練習として背景の色を変える程度で良いかもしれません。
ブランチやプルリクはご自身のルールに沿って適宜変更してください。
APIキーなどを追加したら、環境変数などを用いてGitHubに公開しないよう注意してください!

ローカル環境
$ git add . #ご自身の変更に合わせて
$ git commit -m"コミットメッセージ"
$ git push origin master

余談ですが、APIキーなどセキュリティに関わる設定をした後pushした場合、GitHubに登録したメアドにGitGuardianから警告メールが来ていないか確認した方がいいです。
ごく簡単に言えば、GitGuardianはpushした時リポジトリ内に秘密鍵などが含まれていないかチェックしてくれています。
実はみなさんが普段行っているpushも裏でGitGuardianが見守ってくれているのですね。

すみません、脱線してしまいました。

2.EC2にログインする

話を戻して、実際にサーバーへログインしましょう!

ローカル環境
$ ssh アプリ名_key_rsa

3.アプリディレクトリに移動

サーバー環境
$ cd /var/www/rails/アプリ名

4.Unicornのプロセスを停止する

プロセスとは簡単に言えば、実行中のプログラムのことです。
unicorn.pidのpidはprocess IDのことで、プロセスの識別子にあたります。
なのでcat tmp/pids/unicorn.pid を実行すると、25902のような番号が表示されます。

ちなみにproduction環境はキャッシュによって即座に変更が反映されません。

Rails のキャッシュ機構
キャッシュは、デフォルトではproduction環境でのみ有効になります。

そこでpullする前にUnicornのプロセスを停止しておきます。
このコマンドを実行したら再起動させるまではサイトにアクセスできなくなるため、注意してください。

サーバー環境
$  kill -QUIT `cat tmp/pids/unicorn.pid`

5.アプリの変更を取り込む

2通りやり方があるのですが、後者の方が事故りにくいです。

pullで一気に変更を取り込む場合はこっち

サーバー環境

$ git pull origin master

pullより慎重に取り込みたい場合はこっち

サーバー環境
$ git branch #masterブランチにいることを確認
$ git fetch
$ git diff origin/master #変更した差分を確認
$ git merge origin/master

仮にコンフリクトが起きても慌てず解消しましょう。

6.必要に応じてコマンドを打つ

変更した内容に応じて適宜コマンドを実行しましょう。

bundle install

サーバー環境
$ bundle install

rails c

サーバー環境
$ bundle exec rails c -e production

migrate

サーバー環境
$ rake db:migrate RAILS_ENV=production #本番環境でmigrate

本番環境なのでRAILS_ENV=productionの部分を忘れずに!

ここで紹介したコマンドは一例なので、必要があらばご自身で調べてください。

7.プリコンパイルする

アセット(JavascriptやCSS、画像)をプリコンパイル(それらの連結・圧縮など)します。
画像がうまく表示されない場合や色の変更が反映されない場合は、プリコンパイルできていない可能性があります。
アセットパイプラインやプリコンパイルについて詳しく知りたい方はこちら

サーバー環境
$ bundle exec rake assets:precompile RAILS_ENV=production

8.Unicornの起動

最後にUnicornを起動させましょう。

サーバー環境
$ unicorn_rails -c /var/www/rails/アプリ名/config/unicorn.conf.rb -D -E production

9.動作確認!

アプリのURLにアクセスし、再読み込みしてみましょう。
変更が反映されていたら成功です!

最後に

私自身経験が浅いため、説明不足や誤った点があるかもしれません。
記事は随時アップデートしていきたいと思います。
お疲れ様でした!

参考

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1