AWS EC2へGitHubとCircleCIを連携して自動でデプロイ: デプロイ

Pocket

GitHubを使って自動でデプロイをするために、スクーの下記授業を視聴しました。そのメモを記載します。

授業(全2回)では、GitHubとCircleCiを連携してデプロイする方法が、とても分かりやすく説明されています。

本記事は、上記内容を参考にして、GitHubのprivateリポジトリをAWSのEC2へデプロイする方法をメモします。
(今回はおもに2回目の内容についてメモしていますが、1回目で自動デプロイの全体像が説明されているので、1回目、2回目を通してみることをお薦めします)

概要

GitHubのprivateリポジトリを、CircleCIを使って、本番環境へデプロイします。

サーバ環境

  • Ubuntu Server 16.04 LTS (HVM), SSD Volume Typeを選択
  • セキュリティグループで、HTTPを許可
  • apacheをインストール(`$ sudo apt install apache2)
  • /var/www以下の所有者をubuntuへ変更($ sudo chown -R ubuntu /var/www
    • capistranoが、SSHログイン後にディレクトリを作成できるように、所有者をubuntuへ変更

本記事では、上記のEC2インスタンスを本番環境と呼びます。

デプロイツール

デプロイツールはcapistranoを使います。

capistranoの大まかな働きは、設定ファイルに指定したSSHの秘密鍵を使って本番環境にログインして、GitHubから所定の位置へソースコードをgit pullして、公開ディレクトリへシンボリックを作成することです。

capistranoの設定箇所については、上記の授業で分かりやすく説明されています。

準備1 SSH

概要

以下の処理でSSHの秘密鍵・公開鍵が必要になります

  1. CircleCIから、本番環境へSSHログインする処理
  2. GitHubから、対象のprivateリポジトリを、本番環境へgit clonegit pullする処理

作業の流れ

  1. 本番環境で鍵を作成
  2. 公開鍵を本番環境のauthorized_keysへ追記
  3. CircleCIへ秘密鍵を登録(リポジトリのSettings > SSH Permissions
  4. GitHubの対象リポジトリのSettings > Deploy keys公開鍵を登録

鍵を作成

# パスフレーズを設定しない
$ ssh-keygen -N ''
# ~/.ssh/id_rsa(秘密鍵)、id_rsa.pub(公開鍵)が作成される

公開鍵をauthorized_keysへ追加

cat ~./.ssh/id_rsa.pub >> authorized_keys

CircleCIへ秘密鍵を登録

秘密鍵を、CircleCIの対象リポジトリのSettings > SSH Permissionsへ追加します。

GitHubの対象リポジトリのDeploy keysを設定

GitHubから本番環境へgit clonegit pullするために、GitHubの対象リポジトリのSettings > Deploy keys公開鍵を登録します。

ディエクトリの権限を変更

/var/www以下のオーナーをubuntuへ変更

$ sudo chown -R ubuntu /var/www

AWSのデフォルトでは、sudo apt install apache2を実行した結果作成される/var/wwwの所有者は、rootユーザーになります。今回は、ubuntuでSSHログインすることを想定しているので、所有者をubuntuへ変更します。

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。