💨

AWSへのデプロイ後、コードの変更をGitHub経由で反映させる手順

2024/06/10に公開

はじめに

AWSでのデプロイ後にコードに変更があった場合、AWSに反映させる手順がわかりにくかったため記録しておこうと思います。

前提条件

AWSのEC2/RDSを使用
AWSのEC2インスタンスに1回はGitHubからクローン済み
SSHを使用

更新の流れ

  1. SSHでEC2に接続する

私の場合はWindowsなのでRloginを使用しています

  1. cd で1回目にクローンしたディレクトリに移動する
[EC2ユーザ名 hourensou-app]$

※hourensou-appはディレクトリ名なのでそれぞれの条件に合わせて変更する

  1. git pullを行う
[EC2ユーザ名 hourensou-app]$git pull origin master

ディレクトリにいる状態で差分をgitから取り入れる。
1回git cloneを行っている場合は下記コマンドで差分を反映できる。

  1. 同期させる
    この状態のままでカレントディレクトリのすべてのファイルを/var/www/html/にコピーする。
    ※コピーする前に/var/www/html/ディレクトリのバックアップはとっておくのがオススメ
[EC2ユーザ名 hourensou-app]$sudo rsync -av --exclude='.git' --delete * /var/www/html/

このコマンドで更新や新設されたファイルのみ転送されAWS上の表示も更新される。

.gitディレクトリは除外したいので
--exclude='.git'オプションにより.gitディレクトリは除外する

.gitディレクトリを除外する理由

gitディレクトリにはリポジトリの履歴や設定も含まれているため公開すると不正なアクセスを受けた際にコードなどが漏洩する可能性がある。そのため公開ディレクトリの中に.gitは含めないのが安全。

rsyncするとSSH上で変更した内容はどうなるのか?

rsyncはファイルの差分だけがコピーされます。
コピー元とSSHで編集した内容が違う場合はコピー元の内容で上書きされます。
しかし、コピー元にファイルがなく、SSHで新規で.envファイルを作ったような場合は、コピー元に差分を比較する対象がないため、.envファイルは上書きされたり削除されずそのまま残ります。

Discussion