VPC+EC2+Apache+MariaDBでWordPressを構築し、独自ドメイン+https化

## 本記事を作成することになったきっかけ
自分のポートフォリオを公開するには何がいいだろうか？と考えた時にWordPressがふと思い浮かびました。
なので、AWSにWordPressが動くサーバーを構築しようと思い、その手順を残そうと思いました。
あとWordPressを使えばアフィリエイトでお金稼ぎできるようになるので、やり方を知ってて損は無いなということで記事にしようと思いました。<font color=red>~~まあ僕がアフィリエイトやっても絶対稼げないんですけどね。~~</font>アフィリエイトやりたいと思った人の助けにもなればいいなと思いました。

## 対象の読者
WordPressを使いたい人
オリジナリティのあるブログを始めたい人
アフィリエイトをやりたい人
インフラ構築を勉強したい人
mac利用者
AWSアカウント作成済
クレジットカードをAWSに登録済

## バージョン情報
あらかじめどのバージョンを使用しているか記載しておきます。
バージョンによってやり方全然違ったりするので・・・。

| ソフト | バージョン |
|:-----------|:------------|
|Linux|Amazon Linux 2 AMI (HVM), SSD Volume Type　ami-0053d11f74e9e7f52 (64 ビット x86)|
|Apache|2.4.46|
|PHP|7.3.21|
|MariaDB|15.1|
|WordPress|5.5.1|

最初RDSを組み合わせてやろうと思ったのですが値段が高いのでやめました。
個人利用であればわざわざ追加するほどのものでも無いですし。
技術的にもさほど難しくないのであまり勉強にならなさそうですし。
需要あれば解説します。簡単に変えられるので。

## VPCの作成

以下のネットワーク構成にします。

![スクリーンショット 2020-09-19 11.52.14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/d0b02780-4647-e30b-2908-36fdee5058ca.jpeg)

難しいと思った方はすみません。1つ1つの作り方をきちんと解説します。
簡単な構成だと思った方もすみません。ぶっちゃけWordPress作るくらいならこれくらいの構成で十分だなって。

下準備として、ネットワーク構築のために、VPCの設定を行います。

AWSでVPCを開きます。
![スクリーンショット 2020-09-18 23.06.55.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/dfbfa756-6c49-2a7e-89d3-672be8f3005b.jpeg)

左のメニューからVPCをクリックします。
![スクリーンショット 2020-09-18 23.07.57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/5f3d6ffe-d696-ff77-30c0-0a918d04efb0.jpeg)

VPCの作成をクリックします。
![スクリーンショット 2020-09-18 23.08.25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/1884ffcb-34fb-28b0-638c-b32571acc2fe.jpeg)

VPCの設定をします。
名前タグをWordPress、IPv4 CIDRブロックを172.168.0.0/16としました。
![スクリーンショット 2020-09-18 23.09.52.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/670af76d-3418-7366-6c45-3e378665f82c.jpeg)

VPCの作成をクリックします。
![スクリーンショット 2020-09-18 23.10.55.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/035dce81-3688-ca88-3a73-f2d321519541.jpeg)

ここまでできました。
![スクリーンショット 2020-09-19 12.05.42.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/1d1cd4a6-e850-ec14-d7c1-d1edd0cda943.jpeg)

EC2を配置するためのサブネットが必要なので、左のメニューからサブネットを選択し、サブネットの作成をクリックします。
![スクリーンショット 2020-09-19 12.00.05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c9a7dba7-92c9-4bb0-5f79-aacd930869e3.jpeg)

![スクリーンショット 2020-09-19 12.00.23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/5bbb7330-6627-efc3-97e7-fe8137c7d9f9.jpeg)

名前タグをWordPressサブネットにして、VPCを先ほど作成したVPC(WordPress)にします。
アベイラビリティーゾーンをap-northeast-1aにします。
IPv4 CIDRブロックを172.168.0.0/20にします。
入力が終わったら作成をクリックします。
![スクリーンショット 2020-09-18 23.28.04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/b4da20a4-771a-6365-cdb1-8e090dc62f0e.jpeg)

サブネットが作成されたことを確認して閉じるをクリックします。
![スクリーンショット 2020-09-18 23.28.28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/b5e5a2c2-0e11-670a-1ae0-2b03788e07b9.jpeg)

ここまでできました。
![スクリーンショット 2020-09-19 12.01.47.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/ebb8a92b-1d4c-826f-c3d7-a8c77b471386.jpeg)


VPCがインターネットに繋がってないので、繋げる必要があります。
左のメニューからインターネットゲートウェイを選択します。
![スクリーンショット 2020-09-18 23.54.03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/1fb056a8-f371-53fd-0f04-4c09bcf61ca2.jpeg)

インターネットゲートウェイの作成をクリックします。

![スクリーンショット 2020-09-18 23.54.14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/e4ff25bd-a229-50a8-cb97-a55d0872b9bb.jpeg)

名前タグをWordPressゲートウェイにしてインターネットゲートウェイの作成をクリックします。

![スクリーンショット 2020-09-18 23.54.42.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/37382393-9f26-dcc8-18e9-684474809f7c.jpeg)

インターネットゲートウェイをVPCにくっつける必要があるのでVPCへアタッチをクリックします。

![スクリーンショット 2020-09-18 23.55.40.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/69a0e794-dc09-c572-b244-2471e184e792.jpeg)

WordPressのVPCを選択してインターネットゲートウェイのアタッチをクリックします。

![スクリーンショット 2020-09-18 23.56.00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/a782e472-f76d-ea0b-32bf-6134b737fc54.jpeg)

アタッチされたらOKです。
![スクリーンショット 2020-09-18 23.56.47.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c0e60839-d089-7c7f-b63d-53248fc0de4a.jpeg)

ここまでできました。
![スクリーンショット 2020-09-19 12.03.03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c9491ca6-d45e-ba84-357f-9d1ed43e296f.jpeg)

インターネットとインターネットゲートウェイは自動的に繋がりますし、ルートテーブルはインターネットゲートウェイ作成時に自動的に作成されます。

しかし、不親切なことにサブネットからルートテーブルへのルーティングと、インターネットゲートウェイからルートテーブルへのルーティングが無いんですよね・・・

![スクリーンショット 2020-09-19 12.09.27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/30249d45-07f5-c911-0006-7637d44d740a.jpeg)


仕方ないので、作成する必要があります。

