自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

【Django】EC2インスタンスへgitを使ってデプロイする

thumbnail

scpによるファイルアップロードの場合、ローカルで削除した差分ファイルがインスタンス上に取り残されてしまう。

可能であれば、gitを使ったデプロイができるようになっておきたい。

手順

  1. インスタンスにリモートリポジトリを作る
  2. ローカルにリポジトリを作る
  3. リモートリポジトリとローカルリポジトリをつなげる
  4. SSHの設定に.pemファイルを登録する
  5. プッシュする

インスタンスにリモートリポジトリを作る

インスタンスのデフォルトのブランチは、masterになっているのでインスタンスにて。前もってこのコマンドを実行しておく。

git config --global init.defaultBranch main
Copy

その上でリポジトリを作る。

適当なディレクトリを作り、リポジトリとして扱う。

mkdir -p ~/Documents/myproject.git
cd ~/Documents/myproject.git

git init --bare
Copy

ローカルにリポジトリを作る

git init
git add .
git commit -m "first commit"
Copy

リモートリポジトリとローカルリポジトリをつなげる

git remote add origin インスタンスのユーザー名@インスタンスのIPアドレス:~/Documents/myproject.git
Copy

SSHの設定に.pemファイルを登録する

.pemファイルを .sshディレクトリ内にコピーする

cp ./test.pem ~/.ssh/test
Copy

公開鍵を作る

ssh-keygen -y -f ./test.pem > ~/.ssh/test.pub
Copy

ssh-agentに秘密鍵を登録しておく。

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/test
Copy

この時点で、sshログイン時に.pemファイルを指定せずにログインできるようになる。

参照: https://alphacoder.xyz/git-push-to-an-aws-ec2-remote-using-a-pem-file/

プッシュする

git push origin main 
Copy

インスタンスへプッシュする。

後は、クローンをして、ファイルを実体化させる

git clone myproject.git 
Copy

参照

スポンサーリンク