経緯
- HTTPSでのブログサイト構築までを簡単にできるようにしておきたかった。
- ECS、EKSをこれから利用するにあたってその前にEC2へDockerで環境構築するための練習です。
利用するGitリポジトリ
参考記事
- AWS EC2インスタンスにdockerとdocker-composeをインストールして簡単なWEBサービスを立ち上げる方法
- AWSを使って、無料でサイトを常時SSL化 全手順(EC2+Word Press+ELB+Certificate Manager+Route 53)
- ワードプレスをELBとNGINXでSSL(HTTPS)を使う場合の注意点
Route53でホストゾーンの作成
AWSコンソールログイン後、以下メニューでドメインを取得してください。1※お金かかります。
Certificate ManagerでSSL証明書を発行
- 上述したドメインに対してSSL証明書を発行2
EC2の作成(セキュリティグループの作成)
- EC2の作成では基本的には初期値で良いですが、セキュリティグループのルールを一応SSH接続は自分のグローバルIPアドレスからしかアクセスできないようにした方がよいかと。3あとHTTP, HTTPSは追加。
Elastic IPとEC2の関連付け
ELBの作成(SSL証明書の設置とEC2への接続)
- Application Load Balancerを選択して作成
- リスナーへ HTTP / HTTPS を追加
- アベイラビリティーゾーン:2つ以上選択。ELBとEC2を接続できる同じVPCに設定。
- セキュリティーゾーンは作成したEC2同じセキュリティグループを設定
- ターゲットグループ作成時に作成したEC2を登録する
Route53でドメインとELBの関連付け
EC2に先ほど設定したEC2と関連付けたEIPを指定してSSH接続(鍵ファイルも指定)
$ ssh -I /path/to/keyfile ec2-user@XX.XX.XX.XX
workspaceを作成
$ mkdir ~/workspace
$ cd ~/workspace
yum update
$ sudo yum update
dockerをインストール
$ sudo yum install -y docker
dockerを起動
$ sudo service docker start
docker 起動確認
$ sudo docker info
docker-composeをインストール
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
docker-compose インストール確認
$ docker-compose --version
ec2-userをdockerグループに所属させる
$ sudo gpasswd -a $USER docker
dockerデーモンを再起動する
$ sudo systemctl restart docker
ログアウト
$ exit
再ログイン
$ ssh -I /path/to/keyfile ec2-user@XX.XX.XX.XX
workspaceへ移動
$ cd ~/workspace
Gitをインストール
$ sudo yum -y install git
用意したgitリポジトリをクローン
$ git clone https://github.com/ienokado/docker-wordpress-nginx.git
$ cd docker-wordpress-nginx
wordpressを作成する
$ docker-compose up -d —build
結果
- ドメインへアクセスする
- インストール設定画面が表示されるので通常のWordpressと同様に実施
- HTTPSアクセスの場合初期インストール時にCSSやJSがHTTPで読み込まれてしまい、デザインレイアウトが崩れる
- wp-config-sample.phpの
require_once( ABSPATH . 'wp-settings.php' );
の手前に以下記述
- wp-config-sample.phpの
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
所感
意外とややこしかったです。
もっとスマートなやり方がありましたら教えてくださいませ。
誰かの参考になれば嬉しいなと思ってます。
-
グローバルIPアドレス確認 / コマンドではifconfig ↩