まずはサブネットからルートテーブルへのルーティングを作成します。
左のメニューからVPCをクリックします。
![スクリーンショット 2020-09-19 0.43.44.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/b0981856-bf6a-5915-ea53-6df9f15fec8a.jpeg)

WordPressのVPC IDをクリックします。

![スクリーンショット 2020-09-19 0.43.58.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/69130a44-74d3-2d8b-a59a-c7daac851c94.jpeg)

ルートテーブルのところにリンクがあるのでクリックします。

![スクリーンショット 2020-09-19 0.44.37.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/1adcf378-0239-1cd6-9d3d-ac3c7ed84bea.jpeg)

サブネットの関連付けをクリックしてサブネットの関連付けの編集をクリックします。

![スクリーンショット 2020-09-19 0.45.21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/505d4cb7-8b08-81b7-685e-3bc322baa830.jpeg)

WordPressサブネットを選択して保存をクリックします。
![スクリーンショット 2020-09-19 0.45.51.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/55e0618c-1c65-315d-6024-f733f2c99f9e.jpeg)

続けて、インターネットゲートウェイからルートテーブルへのルーティングを作成します。

ルートタブでルートの編集をクリックします。

![スクリーンショット 2020-09-19 0.57.09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/39ad2bcd-747e-77e8-96dc-ee5c957b1377.jpeg)

送信先を0.0.0.0/0にして、ターゲットをInternet GatewayのWordpressゲートウェイにします。(画像では表示されていませんが選択時にWordPressゲートウェイと表示されます)
終わったらルートの保存をクリックします。
![スクリーンショット 2020-09-19 0.58.56.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/80f0f95f-9532-b1b2-df5a-d77cd9a13b3a.jpeg)

ルートが正常に編集されたことを確認します。

![スクリーンショット 2020-09-19 0.59.34.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/9f8b5e2a-d17a-e74a-5769-266e993c4f21.jpeg)

これで、無事インターネットゲートウェイとサブネットが繋がるようになりました。

![スクリーンショット 2020-09-19 12.10.18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/b4213765-593a-233b-8542-e1c79c4d4b00.jpeg)

ネットワーク構築はこれで完成！

ただ、ネットワークを構築してもサーバーをどこかに配置してあげないと意味がないのでサーバーを作成します。

## EC2の作成

サーバー本体を作成するために、EC2インスタンスを作成します。

![スクリーンショット 2020-09-19 12.15.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/daac170a-ce3d-0102-5f8c-6524cef645c7.jpeg)


EC2を開きます。

![スクリーンショット 2020-09-18 23.16.01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/d1740ed8-c490-ad05-9c50-6078dfae158b.jpeg)

リージョンが東京となっていることを確認します。

![スクリーンショット 2020-09-18 23.16.28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/a5fcb8b3-e97e-778b-bcdb-3f28f59785ce.jpeg)

左のメニューからインスタンスをクリックします。
![スクリーンショット 2020-09-18 23.17.00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/d10ca05c-fc35-de41-53d1-cda2534f5644.jpeg)

インスタンスを起動をクリックします。
![スクリーンショット 2020-09-18 23.17.33.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/1ccb6354-39c1-abf4-e956-8159e1c2632f.jpeg)

Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-0053d11f74e9e7f52 (64 ビット x86)を選択します。

![スクリーンショット 2020-09-18 23.21.28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/4d924b18-af6a-8f30-764a-cbfebf2b2875.jpeg)

インスタンスタイプはt2.microにして次のステップ：インスタンスの詳細の設定をクリックします。
![スクリーンショット 2020-09-18 23.23.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/7457c56e-592a-3a1b-7770-5b4d704597b1.jpeg)


ネットワークをWordPressに設定し、サブネットをWordPressサブネットに変更します。
自動割り当てパブリックIPを有効にします。
入力が終わったら次のステップ：ストレージの追加をクリックします。
![スクリーンショット 2020-09-18 23.33.00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/2cd1ca8b-1b01-ed63-2a8e-8169ecb40d76.jpeg)

ストレージはデフォルトで問題ありません。
次のステップ:タグの追加をクリックします。
![スクリーンショット 2020-09-18 23.34.08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/6257f177-1fe6-bf04-b8c9-861bf09dd27d.jpeg)

タグの追加をクリックして、
キーをName、値をWordPressインスタンスにします。
終わったら次のステップ：セキュリティグループの設定をクリックします。
![スクリーンショット 2020-09-18 23.35.25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/60e39ba1-6107-7d7e-1bdf-b7753a53cc2d.jpeg)

新しいセキュリティグループを作成します。
セキュリティグループ名をWordPress-sgにします。
SSH接続するための設定はデフォルトで設定されているのでそのままにします。
SSH接続はあとで嫌というほどやります。
HTTP(セキュリティ対策してないやつ)とHTTPS(セキュリティ対策してるやつ)のルールを追加します。HTTPS化するのはひと手間加える必要があるので現時点では使えないですが、HTTPS化する方法もあとで解説します。
警告は出てても問題ありません。
終わったら確認と作成をクリックします。

![スクリーンショット 2020-09-18 23.38.50.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/bae8d3da-244c-37a4-9260-4571347aec4f.jpeg)

今まで行った設定が一覧で表示されます。
問題なければ起動をクリックします。
![スクリーンショット 2020-09-18 23.39.38.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/2d08e5a2-9ff8-cb90-83e7-a093e1c80fef.jpeg)

ローカルPCからAWS上のEC2(Linux)にssh接続するために必要な鍵を貰うために、新しいキーペアを作成します。
キーペア名はwordpressにします。
キーペアのダウンロードをクリックします。
![スクリーンショット 2020-09-18 23.41.51.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c728c715-dbcd-4b98-d2c7-8fe750a5cc57.jpeg)

キーペアのダウンロードが終わったらインスタンスの作成をクリックします。

![スクリーンショット 2020-09-18 23.42.49.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/fbeec3d1-7430-31be-b8c3-048a77e02bd9.jpeg)

AWSのEC2上でLinuxのインスタンスが作成されるまで数分かかるのでライバルズでもやりながら待ちます。

![スクリーンショット 2020-09-18 23.44.20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/8f125392-6295-03e7-edbc-2935ac6376d9.jpeg)

ライバルズをやりつつ、IPアドレスの固定化を行います。
これをしないと、IPアドレスがコロコロ変わってssh接続する時などに煩わしくなります。
インスタンスの表示をクリックしたあと、左のメニューからElasticIPをクリックします。

![スクリーンショット 2020-09-18 23.46.34.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/263f4945-4230-35b0-a8ba-7f43d01857a4.jpeg)

