EC2にコードを展開する時、git cloneでやると簡単にDeployできます。
なんとなく手順を覚えているものの、ところどころ忘れていることもあるので、やり方をまとめておきます。
-
Amazon Linux 2でのやり方です。 - リポジトリは、GitLabを使っています。
SSH Keyの作成
git cloneを実行するには、GitLabとSSHで通信する必要があります。
SSHキー用のディレクトリへ移動し、SSH通信で使用するキーを作成します。
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "[Gitlabで登録したEmail]"
コマンドを実行すると、3つ質問されますが、Enter3回でOKです。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
作成されたキーに権限を付与
コマンドが正常に完了すると、id_rsa, id_rsa.pubという2つのファイルができます。
id_rsaは、秘密キーという非常に大切なキーなので、適切な権限が付与されている必要があります。
以下のコマンドで、権限を付与します。
$ sudo chmod 600 id_rsa
GitLabへキーを登録
リポジトリと通信するためには、生成されたキー id_rsa.pub をGitLabへ登録し、有効化する必要があります。
1. id_rsa.pubを開き、文字列をコピーします。
(ssh-rsa...のところから全部コピーします)
$ cat id_rsa.pub
ssh-rsa AAA....1yc2EAAAADAQABAA........../j21AEwVC1i/+SBcQgTvccQd......
2. GitlabのSSH Keysメニューをクリックし、キーを貼り付け、Add Keyをクリックします (SSH Keysは、User Settingsの中にあります)。

SSH通信の確認
ここまでの設定が完了したら、EC2上でGitLabへの通信を確認します。
$ ssh -T git@gitlub.com
Welcome to GitLab, @XXXXXX!と表示されば、通信できています。
git cloneの実行
以下のコマンドを実行し、リポジトリをCloneします。
$ git clone git@gitlab.com:XXX/TTT.git
これで、GitLabのリポジトリからコードを取得できます。
もしうまく行かない時は、、、
上記の設定を行っても、git cloneがうまく行かないことがあります。
こんなエラーが出たり、、、
Cloning into 'Project Name'...
Permission denied (publickey).
fatal: Could not read from remote repository.
この場合、以下の2つの点を確認してみてください。
-
git cloneコマンドは、sudoをつけないで実行しているか?
-
sudoをつけてコマンドを実行すると、rootで実行することになるので、せっかく作成し たキーを利用できていない可能性があります。
- Cloneしようとしているディレクトリは、
ec2-user:ec2-userになっているか?
- ec2-userに書き込み権限がないディレクトリには、
Cloneできないので、そこも意外と盲点だったりします。