概要
サーバーへデプロイする方法は本当にたくさんありますが、とりあえずGitを使ったシンプルな形でのデプロイの方法をご紹介します。
ちなみに、この方法はAWSに全く依存していません。(良くも悪くもねw)
手順
1. Gitインストール
Gitをサーバーにインストールします。
$ sudo dnf install -y git
$ git version
git version 2.40.1
2. キーペアの作成及びGithubへ登録
2-1. 秘密鍵を置く場所に移動
cd ~/.ssh
2-2. 秘密鍵作成
ssh-keygen -t rsa -b 4096
色々聞かれますが、こだわりなければ全部Enter
でOKです。
秘密鍵の権限も制限しておきましょう。
chmod 600 id_rsa
2-3. 公開鍵の中身をコピー
cat ~/.ssh/id_rsa.pub
2-4. Githubのリポジトリに公開鍵を登録する
Githubにアクセスして、リポジトリを開きます。
メニューにある「Setting」を選択してください。
「Add deploy key」をクリックします。
2-3.でコピーした公開鍵の中身を貼り付けます。
「Title」はわかりやすい名前を付けておくと良いです。
2-5. サーバーから接続確認
ssh -T git@github.com
You've successfully authenticated
というメッセージが確認できたらOKです。
3. リポジトリをクローン
# テストディレクトリを作成して、権限と所有者を変更します。
sudo chown ec2-user:ec2-user /srv
cd /srv
git init
git clone git@github.com:test/test-repository.git
おまけ
毎回手動でSSH接続してデプロイするなんて面倒なそこのアナタへ
シェルスクリプトを用意して、シェルの実行だけでデプロイできるようにしておきましょう。
構成
ローカル環境に以下の2つのシェルファイルを用意します。
deploy.sh
はローカルで実行するシェルファイル、exec.sh
はリモートサーバーで実行するシェルファイルになります。
.
├── deploy.sh
└── exec.sh
deploy.sh
SSH接続して、接続先でexec.sh
を実行するようになります。
#!/bin/sh
HOST=XXX.XXX.XXX.XXX
USER=ec2-user
PRIVATE_KEY="~/.ssh/private.pem"
ssh -i ${PRIVATE_KEY} ${USER}@${HOST} < exec.sh
exec.sh
リモートサーバーで実行したいことを書いちゃってください。
今回はgit pull
だけ行うようにしています。
# git pull
cd /test/test-repository
git checkout master
git pull origin master
実行
ローカルからdeploy.sh
を実行するだけです。
sh deploy.sh