Elastic IPアドレスの割り当てをクリックします。
![スクリーンショット 2020-09-18 23.47.07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/03af33ba-db94-04cc-5d10-353a9410ef24.jpeg)

割り当てをクリックします。
![スクリーンショット 2020-09-18 23.47.23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/a6f9b0e2-3943-cbd2-aa2f-1b75ffd2eaa9.jpeg)

ElasticIPアドレスが正常に割り当てられたのでこのElasticIPアドレスを関連付けるをクリックします。

![スクリーンショット 2020-09-18 23.48.25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/dc1433fb-f848-5b6e-4b9c-0fefdab3ded0.jpeg)

インスタンスはWordPressインスタンスを選択(画像だとインスタンス名消えてるけど選択する時は表示される)します。
プライベートIPアドレスは仕組み上1つしかないのでそれを選択します。
終わったら関連付けるをクリックします。
![スクリーンショット 2020-09-18 23.50.15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/cc22cca9-8397-fbc6-4f4d-88935257bc63.jpeg)

これでWordPressインスタンスにElasticIPアドレスが割当たりました。

![スクリーンショット 2020-09-18 23.57.40.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/f127cd67-20af-3092-0ee6-1b1ea1fec1e0.jpeg)

ElasticIPは人によって異なるので読み替えてください。

ここでElasticIPアドレスの関連付けに失敗するようなら、VPCがインターネットと通信できるようにするためのインターネットゲートウェイがくっついていない可能性があります。つまりVPCの作成でミスってます。

あと、ElasticIPがどのインスタンスに割り当てられているのかあとで辿れるようにElasticIPに名前をつけておきます。

EC2の左のメニューからElasticIPを開きます。
![スクリーンショット 2020-09-19 14.08.13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/7bc58a81-6893-1503-9de6-8967f660414c.jpeg)

Nameのところにカーソルを合わせると編集ボタンが表示されるので、WordPressIPに変更しておきます。これをやっておかないと独自ドメイン作成する時にどのElasticIPを使うべきか判別がつかず困る可能性があります。僕は困りました。入力が終わったら保存をクリックします。

![スクリーンショット 2020-09-19 14.10.02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/66f29942-140a-c945-fb27-1a4ea1d552e4.jpeg)

これで、EC2にWordPressインスタンスを作成することができました。

![スクリーンショット 2020-09-19 12.26.39.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/479afa98-b69e-196a-5228-eb38c5d6cf25.jpeg)
※ElasticIPは人によって異なります。


## WordPressインスタンスにssh接続
WordPressインスタンスにソフトウェアをインストールするには、ssh接続が必要不可欠です。

ssh接続は相手の家にお邪魔する行為みたいなものです。
鍵なしでお邪魔することができるものもありますが、もし鍵がついてたら鍵を使って入ります。ちなみにWordPressインスタンスは鍵をつけた(というか絶対つけられちゃう)ので鍵が必要です。

WordPressインスタンスにssh接続します。
command+spaceでspotlight検索を呼び出し、terminal.appと入力してターミナルを起動します。

![スクリーンショット 2020-09-19 0.02.05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c8ce4e26-3004-d31f-d7aa-099281c22c01.jpeg)
![スクリーンショット 2020-09-19 0.02.14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/7b276d06-47bc-8a74-ddde-d2fc6ded5aa8.jpeg)

余談だけどspotlight検索作った人本当に天才
~~windows使いたくないまである~~

さっきssh鍵をダウンロードしたのでDownloadsディレクトリに移動し、.sshディレクトリに移動させましょう。良かれと思ってssh鍵を別のところに移動してしまった方はパスを読み替えましょう。

```terminal
cd
cd Downloads
mv wordpress.pem ../.ssh
```

このコマンドで.sshディレクトリにwordpress.pemが見当たらないようであれば、Finderを使ってwordpress.pemを.sshディレクトリ(隠しディレクトリなので注意)に移動させます。 

ssh鍵のある.sshディレクトリに移動します

```terminal
cd
cd .ssh
```

ssh鍵のパーミッションを変更しておきます。
元は644(rw- r-- r--)になっています。
ぶっちゃけ変更しなくても繋がっちゃいますが、セキュリティの観点から管理者の読み取りのみ許可する形(400=r-- --- ---)にします。
AWSも400にすることを推奨しています。
EC2インスタンス→インスタンス→接続→SSHクライアントの画面でそのことが確認できます。

証拠↓

![スクリーンショット 2020-09-19 1.03.39.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/d3e4115a-ed66-d5da-ab46-bc4e293fa0a6.jpeg)

下記コマンドでssh鍵のパーミッションを変更しちゃいましょう。

```
chmod 400 wordpress.pem
```

続いて、ssh接続します。
接続するのにElasticIPアドレスが必要なので、EC2のインスタンス画面でElasticIPを確認します。
IPアドレスは人によって異なるので読み替えます。

```terminal
ssh -i wordpress.pem ec2-user@18.181.12.140
```

これで繋がらない場合、VPCでインターネットゲートウェイとルートテーブルが繋がってない、もしくはサブネットとルートテーブルが繋がってない、もしくはその両方だと思います。

接続できたら初回は下記表示になります。

```terminal
The authenticity of host '18.181.12.140 (18.181.12.140)' can't be established.
ECDSA key fingerprint is SHA256:hogehogehogehogehogehogehogehoge.
Are you sure you want to continue connecting (yes/no)? 
```

yesを入力します。

```
yes
```

そしたら下記表示になり、無事ssh接続できたことが確認できます。

```terminal

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
```

ssh接続するとき、わざわざコピペで入力したりとか手打ちで入力したりとか馬鹿馬鹿しくて時間の無駄なので、clipyというソフトウェアをすぐさまダウンロードして下記スニペットを登録しておいて、どのディレクトリにいてもすぐさまssh接続できるようにしておきます。

```terminal
cd
cd .ssh
ssh -i wordpress.pem ec2-user@18.181.12.140
```


## WordPressインスタンスにApacheをインストール

WebサーバーにはNginxとかありますが、WordPressにはApacheが相性良さそうっぽいのでApacheをインストールします。

ソフトウェアのインストールする時にいちいちコマンドの先頭にsudoつけたくないので、あらかじめ管理者のrootに変更しておきます。

```
sudo su
```

そうするとデフォルトのユーザー名を表すec2-userからrootに表示が変わったことが確認できます。

