AWS EC2 サーバー構築(Git編)


AWS EC2 サーバー構築(Git編)

概要

サーバーへデプロイする方法は本当にたくさんありますが、とりあえずGitを使ったシンプルな形でのデプロイの方法をご紹介します。
ちなみに、この方法はAWSに全く依存していません。(良くも悪くもねw)

手順

1. Gitインストール

Gitをサーバーにインストールします。

$ sudo yum install -y git

$ git version
git version 2.23.4

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. サーバーから接続確認

You've successfully authenticatedというメッセージが確認できたらOKです。

3. リポジトリをクローン

# テストディレクトリを作成して、権限と所有者を変更します。
sudo mkdir /test
sudo chmod -R 775 /test
sudo chown -R ec2-user:ec2-user /test
cd /test

git init
git clone [email protected]:test/test-repository.git

おまけ

毎回手動でSSH接続してデプロイするなんて面倒なそこのアナタへ

シェルスクリプトを用意して、シェルの実行だけでデプロイできるようにしておきましょう。

構成

ローカル環境に以下の2つのシェルファイルを用意します。
deploy.shはローカルで実行するシェルファイル、exec.shはリモートサーバーで実行するシェルファイルになります。

.
├── deploy.sh
└── exec.sh

deploy.sh

SSH接続して、接続先でexec.shを実行するようになります。

deploy.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だけ行うようにしています。

exec.sh
# git pull
cd /test/test-repository
git checkout master
git pull origin master

実行

ローカルからdeploy.shを実行するだけです。

sh deploy.sh