【誰でもできる】AWS上でSSL化された WordPress サイトを速攻で作る ~ WordPress with NGINX and SSL Certified by Bitnami

## はじめに
2019年10月現在で素早くにSSL化した WordPress 環境を作る方法を整理してみました。

### 必要な準備
 - 必要なもの
    - AWSアカウント
    - ドメイン ※AWSでも取得可能 

## 1. Bitnami AMI から WP サーバを構築
- AWSコンソールにログインし検索窓から「EC2(仮想サーバ)」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/f14cce2d-1438-6ab5-10e0-d78b73f444c2.png)

- インスタンスの作成を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/61d2b27a-f0c1-e266-ca3a-80ceba199211.png)

- Amazon マシンイメージ (AMI) の画面で WordPress と検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/729e4c78-fcce-51f9-1a30-ad06e993a723.png)

- AMI 「WordPress with NGINX and SSL Certified by Bitnami」 を選択
    - Ubuntu かつ ngixn 環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/1a21ce28-cabb-6845-a132-78798ae196a3.png)

- なお Bitnami 製品はソフトウェア利用料が発生しません
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/d949c28c-1da1-9740-8ad7-852baf02c8ef.png)

- t3a.micro を使用してみます。
    - 月額約1000円程度のスペックです。[価格表リンク](https://aws.amazon.com/jp/ec2/pricing/on-demand/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/c724c5c1-de41-4e29-d0ca-06563ff6a9fe.png)

- ここから「起動」ボタンで作成することもできます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/97e835f2-4e49-aa5b-f4e1-fd0be4eee31b.png)

- 一応セキュリティグループで接続先をマイIPのみに限定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/e46b5495-524a-7922-1d8c-a4083216d1c4.png)

- 起動を押すとキーペア作成のページが出ます。
- キーペアの作成は一度きりなのでなくすと大変です。取り扱いに注意しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/ce79b1a9-2d52-ab71-9c4b-3c64e48f1e08.png)

- これでサーバの構築は完了です。数分でサーバが立ち上がります
- インタンスタブで「running」となっていれば完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/f1cfe9e1-8067-33ff-de54-21bc248aad4d.png)


## 2. IPアドレスを固定化する
- 現状のままの場合、仕様によりIPアドレスが再起動の度に変更になるのでIPを固定化します。

- Elastic IP を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/b577090a-235f-a02c-80bf-df89cecdafc1.png)

- 割り当て
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/0a780177-def0-b593-1139-11202bc8f81d.png)

- これでパブリックIPが割り当てられます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/97c5f7d3-7acd-fb28-7f08-b6221ab2bf3d.png)

- アクションからアドレスの関連付けを行います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/476e7b23-469b-bdde-3553-7d61204ed53e.png)

- 構築したサーバに対して割り振ります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/885d4878-36b1-ee62-ca86-532fb9f3f02a.png)

- URLリンクのようにIPv4 パブリックIPアドレスが青文字になっていればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/0ca24748-c9e0-c6c8-ca7d-af2b060d6c0d.png)

- IPからアクセスできれば完了です。

## 3. bitnamiロゴを消す

- 以下コマンドでロゴを非表示にする

```terminal
sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
```

- Nginx の再起動を実行

```terminal
sudo /opt/bitnami/ctlscript.sh restart nginx
```

- サイトを確認してロゴを消えたことを確認

## 4. WordPress管理画面へのログイン
- Bitnami はサーバ起動時のシステムログにパスワードが乱数出力されます
- AWSコンソールからシステムログの取得を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/5f860a8d-6294-8608-f37f-cfaca6cf8b00.png)


- 緑文字の画面がでてきて下部に書いてあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/badc2df9-f1f8-05e5-a72a-27ae12efaee3.png)

- 念のため別の管理ユーザを作ると良いでしょう。

## 5. SSL接続設定
 - Let's Encrypt という無料証明書を利用という証明書を利用します。
 - 構築環境は 「 WordPress with NGINX and SSL Certified by Bitnami 」 で提供されているコマンドで自動更新含め一発です。(!)
 
### SSL証明書導入&自動更新設定

```Terminal
sudo /opt/bitnami/letsencrypt/scripts/generate-certificate.sh -m MAIL -d DOMAIN
```

- nginx 再起動を実施

```terminal
sudo /opt/bitnami/ctlscript.sh restart nginx
```

### http → https のリダイレクト設定

- vim で bitnami.conf を修正する

```Terminal
sudo vim /opt/bitnami/nginx/conf/bitnami/bitnami.conf
```

- 変更前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/ebf5ca53-2ab9-1f9f-d3e0-fa36e327e26e.png)


- http server の項目に 「 return 301 https://$host$request_uri;」を加筆
- 変更後 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/4db7d1c2-4217-b5e1-e630-a8d7f154596c.png)

- nginx 再起動を実施
 
```terminal
sudo /opt/bitnami/ctlscript.sh restart nginx
```

- URLから証明書アクセスとリダイレクトが確認できれば完了！

## 6. nginx のファイルアップロード設定を変更
- デフォルトだと1MB上限となっています。これを修正しましょう
- vim で bitnami.conf を修正する

```Terminal
sudo vim /opt/bitnami/nginx/conf/bitnami/bitnami.conf
```

- conf のhttp/https通信セクションにディレクティブを追加

```vim
client_max_body_size 20m;
```

- 記載後はこのようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321336/4a3590bc-51f5-c41e-f5ed-0b47a0e5bf83.png)


- nginx 再起動を実施

```terminal
sudo /opt/bitnami/ctlscript.sh restart nginx
```

- これで完了！

## まとめ
以上で急ぎ足ではありますがこれだけで https 化した WordPress 実行環境が構築できました！
いや～便利な時代になりましたね！