続いて、Apacheをインストールするためにyumという便利ソフトウェアインストールツールのコマンドを使ってApacheをインストールします。

下記コマンド、httpdとなっていますが、これがApacheです。
実行します。

```
yum install -y httpd
```

インストールが終わったら、Apacheのバージョンを確認しておきます。

```
httpd -v
```

Server version: Apache/2.4.46 ()
Server built:   Aug 24 2020 18:54:20

と表示されました。
この記事では、Apacheのバージョンは2.4.46のようです。

これで、WordPressインスタンスにApacheをインストールできました。

## WordPressインスタンスでApache起動

おっと、Apacheを起動する前にGoogleChromeでIPアドレスをURL欄に直打ちしてみましょう。

18.181.12.140(ElasticIPは人によって異なるので読み替えてね)

![スクリーンショット 2020-09-19 1.36.53.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/50040a27-02d6-0c07-a83b-cdcf92704cfe.jpeg)

アクセスできませんね。そのことを確認したら、下記コマンドでWebサーバーApacheを起動します。

```terminal
systemctl start httpd
```

これでWordPressインスタンス上でWebサーバーであるApacheが起動しました。
GoogleChromeで更新ボタンを押します。

![スクリーンショット 2020-09-19 1.37.52.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/ccb3601f-83a5-2530-313e-de20c77a325c.jpeg)

Apacheのデフォルトページが表示されるようになりました。

また、EC2インスタンスが再起動すると停止してしまうので、自動起動設定にします。

```terminal
systemctl enable httpd
```

## WordPressインスタンスにPHPをインストール

WordPressはPHPで作られています。
プラグインもPHPで作成することができます。

なので、PHPのインストールと、あとライブラリが必要です。
下記コマンドを実行します。

```terminal
amazon-linux-extras install -y php7.3
yum install -y php-mbstring php-gd
```

amazon-linux-extrasはyumコマンドのAWS版と思って貰えればいいかと思います。WordPressのバージョンが上がって、普通のphpのインストールコマンドだと駄目なようです。

ライブラリは、1行目のコマンドでphp-mysql(DB用)、2行目のコマンドでphp-mbstring(文字化け防止用)とphp-gd(画像取り扱い用)が入りました。

```
php -v
```

PHP 7.3.21 (cli) (built: Aug 21 2020 21:12:16) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.21, Copyright (c) 1998-2018 Zend Technologies

と表示されました。
この記事では、PHPのバージョンは7.3.21のようです。

このままだとphpがインストールされたことがApacheに伝わっていないので、伝えるためにApacheを再起動します。

```
systemctl restart httpd
```

これで、WordPressインスタンスにPHPをインストールできました。

## WordPressインスタンスにMariaDBをインストール

WordPressを使う場合、データを保存するための場所が必要です。それがDBですね。
DBにもMySQLとかPostgreSQLとかありますが、MySQLの派生型であるMariaDBを使用します。

MariaDBのインストールコマンドを実行します。

```
yum install -y mariadb mariadb-server
```

MariaDBを起動します。

```
systemctl start mariadb
```

EC2インスタンスが再起動すると停止してしまうので、自動起動設定にします。

```terminal
systemctl enable mariadb
```

起動したらMariaDBのバージョンを確認してみます。

```
mysql -u root -e 'status ' | grep Ver
```

mysql  Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1

と表示されました。
この記事では、MariaDBのバージョンは15.1のようです。

これで、WordPressインスタンスにMariaDBをインストールできました。

## WordPressインスタンスのMariaDBのパスワードを変更

MariaDBにパスワードを設定しておかないと危ないので設定しておきます。

まずはMariaDBのプロンプトを開きます。

```
mysql -u root -p
(passwordの入力を求められたら空でEnter)
```

続いて、下記コマンドでパスワードを設定します。
'新しいパスワード'となっている部分は自分で設定します。

```sql
update mysql.user set password=password('新しいパスワード') where user = 'root'; flush privileges;
```



## WordPressインスタンスに必要なデータベースの作成

以下の設定でデータベースを作成します。

| 設定値 | 値 |
|:--|:--|
|ユーザー名|wordpress|
|パスワード|(好きなパスワード)|
|データベース名|wordpressdb|


※MariaDBのプロンプト上で操作。

確認のためにデータベースを表示します。

```sql
show databases;
```

下記の表示になっていたらOKです。

```
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
```

まずはユーザーとパスワードを作成します。

```sql
create user 'wordpress'@'localhost' IDENTIFIED BY '(好きなパスワード)';
```

続いて、WordPress用のデータベースを作成します。

```sql
create database wordpressdb;
```

続いて、作成したユーザーに対して作成したデータベースの全権限を与えます。

```sql
grant all privileges on wordpressdb.* to 'wordpress'@'localhost';
FLUSH PRIVILEGES;
```

再度確認のためにデータベースを表示します。

```sql
show databases;
```

下記の表示になっていたらOKです。

```
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wordpressdb        |←NEW!!
+--------------------+
```

これで、WordPressインスタンスに必要なデータベースが作成できました。

下記コマンドでMariaDBのプロンプトを終了しておきます。

```sql
exit
```

## WordPressインスタンスにWordPressをインストール

WordPress用の作業ディレクトリを作成します。
作業が終わると不要なディレクトリになることを念頭に置いておくといいと思います。
※ssh接続時の入力になっていることを確認

```
mkdir /home/wordpress
cd /home/wordpress
```

WordPressはyumではインストールできないので、wgetを用いてWordPressの圧縮ファイルを取得します。
<font color="red">※latest(最新)を取得しているので、このあとの手順は時代によって異なるかも。すまん。</font>

```
wget https://wordpress.org/latest.tar.gz
```

.tar.gzのままになっているので解凍します。

```
tar xzvf latest.tar.gz
```

Apacheから見える場所にWordPressのデータを切り取って/var/www/html配下に全てペーストします。

```
mv wordpress/* /var/www/html/
```

Apacheユーザーに、先ほどWordPressのデータを置いた/var/www/htmlの書き込み権限を与えます。

```terminal
chown apache.apache -R /var/www/html
chmod +w -R /var/www/html
```

終わったら、GoogleChromeでWordPressの設定ができるようになります。

GoogleChromeで18.181.12.140(ElasticIPは人それぞれ異なるので読み替えてね)とURL欄に入力するとWordPressの初期設定画面が開きます。

パスは勝手にhttp://18.181.12.140/wp-admin/setup-config.php になります。

