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つ質問されますが、Enter
3回で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
できないので、そこも意外と盲点だったりします。