2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2021-06-18

概要

サーバーへデプロイする方法は本当にたくさんありますが、とりあえず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」をクリックします。

スクリーンショット 2021-06-18 14.32.12.png

2-3.でコピーした公開鍵の中身を貼り付けます。
「Title」はわかりやすい名前を付けておくと良いです。

スクリーンショット 2021-06-18 14.39.07.png

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を実行するようになります。

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
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?