Let's go!をクリックします。
![スクリーンショット 2020-09-19 3.30.26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/a2462b46-d71f-2f54-851a-87e5a5fafd27.jpeg)

下記の設定にしてSubmitをクリックします。
パスワードはMariaDBで設定したパスワードにします。
<font color="red">下記画像だと好きなパスワードとなっていますが、MariaDBで設定したパスワードの間違いです</font>

![スクリーンショット 2020-09-19 3.33.06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/96c79419-12f3-c89a-b9e4-d1bacff673f7.jpeg)

wp-config.phpファイルが/var/www/htmlの中に無いから作成して下記を貼り付けてねと怒られます。

![スクリーンショット 2020-09-19 3.35.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/031a680e-465d-4b89-fae4-c155bbb57991.jpeg)

下記コマンドでwp-config.phpを作成し、権限をapache.apacheに変更し、viエディタで開きます。
※sudo suで管理者であるrootユーザーになっていることを確認。

```
cd /var/www/html/
touch wp-config.php
chown apache.apache wp-config.php  
vi wp-config.php
```

viエディタが開いたら、先ほどのWordPressのテキストをCommand+Vで貼り付け、「:wq」を入力して保存し閉じます。

Run the installationをクリックします。

![スクリーンショット 2020-09-19 3.41.51.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/0f10d052-4140-f5f8-b6a5-ff003a962988.jpeg)

下記の画面になるので、必要事項を入力します。

Site Title:ブログ名を入力

Username:英文字と記号で

Password:パスワード

Your Email: メールアドレス

終わったらInstall WordPressをクリックします。
![スクリーンショット 2020-09-19 3.46.16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c024e8a4-fc82-5f4a-ce0a-b259c0e6eacc.jpeg)

これでインストール完了です。
ログインをクリックします。

![スクリーンショット 2020-09-19 3.52.42.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/37fd0c39-e250-2856-4558-12d01ab42f21.jpeg)

先ほど設定したユーザー名とパスワードを入力してログインできることを確認します。

![スクリーンショット 2020-09-19 3.53.20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c300e0bd-20d9-5a6a-e0f9-88091051b6fe.jpeg)

管理画面を開くことができました。

![スクリーンショット 2020-09-19 3.54.20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/5423cb4f-dcd3-6921-20c0-3fe887c39c0e.jpeg)

以上で、WordPressインスタンスにWordPressをインストールできました。

英語だと分かりづらいので日本語化します。
左のSettingsから、SiteLanguageを日本語にしてSaveChangesをクリックします。

![スクリーンショット 2020-09-19 4.17.41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/418a2f66-e72d-6fc9-4f7c-76b073c586f0.jpeg)

無事日本語化できました。

![スクリーンショット 2020-09-19 4.18.25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/7127c1f5-0cb1-9cc2-7858-ff9db95dfe03.jpeg)

これは管理画面なので、一般ユーザーから見た時にどう見えるかをチェックしてみます。
18.181.12.140(人によって異なるので読み替えてね)にアクセスしてみます。

![スクリーンショット 2020-09-19 4.19.23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/904a5f97-9770-c81e-e67f-5e0cdcaa7948.jpeg)

ログイン中なのでいくつか管理者用のリンク表示されていますが、一般ユーザーからどう見えるかを確認することができました。

バージョンを確認します。
http://ElasticIPアドレス/wp-admin/index.php を開き、概要をチェックします。
<font color="red">Qiitaの仕様でリンクになってしまったけど開かないので注意</font>

![スクリーンショット 2020-09-19 13.04.02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/8cfb7b92-eeb0-ba72-846c-70db6211c783.jpeg)

この記事では、WordPressのバージョンは5.5.1のようです。

## 独自ドメイン化

<font color="red">お金かかります。また、手続き上の問題で最大3日かかります。</font>

IPアドレスでアクセスするのも不格好なので、独自ドメインを作成しちゃいましょう。
独自ドメイン化をするにはAWSのRoute53を利用します。

Route53を開きます。

![スクリーンショット 2020-09-19 13.46.50.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/8a3f78e1-20b2-d50a-f7c0-01521e1541d6.jpeg)

独自ドメインを持っているかどうかで多分表示が変わるのですが、僕は既に持っているので初めて独自ドメインを作成する方とは表示が異なるかと思います。多分。

パンくずりすと(Route53 > ダッシュボード)のところにあるRoute53をクリックします。

![スクリーンショット 2020-09-19 13.49.51.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/0c67c40d-4d38-74bc-3803-b4e7bc24d8ce.jpeg)

ここから多分一緒かな？

Route53の使用開始のところにある開始するをクリックします。
![スクリーンショット 2020-09-19 13.50.39.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/b9d115b5-4095-88f4-a664-c4c448ae16e2.jpeg)

ドメインを登録を選択して開始するをクリックします。

![スクリーンショット 2020-09-19 13.51.33.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/83214e2a-e493-8b8a-86c9-47b4f686437e.jpeg)

好きなドメイン名を入力してチェックします。
世界で同じものは2つ作成できないのでチェックをクリックして、重複がなければカートに入れます。
<font color="red">12ドルかかりますが、下手なもの作ると100ドルとかかかっちゃうので超注意！こだわらずに.comにしておけばいいです。</font>

![スクリーンショット 2020-09-19 13.54.42.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/406d288d-b12d-b1b4-f9c9-39974a98c494.jpeg)

一番下までスクロールして続行をクリックします。

![スクリーンショット 2020-09-19 13.55.06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/3381cd53-5f72-9635-aa0e-ba3a024b05b7.jpeg)

個人情報を入力していきます。少し長め。
![スクリーンショット 2020-09-19 13.56.03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/f8c1d718-60fb-3b22-cffe-61facebce17a.jpeg)
※バキバキ個人情報丸出しになっちゃうのでここまでしか見せられないよ！

完了したら一番下までスクロールして続行をクリックします。
![スクリーンショット 2020-09-19 13.59.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/a1d84917-8e31-5641-58ee-953962616992.jpeg)

ドメインは自動更新有効化にしておくと自動で課金は継続しますが便利です。
規約のところにチェックを打って注文を完了をクリックします。

![スクリーンショット 2020-09-19 13.59.47.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/b5c4ba6b-e928-4474-4e6a-6894f5673842.jpeg)

チャリーン(12$飛ぶ音)
![スクリーンショット 2020-09-19 14.01.25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/f59cd1b2-3a43-4df3-dce2-4a2c473eadf3.jpeg)

