船木俊介「ハッカーズランド」

スーパーソフトウエア東京オフィス代表&キッズラインCTO

GitHubからCapistrano3デプロイ - Webサービス開発フロー(5)

前回からの続き

6.手動でデプロイしてみる

まずは手動でデプロイが出来るか試してみます。一時的にローカルの設定を変更します。

~/.ssh/config

Host (AWSサーバのIPアドレス)
    HostName (AWSサーバのIPアドレス)
    User ec2-user
    Port 22
    UserKnownHostsFile /dev/null
    StrictHostKeyChecking no
    PasswordAuthentication no
    IdentityFile ~/.ssh/(AWSサーバのpemkey)
    IdentitiesOnly yes
    ForwardAgent yes

また、AWSのEC2サーバがGitHubのプライベートリポジトリにアクセスできないとソースコードが取得できないので、EC2のサーバ上でデプロイキーの作成と設定を行います。

$ cd ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): mydeploykey
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in mydeploykey.
Your public key has been saved in mydeploykey.pub.
The key fingerprint is:
f5:93:71:02:29:4a:a0:17:74:21:28:xx:xx:xx:xx:xx ec2-user@ip-xxx-xxx-xxx-xxx
The key's randomart image is:
+--[ RSA 2048]----+
| . o=.o.  ..     |
|o ..o+. . ..     |
| o.+.= . .. o .  |
|  E.o o  . . =   |
|   o    S   +    |
|             .   |
|                 |
|                 |
|                 |
+-----------------+

~/.ssh/config

Host github.com
        HostName github.com
        User git
        IdentityFile ~/.ssh/mydeploykey

パーミッションを変更

$ chmod 600 ~/.ssh/mydeploykey
$ chmod 600 ~/.ssh/mydeploykey.pub
$ chmod 600 ~/.ssh/config

~/.ssh/mydeploykey.pubの内容をコピーして、GitHubのDeploy Keysにペーストします。

aw3

これでEC2がGitHubのプライベートリポジトリにアクセスできるようになりました。ローカルの開発マシンに戻って、Capistranoのチェックを実行してみます。

$ bundle exec cap production deploy:check

途中で「cap aborted!」などのエラーがでなければ成功です。

実際にデプロイを実行してみましょう。

$ bundle exec cap production deploy

様々な処理が実行されて大量のログが流れますが、エラースタックトレースが出なければ無事デプロイされています。EC2のURLにブラウザでアクセスして確認してみましょう。

aw4