【Django】EC2インスタンスへgitを使ってデプロイする
scpによるファイルアップロードの場合、ローカルで削除した差分ファイルがインスタンス上に取り残されてしまう。
可能であれば、gitを使ったデプロイができるようになっておきたい。
手順
- インスタンスにリモートリポジトリを作る
- ローカルにリポジトリを作る
- リモートリポジトリとローカルリポジトリをつなげる
- SSHの設定に.pemファイルを登録する
- プッシュする
インスタンスにリモートリポジトリを作る
インスタンスのデフォルトのブランチは、masterになっているのでインスタンスにて。前もってこのコマンドを実行しておく。
git config --global init.defaultBranch main
その上でリポジトリを作る。
適当なディレクトリを作り、リポジトリとして扱う。
mkdir -p ~/Documents/myproject.git
cd ~/Documents/myproject.git
git init --bare
ローカルにリポジトリを作る
git init
git add .
git commit -m "first commit"
リモートリポジトリとローカルリポジトリをつなげる
git remote add origin インスタンスのユーザー名@インスタンスのIPアドレス:~/Documents/myproject.git
SSHの設定に.pemファイルを登録する
.pemファイルを .sshディレクトリ内にコピーする
cp ./test.pem ~/.ssh/test
公開鍵を作る
ssh-keygen -y -f ./test.pem > ~/.ssh/test.pub
ssh-agentに秘密鍵を登録しておく。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/test
この時点で、sshログイン時に.pemファイルを指定せずにログインできるようになる。
参照: https://alphacoder.xyz/git-push-to-an-aws-ec2-remote-using-a-pem-file/
プッシュする
git push origin main
インスタンスへプッシュする。
後は、クローンをして、ファイルを実体化させる
git clone myproject.git