もしかしたら人によってはここでメールを送ったので確認してくださいみたいな画面に飛ぶかも。
僕は2つ目の独自ドメイン購入なので出ませんでした。

閉じるをクリックしたあと以下の画面が表示されると思いますが、記載の通り最大で3日かかります。また、登録完了するとEメールが届きます。できなくてもEメールが届きます。
![スクリーンショット 2020-09-19 14.03.30.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/f2e2f6c3-6d69-8dff-0668-726a2151da18.jpeg)

ちなみに僕は数分ほどでドメインの登録完了のメールが届きました。
人によって登録完了までの時間はまちまちです。本当に。

Route53のホストゾーンから先ほど作成したドメインが確認できるので、クリックして開きます。

![スクリーンショット 2020-09-19 14.17.02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/b96b5904-d192-572d-ac7a-080cb20feafd.jpeg)

レコードを作成をクリックします。

![スクリーンショット 2020-09-19 14.18.19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/93814fc7-045c-a010-dd09-e223ceea03db.jpeg)

シンプルルーティングを選択して次へをクリックします。

![スクリーンショット 2020-09-19 14.18.57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/65d24bf9-223c-2039-077e-3d3f28aadb7c.jpeg)

シンプルなレコードを定義をクリックします。
![スクリーンショット 2020-09-19 14.20.57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/e1e05ada-81fc-9ff4-4ed8-35a08574f180.jpeg)

レコード名をblogs、
ルーティング先の種類をIPアドレス、
ルーティング先の値をElastic IPアドレス、
レコードタイプをAのIPv4アドレス、
TTLはそのままにしておきます。

入力が終わったらシンプルなレコードを定義をクリックします。

![スクリーンショット 2020-09-19 14.24.55.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/986ef1b8-56ea-51ba-f0e6-3c8e7ee41e76.jpeg)

忘れがちですが右下のレコードを作成をクリックします。
![スクリーンショット 2020-09-19 14.27.06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/e279becc-1054-9542-7937-bb75ec35813b.jpeg)

一番下にレコードが作成できました。

![スクリーンショット 2020-09-19 14.28.08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/d16889a1-5b47-40b4-cf21-f18dc05ba072.jpeg)

これで、独自ドメイン化は完了です。

~~以下のリンクから僕のWordPressが開けます。~~
<font color="red">https化したのでもう開けません。</font>


~~http://blogs.jinsei-kouten.com/~~

Route53の画面は日々変わるのでノウハウが蓄積しづらいのが難点です。
僕が結構昔にやった独自ドメインの作成方法のノウハウはあまり役に立ちませんでした。はぁ・・・。

## https化

「http://〜」になってるものにアクセスすると保護されてない通信とかアピールされてめっちゃ鬱陶しいです。
その鬱陶しい表示を消すために(それ目的でやる訳ではないですがｗ)https化します。

やることは以下の通りです。

①AWS Certificate managerで証明書の作成
②ロードバランサーの構成

やりたいことはめちゃくちゃ単純なのにやることは結構難しいです。
気合が必要です。
1回やれば十分なのでレッドブル飲んで臨みます。

Certificate Managerを開きます
![スクリーンショット 2020-09-19 14.55.43.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/58092b72-0dec-9b2c-622b-29dc27033faf.jpeg)

これまた今まで証明書を作成したことがあるかどうかで表示異なるかと思いますが、証明書のリクエストをクリックします。

![スクリーンショット 2020-09-19 14.58.01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/d3098935-1775-bd66-9873-9c856eede3fc.jpeg)

パブリック証明書のリクエストをクリックして証明書のリクエストをクリックします。

![スクリーンショット 2020-09-19 14.58.37.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/e3d2e32b-9a5c-6ab0-7c8f-12e833cd4a90.jpeg)

先ほど作成したドメイン名を入力して次へをクリックします。
僕の場合はblogs.jinsei-kouten.comです。
<font color="red">自動入力機能がないので不便。</font>

![スクリーンショット 2020-09-19 14.59.26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/40f88f0b-6af9-6c71-ed38-d8f988050eac.jpeg)

DNSの検証にして次へをクリックします。

![スクリーンショット 2020-09-19 15.01.04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/75734d7d-9558-171b-e4a6-1b8d16d52f6a.jpeg)

管理しやすいように証明書に名前をつけておきます。
タグ名をName、値をWordPressCertificateにします。
確認をクリックします。

![スクリーンショット 2020-09-19 15.01.54.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/e6cc706b-673a-e471-ac8f-e22f0614e0d0.jpeg)

作成をクリックします。

![スクリーンショット 2020-09-19 15.05.32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/226e3fdc-e494-968a-df4a-b835caca9a2e.jpeg)

確認画面が表示されます。
確定とリクエストをクリックします。

![スクリーンショット 2020-09-19 15.02.46.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/a5e30a2e-7f6d-30ba-4e71-664ef8927d03.jpeg)

下記の画面が表示されますが<font color="red">続行はまだクリックしません。</font>


![スクリーンショット 2020-09-19 15.03.29.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/dfe7dcd7-9eb4-7e33-ee65-9ce37d143b2a.jpeg)

blogs.jinsei-kouten.comをクリックして詳細を開き、Route53でのレコードの作成をクリックします。

![スクリーンショット 2020-09-19 15.04.57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/a8ef9049-6e17-4ea8-8629-e0d1e51b6036.jpeg)

Route53でCNAMEレコードを追加してくれるので作成をクリックします。
最大で30分かかりますが、30分以内にこの証明書が使えるようになります。

![スクリーンショット 2020-09-19 15.06.23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/55e4b934-89d7-97f5-8b02-b87b1a91f92b.jpeg)

続いて、ALBを追加します。
Application Load Balancerの略です。

今こんな感じになっていると思います。

![スクリーンショット 2020-09-19 15.10.23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/081e9106-80fc-2b95-7958-9c5b7faa2baf.jpeg)

証明書はALBにしかくっつけれません。
そのため、ALBの追加が必要不可欠です。
しかも、ALBを作成する場合は2つ以上のサブネットを指定する必要があります。
<font color="red">サブネットは1つしか作ってなかったからもう一つ作るのめんどくさいなって</font>
なので、以下の形に変化します。

![スクリーンショット 2020-09-19 15.36.27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/0012c7ec-2edc-db0d-476a-95e44ce70032.jpeg)

まずは、サブネットを作成しに行きます。

