2.3. AWSにインストール
Amazon Web Service 上にJijiをインストールします。
- EC2インスタンス上のAmazon Linuxに、Dockerをインストールして、その上でJijiを実行します。
- Dockerをインストールできれば他のAMIイメージを利用することもできます。
- 月額料金をなるべく安く済ませるため、もっともシンプルな構成にしています。
- 月額: $6.5 + データ転送料 ~
- CloudWatchでの死活監視など必要であれば、別途設定を行ってください。
- Amazon Web Serviceのアカウントが用意されていることを前提としているので、事前にご用意ください。
1. EC2のコンソールを開きます。
Amazon Web Service にログインして、機能一覧からEC2を選択してください。
2. 使用するリージョンを選択します。
右上のメニューから、リージョンを選択します。
- 任意のリージョンを使用できますが、リージョンによってインスタンスの利用料金や提供されている機能が異なるので注意が必要です。
- 2016-02-16 時点では、最も安い t2.nano インスタンスは、「アジアパシフィック(東京)」より「米国東部 (バージニア北部)」の方が安く済みます。
- この手順の確認は「米国東部 (バージニア北部)」を利用して行っています。
3. キーペアを作成します。
キーペアは、起動したEC2インスタンスにアクセスするときに使用します。
-
「キーペア」を選択します。
-
「キーペアの作成」をクリックして、任意の名前でキーペアを作成します。
-
プライベートキーがダウンロードされるので、保存しておきます。
ダウンロードしたプライベートキーファイルは、安全な場所に保存してください。
4. EC2インスタンスを作成して起動します。
- メニューから「インスタンス」をクリックします。
一定期間継続して稼働させる場合は、リザーブドインスタンスを使うことで、料金を抑えることができます。 詳しくは、こちらをご覧ください。
-
「インスタンスの作成」をクリック
-
「Amazon Linux AMI 2015.09.1 (HVM), SSD Volume Type」を選択します。
- インスタンスタイプを選択して、「次の手順:インスタンスの詳細の設定」をクリックします。
- 2016-02-16 時点で最も安い
t2.nano
を選択します。 - 無料利用枠を利用する場合は、
t2.micro
を選択してください。
t2.nano
を利用する場合、Dockerコンテナのビルドや削除を行うと、メモリ不足でフリーズする場合があります。 このような場合は、一時的にインスタンスタイプをt2.nano
にして操作を実行してください。 システムの実行はt2.nano
で問題ありません。 - 2016-02-16 時点で最も安い
-
デフォルトの設定のまま、「次の手順:ストレージの追加」をクリックします。
- ディスクサイズを設定して、「次の手順:インスタンスのタグ付け」をクリックします。
- OS領域に8GB、Jijiには保存するバックテストの数にもよりますが4GB程度あれば十分なので、12GB確保すれば問題ありません。
- 必要に応じてカスタマイズしてください。ただし、サイズを増やすとその分利用料金も高くなります。
- ディスクサイズは後で変更することもできます。
-
デフォルトの設定のまま、「次の手順:セキュリティグループの設定」をクリックします。
- セキュリティグループを設定して、「確認と作成」をクリックします。
- 「セキュリティグループの割り当て」で「新しいセキュリティグループを作成する」を選択します。
- 「セキュリティグループ名」「説明」に任意の名前を設定します。
- デフォルトで追加されている「SSH」レコードの「送信元」を自身のIPアドレスの範囲に変更します。
- 「ルールの追加」から、「HTTP」「HTTPS」を追加します。
-
内容を確認して、「作成」をクリックします。
-
キーペアの選択ダイアログが表示されるので、2で作成したキーペアを選択し、「インスタンスの作成」をクリックします。
- インスタンスの作成が開始されるので、しばらくお待ちください。
5. EC2インスタンスにログインします。
-
インスタンスが起動したら、詳細画面からパブリックIPアドレスを取得します。
-
任意のSSHクライアントを起動し、以下を指定してインスタンスにログインします。
- IPアドレス: ↑で取得したパブリックIPアドレス
- ポート番号: 22
- ユーザー名: ec2-user
- キーファイル: 2でダウンロードした秘密鍵を指定
※詳しい手順はこちらをご覧ください。
6. Docker, Gitをインストールします。
以下のコマンドを実行して、必要なモジュールをインストールします。
7. Docker Compose設定ファイルのひな形をチェックアウトします。
今後、docker-compose
コマンドを実行する場合は、チェックアウトしたディレクトリで実行します。
(または、このディレクトリにある docker-compose.yml
を引数で指定して実行します。)
8. SSL証明書を用意します。
- ドメインを所有している場合は、Let’s Encryptを利用して、無料でSSL証明書を取得できます。
- 取得方法はこちらをご覧ください。
- 取得方法はこちらをご覧ください。
- ローカルで作成した自己署名証明書を使用することもできます。
- 自己署名証明書を使用した場合、通信の暗号化はできますがサーバー認証はできません。 ブラウザおよびアプリで警告が表示されますので、ご了承ください。
- 自己責任でのご利用をお願いします。
- SSLを利用しない場合は、
docker-compose-without-ssl.yml
をご使用ください。- SSLプロキシとして使用している
Nginx
なしの構成でセットアップします。 docker-compose-without-ssl.yml
をdocker-compose.yml
にリネームして使用するか、-f
オプションでdocker-compose-without-ssl.yml
を明示してください。- 通信の暗号化は行われませんので、自己責任でのご利用をお願いします。
- SSLプロキシとして使用している
自己署名証明書を生成する例:
9. docker-compose.yml を編集します。
以下の項目を設定します。
- 秘匿データの暗号化に使うキー (
jiji - environment - USER_SECRET
)- 必ず変更して使用してください。UIから入力を求められることはないので、任意の長い文字列を使用すればOKです。
- SSL証明書のパス (
nginx - volumes
)- 3 で用意したSSL証明書の公開鍵と秘密鍵のパスを設定します。
./path/to/ssl.key
のように./
で始めることで、docker-compose.yml
からの相対パスで指定できます。
- MongoDBデータの保存先 (
mongodb - volumes
)- デフォルトでは、MongoDBコンテナ内に作成されます。
- ホストマシンの任意の場所に保存したい場合は、
volumes
のコメントを解除して、保存先のパスを設定します。
- ポート番号 (
nginx - ports
,mongodb - ports
,jiji - ports
)- デフォルトでは、Jijiがポート8443、mongodbがポート27018 を使用します。(SSLを使用しない場合、Jijiは8080を使用します)
- Jijiのポート(
nginx - ports
) を 443 に変更します。(SSLを使用しない場合は、jiji - ports
を80に変更します。)
以下は設定例です。
10. Dockerコンテナを起動します。
以下のコマンドで、起動しているコンテナを確認できます。
起動していれば、以下のURLでJijiにアクセスできます。
※SSLを利用しない場合は以下のURLになります。
補足1: コンテナを停止・再起動する
Jijiを停止するには以下のコマンドを実行します。
停止したコンテナを再起動するには、start コマンドを実行します。
補足2: サービスのログを確認する
logsコマンドでコンテナのログを確認できます。