VPCを開き、サブネットの作成をクリックし、以下のように入力して作成をクリックします。
名前タグはWordPressサブネット2にしました。
VPCはWordPressにします
アベイラビリティーゾーンはWordPressサブネットとは異なるものにします。
IPv4 CIDRブロックは172.168.32.0/20にします。

![スクリーンショット 2020-09-19 15.37.58.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/5a2f6860-46ad-503a-e1bf-b879710c88cf.jpeg)

サブネットを作成したので、ルートテーブルに関連付けなければなりません。でないと、二分の1の確率でアクセスに失敗します。

VPCのルートテーブルのサブネットの関連付けからWordPressルートテーブルを選択してサブネットの関連付けの編集をクリックします。

![スクリーンショット 2020-09-19 19.36.09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/79b9939d-09fd-2a69-3778-e4acac90344b.jpeg)


WordPressサブネット2が未選択状態かと思いますので選択して保存をクリックします。

![スクリーンショット 2020-09-19 19.37.15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/09220ed0-92d9-b124-7fdb-71603403baa9.jpeg)

これでルートテーブルにWordPressサブネット2が関連付けられました。

続いて、ALBを作成しに行きましょう。
ALBはEC2から作成できます。

左のメニューからロードバランサーをクリックします。
![スクリーンショット 2020-09-19 15.19.41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c195fe7f-32d7-0895-a927-b780f7a12925.jpeg)

ロードバランサーの作成をクリックします。

![スクリーンショット 2020-09-19 15.20.22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/694d75de-c2d3-3dc9-d421-c121401aab34.jpeg)

一番左のApplication Load Balancerの作成をクリックします。


![スクリーンショット 2020-09-19 15.20.45.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/d71e75ba-8d69-a61f-d8bd-ed15030df4e7.jpeg)

名前は分かりやすいようにWordPressALB
スキームはインターネット向け
IPアドレスタイプはipv4
リスナーはHTTPS接続するのでHTTPS
ポートはHTTPSの標準が443なのでそのまま
VPCはWordPress
アベイラビリティーゾーンは2つとも選択し、WordPressサブネットとWordPressサブネット2を選択します。


入力が終わったら次の手順：セキュリティ設定の構成をクリックします。

![スクリーンショット 2020-09-19 15.22.25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/4f503484-099d-e17c-87f0-75c87040d132.jpeg)

ACMから証明書を選択する(推奨)を選択し、証明書の名前を先ほど作成した証明書を選択し、セキュリティポリシーはデフォルトのままにします。
次の手順:セキュリティグループの設定をクリックします。

![スクリーンショット 2020-09-19 15.44.58.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c88dc495-c9df-1ef1-b743-611044659ca5.jpeg)

既存のセキュリティグループは選ばずに、新しいセキュリティグループを作成します。

セキュリティグループ名は分かりやすい名前にするためにWordPressALB-sgにします。説明はWordPress HTTPSにしておきます。

あとは自動でHTTPS用のセキュリティグループが作成できるため、下の設定は弄らずに次の手順:ルーティングの設定をクリックします。

![スクリーンショット 2020-09-19 15.48.06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/26c9b6e5-db90-bc85-b33d-d4c9b1c1c873.jpeg)

続いてルーティングの設定をします。
ターゲットグループを新しいターゲットグループにします。
名前はWordPressTargetにします。
ターゲットの種類はインスタンスにします。

プロトコルはHTTP、ポートは80のままにします。
<font color="red">なぜならインターネットからALBへはHTTPS接続するのですが、ここで設定しているのはALBからEC2への接続だからです。それはHTTP接続で問題ありません。</font>

ヘルスチェックはそのままにします。
入力が終わったら次の手順：ターゲットの登録をクリックします。

![スクリーンショット 2020-09-19 15.50.27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/232af643-33ba-0bcb-68c7-f080bc2cf082.jpeg)

下記画面、あまり操作性が好きでないのですが、WordPressインスタンスを選択したあと、登録済みに追加という青いボタンをクリックしてから次の手順：確認をクリックします。

![スクリーンショット 2020-09-19 15.55.03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/9e5409e0-748c-858c-3ed5-7101e5c133f6.jpeg)

確認画面が出るので作成をクリックします。

![スクリーンショット 2020-09-19 15.56.04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/271c2e95-7b77-5691-82a6-d7302729f419.jpeg)

ロードバランサーの作成が完了しました。

![スクリーンショット 2020-09-19 15.57.13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/fa85e3fb-0519-d178-cdc3-247139bb4500.jpeg)

まだやることあるんですねぇ〜・・・。
次はRoute53での設定が必要です。
なぜなら、Route53はEC2インスタンスを指しているのですが、これをALBを指すように変更しなければなりません。

Route53を開いてホストゾーンを開いてblogs.jinsei-kouten.com開いてblogs.jinse-kouten.comのAレコードとなっているもの(つまりさっき独自ドメイン化の時に作ったレコード)を選択して編集をクリックします。

![スクリーンショット 2020-09-19 15.59.21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/598060cc-ff03-e7ad-11e4-3468c846423c.jpeg)

元々IPアドレスを設定していたと思いますが、ALBに変更します。
値/トラフィックのルーティング先をApplication Load BalancerとClassic Load Balancerへのエイリアスに変更します。
リージョンは東京
ALBは〜.WordPressALB-〜となっているものを選択します。

![スクリーンショット 2020-09-19 16.02.11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/c3c71b6f-8b18-68df-09b4-088ae52dd343.jpeg)

完了したら変更を保存をクリックします。

これで一度アクセスします。

https://blogs.jinsei-kouten.com/

この時点では、下記画像の表示のように崩れます。(このQiitaが公開されている頃には治っていると思いますが)

![スクリーンショット 2020-09-19 16.07.30.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/ee54d786-355d-49b4-3a78-600a86f24b48.jpeg)

そういうものです。
崩れる理由は、WordPress上の設定URLと実際にアクセスできるURLに相違があるためです。

これを直すためには以下の2通りのやり方があります。
~~①GUIでの操作。現時点でまだできるhttp接続でWordPressの設定画面(まだ表示が崩れてない)に行き、設定からWordPressアドレス(URL)とサイトアドレス(URL)を書き換える~~ <font color="red">駄目でした</font>
②CUIでの操作。ssh接続でEC2にアクセスし、cdとかviとか駆使して/var/www/html配下にあるwp-config.phpを書き換える

~~②でやるほうがエンジニアっぽいですが僕はそこにこだわりが無いので簡単な①で変更します。~~

~~http接続で下記にアクセスします。<font color="red">ElasticIPアドレスは人によって異なるので読み替えます。</font>~~
~~http://ElasticIPアドレス/wp-admin~~
~~僕の場合は~~
~~http://18.181.12.140/wp-admin~~
~~です。~~
~~読んでる方は違います。~~
~~ログインできなかったらログインして、左のメニューから設定をクリックします。~~

![スクリーンショット 2020-09-19 16.18.51.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/212a1abf-02b4-4947-0df9-991ce347071c.jpeg)

~~WordPress アドレス (URL)とサイトアドレス (URL)を書き換えます。~~
~~僕の場合は https://blogs.jinsei-kouten.com/ です。~~

![スクリーンショット 2020-09-19 16.21.26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/2ba07f19-ac63-2caf-2f03-84fe86cf5d13.jpeg)

~~一番下までスクロールして変更を保存をクリックします。~~

![スクリーンショット 2020-09-19 16.22.04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/8ee2d4d4-03b5-cbf2-fa83-ccf1b4d96ed1.jpeg)

~~GAME OVER~~

①の方法だと失敗したので仕方なく②の方法に切り替えます。


ターミナルでssh接続

```
cd
cd .ssh
ssh -i wordpress.pem ec2-user@18.181.12.140
```

管理者権限でwp-config.phpを開きます。

```
sudo su
cd /var/www/html
vi wp-config.php
```

iを押して入力モードにし、下記3行を追記します。

```php

<?php
define('WP_HOME','https://blogs.jinsei-kouten.com/');
define('WP_SITEURL','https://blogs.jinsei-kouten.com/');
$_SERVER['HTTPS'] = 'on';

/**
 * The base configuration for WordPress
：
略
```

escで入力モード解除して:wqで保存して閉じます。

これやってしまうとWordPressのGUIの設定画面からはもう設定できなくなるのでやりたくなかったんだよなぁ・・・。
$_SERVER['HTTPS'] = 'on';に当たる部分の設定が見当たらなかったので致し方なし。

それでは下記にアクセスしてみます。

https://blogs.jinsei-kouten.com/

![スクリーンショット 2020-09-19 16.55.27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/dd8e6760-0332-d050-0e42-458146a0ab85.jpeg)

表示崩れが解消されました。

現時点だとまだhttp接続できてしまうので、セキュリティグループからhttp接続をなくしちゃいましょう！

EC2のセキュリティグループからWordPress-sgを選択してアクションをクリックし、インバウンドルールを編集をクリックします。<font color="red">WordPressALB-sgはALBとEC2間の接続の設定なので関係がありません。インターネットとEC2の接続を管理しているWordPress-sgのみ修正の必要があります。</font>

![スクリーンショット 2020-09-19 16.58.07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/a9897314-a9e5-37e4-63df-ad8815017dbe.jpeg)

HTTPのインバウンドルールを2つとも削除します。

![スクリーンショット 2020-09-19 17.01.13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/d2de5ee6-8737-64c4-0160-6e0b8152aa7e.jpeg)

でも、ALBからはHTTP接続されるのでHTTPのインバウンドルールは必須です。でもソースを0.0.0.0/0にしてしまうといたちごっこになってしまいますね・・・。

では、こちらの図を思い出しましょう。

![スクリーンショット 2020-09-19 17.10.23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/85241dc6-e9f8-e2d6-5d1d-147990b9e0c1.jpeg)

ALBはどこにいますか？<font color="red">172.168.0.0/16の中にいますよね？</font>

なので、172.168.0.0/16からのHTTP接続を許可しましょう。
最終的には以下の形になります。ルールを保存をクリックします。

![スクリーンショット 2020-09-19 18.13.42.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646483/29e9c7a8-970a-8bf4-9e67-3a1c0a13f6ea.jpeg)


最終確認です。下記3パターンで①②が繋がらず、③④が接続できれば成功です。
[繋がらないパターン]
①18.181.12.140に接続する
②http://blogs.jinsei-kouten.com/ に接続する
[繋がるパターン]
③https://blogs.jinsei-kouten.com/ に接続する
④https://blogs.jinsei-kouten.com/wp-login.php に接続する

①②が繋がらず、③④が繋がりました。

つまり、成功です！

以上が、VPC+EC2+Apache+MariaDBでWordPressを構築し、独自ドメイン+https化するやり方でした。

あとは好きなようにWordPressを弄り倒してしまいましょう！

お疲れ様でした！

## なんか繋がりにくい？
GoogleChromeだと問題なく繋がるけど他のブラウザだと結構な頻度で繋がらない現象が発生。

嬉しすぎてレバテックフリーランスのエージェントさんにLINEでWordPressのURL送ったら繋がりにくくてそこで発覚。
70％くらいの確率で接続に失敗。

Safariでも同様の現象発生するっぽいので試してみたらこれも接続失敗の嵐。たまに繋がる。

訳わからなさすぎたので調べたら参考になりそうな記事がありました。
https://qiita.com/t-kigi/items/0723cd7c26472746d389
https://dev.classmethod.jp/articles/resolve-safari-and-alb-https-connection-errors/

インターネットからALBへはhttp/2.0を使うけどALBからEC2インスタンスへはhttp1.1が使われるのでたまに接続に失敗するとのこと。

とりあえず僕は以下の手順を踏みました。

WordPressインスタンスにSSH接続

```
cd
cd .ssh
ssh -i wordpress.pem ec2-user@18.181.12.140
```

下記コマンドを実施

```
yumdownloader --source mod_http2
sed -i -e "s/^LoadModule/#LoadModule/g" /etc/httpd/conf.modules.d/10-h2.conf
cat /etc/httpd/conf.modules.d/10-h2.conf
sudo systemctl restart httpd
```

3行目のcatで# LoadModule http2_module modules/mod_http2.soと出ます。

これでやってみたところ、今の所100回中100回接続に成功するようになりました。

## 終わりに
用語の解説とかほぼ省いているので、詳しく知りたい方はコメントくだされば解説します。(例:ElasticIPってなに？ sudoってどんな意味？なんの略？ パーミッションって？などなど)
必要な部分であれば全て解説できます。(AレコードとかCNAMEはうまく説明できるか怪しいかも・・・すみません・・・)
また、つまずいた部分は質問いただければ答えます。ただし、そちらは条件があります。最初から手順書を残して、その手順書も合わせて送っていただいた方限定でお答えします。最初から手順書を作っているだけで9割は解決しますので。

最後まで読んでくださり、ありがとうございました。