【完全版】AWSでWordPress[Cocoon]を始める手順

WordPressアイキャッチ画像

AWS EC2で無料の大人気テーマCocoonを使ってブログをホストする手順をご紹介します。CloudFrontを使ったSSL化、Route53を使用した独自ドメイン使用手順を紹介するのでこの記事の手順を実施すればすぐにブログをはじめて広告収入を得る基盤を作成できます。

Cocconは無料ながらSEO対策がされた使いやすいテーマです。

CloudFrontを利用する際の必須の設定も紹介します。

この記事でできること
・AWSを駆使してすぐにブログをはじめられます。
・AWSのCDNであるCloudFrontを利用してページ読込の高速化、DDOS対策を行います。
・Route53を利用した独自ドメインを利用できます。
・月額の運用費も紹介します。

AWSのアカウント開設は完了している前提で記載していきます。

目次

はじめに この記事で構築する構成とAWSでWordPressを作成するメリット

この記事で構築する構成

Route53+CloudFront+EC2のアーキテクチャ図(この記事で作成するアーキテクチャ)
この記事で構築する環境

それぞれのコンポーネントの役割を説明します。

Route53

独自ドメインの払い出しとDNSの役割をします。独自ドメインの宛先をCloudFrontのドメインにエイリアスレコードで向けます。

CloudFront

CDNの役割を果たします。コンテンツをキャッシュすることでEC2の負荷軽減とページ読込の高速化ができます。DDos対策としても有用です。ここでは設定しませんが、AWS WAFの設定も容易となります。

EC2

WordPressを動かすサーバー本体です。WordPressで利用するDBもここにインストールして利用します。

EBS

EC2から利用するディスクの役割を果たします。気軽にバックアップ、スケールアップ、スケールアウトができるのが魅力です。

SecurityGroup

EC2とEBSの保護を行うファイアウォールです。メンテナンス中は22番ポート(SSH)をオープンしますが、それ以外はCloudFrontからの通信のみを許可します。

AWSでWordPressを作成するメリット

サーバを借りてホストする場合と比較して以下のメリットがあるかと思います。(※筆者はレンタルサーバーについて詳しくないので参考までにおとらえください。)

スモールスタートが可能

手軽に始めることができ、最初は小さなインスタンスから始められます。ホームページの人気が出てきてよりパワーのあるインスタンスが必要になったら数クリックでスケールアップすることができます。スケールアップ時、工夫すれば無停止での移行も容易です。

バックアップが容易

数クリックでバックアップの取得、復元ができます。コンポーネントのバージョンアップや設定の変更などで調子が悪くなったらすぐに元に戻すことができます。
調子が悪くなったらEC2停止→起動を行うと別のサーバで動作するのでハードウェア不良の心配もありません。

設定の自由度が高い

AWSを勉強すれば大抵のことは何でもできます。

利用料が安価

今回の構成でもAWS無料利用枠をガンガン使っていく構成にしています。EC2についてはリザーブドを使用することで3年間で172ドル、月当たり約620円で利用することができます。(※1ドル130円で計算しています。t2.micro東京リージョン)

いつでもやめることができる

作成したリソースは削除すれば利用料金がかからなくなります。EC2でリザーブドインスタンスを購入した場合も出品して費用を回収することができます。

他の利用者の影響を受けない

レンタルサーバーを利用している方の声を聞くと、ほかの利用者の影響で通信が遅くなるということがありますが、AWSでは影響を受けません。

月額運用費用

目安としてご覧ください。筆者がここの手順で作成した環境を数日運用して発生した金額を月額で集計しました。1ドル130円で計算しています。

EC2は3年間のリザーブドインスタンスを月額平均で算出しています。

ドメインは1年契約のものを月額で計算しています。

CloudFrontは月当たり1TBまで無料です。詳しくはこちら

初年の無料利用枠は無視して計算しています。(おそらく初年度はすべて無料枠内で収まります。)

項目 ドル 円(目安)
EC2 $4.78 621円
Route53 ドメイン(.com) $1.00 130円
Route53 HostedZone $0.50 65円
EBS(gp3 8GB) $0.60 78円
CloudFront $0.00 0円
1か月の運用費例

合計894円となりました。レンタルサーバーと比較するとサーバースペック次第ですが安いといえるのではないでしょうか。加えて無料利用枠を使うと12か月は無料です!
レンタルサーバーと比較してストレージ(EBS)が少ないですが、例えば100GBにすると約1,248円となります。
使わないうちにEBSを大きくするのはもったいないので、足りなくなったらサイズアップするのがおすすめです。

EBSの料金:0.096USD/GB 月

EC2インスタンスの作成

WordPressを動かすサーバーを作成します。まずはAWSマネジメントコンソールにログインします。
リージョンを選択してEC2→インスタンス→インスタンスを起動を選択します。

リージョンはどこにしても動作しますが、速度のことを考慮して東京を選択するのをおすすめしています。

インスタンスの設定

インスタンスを起動画面に遷移すると設定項目が表示されます。以下を選択してください。ほとんどデフォルトです。

名前

好きな名前(あとから変更可能です。)ここではWP-TESTとしています。

アプリケーションおよび OS イメージ (Amazon マシンイメージ) デフォルト

Amazon Linux 2

インスタンスタイプ デフォルト

t2.micro

キーペア

作成済みであればそれを使用してもOKです。作成していない場合は新しいキーペアを作成を選択して作成してください。
作成するのであれば名前以外はデフォルトの設定で問題ありません。作成後、ローカルにダウンロードされます。
EC2にSSH接続するときに必要になります。絶対に公開しないようにしてください。

ネットワーク設定

日本語がおかしいですが、以下を選択します。

セキュリティグループを作成する
からの SSH トラフィックを許可する:任意の場所
インターネットからのHTTPトラフィックを許可 ←こちらは動作確認用です。後の設定でCloudFrontからのアクセスのみに変更します。

ストレージ

8GB gp3 ※容量が足りなくなってきたら変更可能。

インスタンス数 デフォルト

1

上記を選択出来たらインスタンスを起動を押下します。

マネジメントコンソールでEC2インスタンスを起動する画面
EC2の起動

マネジメントコンソールの画面は予告なく変更になる可能性があります。

EC2→インスタンスの画面に行くと、インスタンスが確認できます。

起動まで1分程度時間がかかる場合があります。

EIPの払い出し

EIPを割り当てていない場合、起動停止ごとにIPアドレスが変わってしまいます。不便なのでIPアドレスを固定します。
EC2→ネットワーク & セキュリティ→Elastic IP を選択します。画面右上のElastic IP アドレスを割り当てるを押下してIPアドレスを払い出します。設定はデフォルト(IPv4でOKです。)割り当てを押下してEIPを払い出します。

EIPをEC2に割り当てる

EC2にEIPを割り当てるためにEC2インスタンスを停止します。EC2を選択して右クリックから停止を選択します。

EC2を停止する画面
EC2インスタンスの停止

しばらくすると停止済みになります。停止済みになったらEC2→ネットワーク & セキュリティ→Elastic IPにアクセスしてEIPを選択してElastic IP アドレスの関連付けを押して対象のEC2に割り当てを行います。

EIPをEC2に割り当てる画面
EIPの割り当て

遷移した画面では対象のEC2インスタンスを選択します。

EIPをEC2に割り当てる画面(詳細)
インスタンスの選択

EC2インスタンスの起動

再びEC2→インスタンスの画面に行きインスタンスを起動します。EC2を選択してインスタンスを開始を選択します。しばらくすると実行中になります。
EC2サーバの基盤回りの設定は以上です。

EC2インスタンスにWordpressをインストールする

ここからはEC2にSSHログインして作業を開始します。筆者は使い慣れているTeraTermを使用していますが接続できればセッションマネージャーなどでも問題ありません。
TeraTermのダウンロード、インストールはこちらからお願いします。

以降はTeraTermを使って説明しますが、SSHできるものであれば手順は変わりないかと思います。

EC2インスタンスにSSHログイン

EC2のグローバルIPアドレスを確認します。EIPの払い出しで払い出ししたIPアドレスです。

プライベートアドレスと間違えないように気を付けてください。

EC2へTeratermで接続する画面
TeraTermでSSH接続
ユーザ名

ec2-user

パスフレーズ

入力なし

認証方式

RSA/DSA/ECDSA/ED25519鍵を使う

秘密鍵

インスタンスの設定で作成したキーを選択

TeratermでEC2にログインする画面
SSHの認証

OKを選択して接続します。するとこんな画面が表示されてログインできます。

TeratermでEC2にログインした画面
SSHログイン

ここでログインできない場合はインスタンスの設定のセキュリティグループ設定でSSHを許可できているか確認してください。

Apacheのインストール

WordPressを動かすWEBサーバのインストールを行います。SSHログインしたコンソールに以下を入力してください。

sudo yum install httpd -y

Complete!と表示されたら成功です。続いてApacheの起動を行います。

sudo systemctl start httpd

これは実行結果に何も出ません。
再起動したときに備えてApacheが自動起動するようにします。

sudo systemctl enable httpd.service

続いて今使っているec2-userをapacheグループに追加して/var/www/への権限を追加します。

sudo usermod -a -G apache ec2-user
sudo chown -R ec2-user:apache /var/www
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;

phpをインストール

WordPressで使うphpをインストールします。2023/01現在公開されている最新バージョン8.1を利用します。

sudo amazon-linux-extras enable php8.1

コンソールに表示されたcleanコマンドをsudoで実行します。

sudo yum clean metadata

phpと関連パッケージをインストールします。

sudo yum install php-cli php-pdo php-fpm php-mysqlnd php-xml php-mbstring php-gd -y

Complete!と表示されれば完了です。

DBサーバのインストール

MariaDBを使用します。以下コマンドを実行するとインストールできます。

sudo yum install mariadb mariadb-server -y

Complete!と表示されれば完了です。起動しておきます。

sudo systemctl start mariadb

再起動時、自動的に起動するようにしておきます。

sudo systemctl enable mariadb

DBのセキュリティ設定を行うためにmysql_secure_installation を行います。

sudo mysql_secure_installation

以下のようにrootのパスワードを確認されますが、設定していないのでそのままエンターキーを押します。

Enter current password for root (enter for none): 

するとrootのパスワードを設定するかを確認されるのでYを入力して設定します。

Set root password? [Y/n]

自分で考えた強固なパスワードを設定します。2回入力します。

パスワードを入力しても画面には何も表示されませんが入力できています。

New password:

匿名ユーザーは使用しないのでYを入力して削除します。

Remove anonymous users? [Y/n]

続いて以下質問をされますがすべてYを入力しておきます。

Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]

以下の表示がされれば完了です。

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
 
Thanks for using MariaDB!

WordPress用にDBのセットアップを行います。以下コマンドを実行してDBにログインします。パスワードを確認されるので先ほど設定したパスワードを入力します。

mysql -u root -p

以下のように表示されれば成功です。

Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB MariaDB Server
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]>

ここからはSQLを入力してDBのセットアップを行っていきます。

SQLはDBを操作する言語です。

以降はMariaDB [(none)]>の後に入力していきます。
以下を入力してDBにwordpress-userを作成します。my_passwordの箇所は自分で考えたパスワードに置き換えます。

上で作成したrootのパスワードとは別のものを設定できます。

CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'my_password';

Query OKと表示されれば成功です。ここで設定したパスワードは後程使うので覚えておいてください。
続いて以下コマンドでDBを作成します。

CREATE DATABASE `wordpress-db`;

先ほど作成したユーザwordpress-userに作成したDBの権限を割り当てます。

GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";

変更を有効にするためにフラッシュします。

FLUSH PRIVILEGES;

データベースの設定は以上なのでexitでログアウトします。

exit

データベースの設定は以上です。

WordPressをインストールする SSH編

引き続きSSHで作業します。(ここからはSQLではありません。)以下コマンドを実行してhomeディレクトリに移ります。

cd

cdコマンドを引数なしで実行するとホームディレクトリ/home/ec2-userに遷移します。

wgetコマンドを実行してwordpressをダウンロードします。そしてtarコマンドで展開します。

wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz

lsコマンドを実行するとダウンロードされたgzファイルと展開されたファイルが確認できます。

[ec2-user@ip-172-31-37-113 ~]$ ls
latest.tar.gz  wordpress

解凍されたフォルダwordpressの中にあるwp-config-sample.phpをwp-config.phpとしてコピーします。

cp wordpress/wp-config-sample.php wordpress/wp-config.php

コピーしたwp-config.phpを編集します。viを使って開きます。

vi wordpress/wp-config.php

いろいろ書かれたphpファイルが開かれます。冒頭にある下記記載を書き換えます。
database_name_here→wordpress-db
username_here→wordpress-user
password_here→my_password設定したwordpress-userのパスワード

/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
 
/** Database username */
define( 'DB_USER', 'username_here' );
 
/** Database password */
define( 'DB_PASSWORD', 'password_here' );

viエディタでは開いた直後は観覧モードになっています。
iを入力すると編集モードになります。
編集が終わったらEscキーを押して:wq Enterで保存できます。

viを閉じたらwordpressのファイルを/var/www/html/にコピーします。

cp -r wordpress/* /var/www/html/

/home/ec2-user配下のファイルはもう使用しないので削除しておきます。

rm -r ./*

httpd.conf ファイルを修正します。再度viエディタを使用します。編集方法は上をご覧ください。

このディレクトリは権限の関係でsudoを付けています。

sudo vi /etc/httpd/conf/httpd.conf

<Directory “/var/www/html”>が記載されているセクションを見つけます。筆者の環境では131行目にありました。

このセクションのAllowOverride Noneの記載をAllowOverride Allに変更します。

このファイルには複数の AllowOverride 行がありますので修正箇所をお間違えないようにお願いします。

<Directory "/var/www/html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
 
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All
 
    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

Apacheが/var/www/に書き込めるようにするために権限の設定を行います。

sudo chown -R apache /var/www
sudo chgrp -R apache /var/www
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;

その後Apacheを再起動して設定を反映させます。

sudo systemctl restart httpd

WordPressをインストールする HTTP編

ここからはSSHは使用しません。
ブラウザを使用してEC2にアクセスします。Chrome、Edge、Firefox何でもよいので以下urlを入力してアクセスします。
[EIP]の部分は払い出したElastic IP に置き換えます。(EC2のグローバルIPと同じです。)

アクセスできない場合、セキュリティグループの設定でHTTPを許可しているか確認してください。

http://[EIP]/wp-admin/install.php

HTTPSではなくHTTPです。

するとこのような画面が表示されます。日本語があるので選択します。選択して次へを選択します。

WordPress開始画面で言語を選択する
WordPressの初期設定1

次の画面ではいくつかの設定を入力します。あとから変更できるので自由に入力します。入力が完了したらWordPressをインストールを選択してください。

WordPressで初期設定を実施する画面
WordPressの設定2

インストールはすぐに完了します。完了するとログインボタンが表示されるのでログインします。

WordPressの初期設定が完了した画面
WordPressへのログイン

WordPressにログインしてみる

次の画面では先ほど設定したユーザ名、パスワードでログインします。ログインに成功するとダッシュボードが表示されます。この画面で記事の投稿やサイトデザインの設定を行います。
今後ダッシュボードにログインする際は以下のアドレスになるのでメモやブックマークしておくことをおすすめします。

http://[EIP]/wp-login.php
WordPressの管理画面
ダッシュボードでは記事の投稿ができます

WordPressの使い方はここでは紹介しないので興味ある人は別途調べてみてください。

ちなみにEIPにアクセスするとWordpressの初期画面を観覧できます

http://EIP
WordPressのホームページ(初期)にアクセスした画面
WordPress初期画面

WordPressのインストールは以上です。

WordPressテーマCocoonを導入する

ここまでの作業でブログを始めることはできますが、せっかくなので人気No1のWordPress無料テーマCocoonを設定していきます。

php.iniの修正

デフォルトではWordPressのサーバー(EC2)に大きなファイルをアップロードできません。
Cocoonをインストールするために、設定を変更して大きなファイルをアップロードできるようにします。
EC2にSSH接続してください。手順はEC2インスタンスにSSHログインの時と同じです。
以下コマンドを入力してviエディタでphp.iniを修正します。

viエディタの使い方はこちら

sudo vi /etc/php.ini

upload_max_filesize = 2Mという記述があるのでupload_max_filesize = 500Mに変更して保存しておきます。

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 500M

post_max_sizeも500Mに変更します。

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 500M

変更を反映するためにEC2を再起動しておきます。

マネジメントコンソールでインスタンスを再起動する画面
EC2再起動

Cocconテーマのダウンロード

以下ボタンから親テーマ、子テーマのダウンロードを行います。

zipでダウンロードされます。もし勝手に解凍されてしまう場合は再度zip圧縮してください。

WordPressへCocoonテーマをアップロードする

WordPress管理画面にアクセスします。

http://[EIP]/wp-login.php

外観→テーマ→新規追加を選択します。

WordPress管理画面でテーマの追加を押下する
テーマを新規追加

続いてテーマをアップロードします。

WordPress管理画面でテーマをアップロードする
テーマをアップロード

先ほどダウンロードしたCocoonの親テーマと子テーマをアップロードします。

1つずつしかアップロードできないので2回繰り返して親テーマと子テーマをアップロードします。

今すぐインストールを選択します。

WordPress管理画面でファイルを選択する
今すぐインストール

親テーマと子テーマをそれぞれインストールします。

辿ったリンクは期限が切れています。 もう一度お試しください。と表示される場合はphp.iniの修正が今くいっていないか、反映できていない可能性があります。その場合はphp.iniの見直しとEC2の再起動で解消する可能性があります。
解消しない場合、親テーマは低サイズ版のこちらをダウンロードしてのちにバージョンアップすることでも対応可能です。

Cocoonの子テーマを有効化する

再度外観→テーマを選択するとCocconが確認できます。
Coccon Childを選択して有効化してください。

WordPress管理画面でCocoon Childを有効化する
Coccon Childの有効化

これでCocconを導入することができました。

WordPressサイトでCocoon Childに変更されたことを確認する画面
Cocoonのトップページ

個別記事画面ではSNSのシェアボタンもついてにぎやかになっていますね。

WordPressサイトでCocoon Childに変更されたことを確認する画面(記事画面)
個別記事画面

Cocoonの設定は以上です。

CloudFrontでSSL化する

ここまで作成したWebサイトはSSL化されておらず、HTTPで接続しています。しかし今ではSSL化(HTTPS化)がスタンダードとなっております。ここではそれに倣ってCloudFront経由でSSL化をします。

CloudFrontにはコンテンツのキャッシュによるサーバーの負荷軽減、読込の高速化も期待できます。

CloudFrontディストリビューションの作成

ここからはAWSマネジメントコンソールを使用します。
AWSサービスからCloudFrontを選択して右上のディストリビューションを作成を選択します

マネジメントコンソールでCloudFrontディストリビューションを作成する

設定値を記入する必要があるので以下の通り入力します。EC2の情報を入力する必要があるのでEC2のコンソールを別タブで開いておくことを推奨します。
以下に無い項目はデフォルトでお願いします。

オリジンドメイン

EC2のパブリック IPv4 DNSを貼り付け。 ec2-NN-NN-NN-NN.ap-northeast-1.compute.amazonaws.comといった形式です。プライベートと間違えないようにしてください

プロトコル

HTTPのみ ※CloudFront→EC2へのアクセスはHTTPでOKです。

HTTPSポート、最小オリジンSSLプロトコル デフォルト

443、TLSv1.2

オリジンシールドを有効にする デフォルト

いいえ

ビューワープロトコルポリシー

HTTPS only

許可された HTTP メソッド

GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE

キャッシュキーとオリジンリクエスト

Legacy cache settingsを選択
 次のヘッダーを含める
  ヘッダーを追加でHostを選択
 クエリ文字列:すべて
 cookie:すべて

以上入力が完了したらディストリビューションを作成を押下します。

マネジメントコンソールでディストリビューションの作成を押下する画面

ディストリビューションの作成が完了するまでは少し時間がかかります。

EC2のセキュリティグループの設定

現在のセキュリティグループの設定ではCloudFrontからのみならず、どこからでもHTTP接続できてしまいます。これでは引き続き脆弱なHTTPを使い続けることができてしまいます。
ここではCloudFrontからのHTTPアクセスのみを許可してグローバルからのHTTPアクセスはブロックします。
AWSマネジメントコンソールからEC2→インスタンスから作成したEC2を選択します。
セキュリティのタブからセキュリティグループを選択します。

マネジメントコンソールでセキュリティグループを選択する画面
セキュリティグループの選択

選択するとセキュリティグループの画面に遷移します。インバウンドルールを編集を選択します。

マネジメントコンソールでインバウンドルールを編集する
インバウンドルールを編集する

既存のHTTPルールは削除して新たにHTTPのルールを追加します。

既存のHTTPルールを編集して変更するとエラーになるので必ず削除して新たに作成してください。

新しく作成したHTTPルールではプルダウンの下の方にあるプレフィックスリストのcom.amazonaws.globalとなっているものを選択します。似たようなものがありますが、globalになっているものを選択してください。

すでにAWSアカウント内にリソースが作成されている場合、globalのものが複数出てきます。CloudFrontのものを選択してください。
AWSマネジメントコンソール→VPC→マネージドプレフィックスリストからどれがCloudFrontのものかを確認することができます。

インバウンドルールにCloudFrontディストリビューションを選択する画面
インバウンドルールの編集

編集ができたらルールを保存を選択します。
これでhttp://[EIP]からはアクセスできなくなります。

ドメイン設定をWordPressのDBに反映する

WordPressは自分のサイトのURLをDBに保存しています。今後http://[EIP]からはアクセスせず、CloudFrontのドメインからアクセスするのでDBの設定を書き換えておきます。
EC2にSSH接続して作業を進めます。(SSHのログイン方法はこちら
SSHできたらDBにログインします。

mysql -u root -p wordpress-db

設定したrootのパスワードを入力してログインします。
このように出力されればログイン成功です。

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 152
Server version: 5.5.68-MariaDB MariaDB Server
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [wordpress-db]>

以下を入力して現在の値を確認します。出力結果はElastic IP のIPアドレスになっていると思います。

select * from wp_options where option_name in('siteurl', 'home');

以下のupdate文を実行してsiteurlhomeを書き換えます。

xxxxxxxxxxx.cloudfront.netの部分はCloudFrontのディストリビューションドメイン名に書き換えてください。

CloudFrontのディストリビューションドメイン名はAWSマネジメントコンソールから確認できます。

CloudFrontディストリビューションドメイン名を確認する画面
CloudFrontのディストリビューションドメイン名確認
update wp_options set option_value='https://xxxxxxxxxxx.cloudfront.net' where option_name='siteurl';
update wp_options set option_value='https://xxxxxxxxxxx.cloudfront.net' where option_name='home';

データベースの設定は以上なのでexitしておきます。

exit

wp-config.phpにHTTPS接続を指定

次はSSHで作業します。こちらの作業については以下記事で紹介したので気になる方は読んでいただけると嬉しいです。

本記事でも実施方法は記載します。以下のコマンドを実行してwp-config.phpを修正します。
viエディタの使い方はこちら

sudo vi /var/www/html/wp-config.php

define( ‘WP_DEBUG’, false );の下にあるコメントAdd any custom values between this line and the “stop editing” line.
の下に$_SERVER[‘HTTPS’] = ‘on’;を記述します。

上記コメントは複数個所にあるので修正箇所はお間違えないようにお願いします。

以下修正例です。

/* Add any custom values between this line and the "stop editing" line. */

/* 以下を追加 */
$_SERVER['HTTPS'] = 'on';

/* That's all, stop editing! Happy publishing. */

修正したら保存します。

CloudFrontのキャッシュ削除

設定変更前のファイルがキャッシュされていると動作確認時不具合が出る可能性があるのでここでCloudFrontのキャッシュ削除を行います。AWSマネジメントコンソールからCloudFrontを選択し、作成したディストリビューションを選択します。キャッシュ削除というタブがあるので開きます。キャッシュ削除を作成を選択して/を入力してキャッシュ削除を作成を選択します。キャッシュ削除には5分程度時間がかかります。

CloudFrontキャッシュを削除する画面
CloudFrontのキャッシュ削除

ブロックエディタを利用可能にする

CloudFront経由だとWordPressのブロックエディタが使用できなくなることがあります。functions.phpを修正してブロックエディタを利用できるようにします。以下記事で詳しくまとめていますが、ここでも手順だけお伝えします。

ブラウザからhttps://xxxxxxxxxxx.cloudfront.net/wp-login.phpにアクセスする。

ここでダッシュボードにログインしようとするとCookie がブロックされているか、お使いのブラウザーで未対応のようです。と出る場合はCloudFrontの設定が正しくない可能性があります。

外観→テーマファイルエディターを選択します。

警告が出ますが、OKを選択します。

Cocoon Child: テーマのための関数 (functions.php)を選択します。

WordPress管理画面でテーマファイルエディタを使用する画面
functions.phpの編集

末尾に以下を貼り付けます。

function user_can_richedit_custom() {
    global $wp_rich_edit;
 
    if (get_user_option('rich_editing') == 'true' || !is_user_logged_in()) {
        $wp_rich_edit = true;
        return true;
    }
 
    $wp_rich_edit = false;
    return false;
}
add_filter('user_can_richedit', 'user_can_richedit_custom');

貼り付けたら更新します。

テーマの編集画面の説明
ファイルを更新

動作確認

以下4点を確認して問題なければこの章の作業は終了です。

  • ブラウザからhttp://[EIP]にアクセスできない。
  • ブラウザからhttps://xxxxxxxxxxx.cloudfront.netにアクセスできてレイアウト崩れなどがない。適当に画面上のリンクをクリックしても正常に動作する。
  • https://xxxxxxxxxxx.cloudfront.net/wp-login.phpにアクセスするとダッシュボードにログインできる
  • ダッシュボードから投稿画面に遷移してブロックエディタが使える。(テキストまたはHTML を入力して開始となっていないこと)

ブロックエディタが使える/使えないの判断は下記の記事を参考にしてください。

Route53で独自ドメインを設定する

いよいよ最後の手順です。広告を貼ったりするする際は独自ドメイン.comなどが有利です。

Route53でドメインの購入

AWSマネジメントコンソールからRoute53を選択します。
登録済みドメイン→ドメインの登録を選択します。

Route53ではお名前ドットコムなどの外部ドメインを持ち込んで設定することもできます。その手順については機会があれば追って書いてみようと思います。

※PR

お名前.com

マネジメントコンソールのRoute53でドメインを登録する画面
ドメインの登録

好きなドメインを選択して購入をします。購入の際連絡先が必要なので入力しましょう。

購入するドメインを選択する画面
ドメインの購入

筆者は料金が安い.linkを購入しますが、本格的にブログをはじめられる方は.comなどのポピュラーなドメインをおすすめします。

サイト運営を長く続ける場合は自動更新を有効化にすると便利です。

ドメインの自動更新を設定する画面
自動更新の有効化

ドメインの購入手続きは最大で3日かかることがあるようです。筆者の場合は15分程度で完了しました。

登録が完了すると登録済みドメインに出てきます。

Certificate Managerに証明書を登録する

この章はRoute53の証明書登録が完了したら実施します。
ここではHTTP接続をするための証明書を登録します。この証明書はCloudFrontで使用するので必ずバージニア北部リージョン(us-east-1)で作業します。
AWSマネジメントコンソールでバージニア北部リージョンを選択してAWS Certificate Manager(ACM)を選択します。そして証明書をリクエストを押下します。

ACMの証明書を登録する画面
ACMで証明書のリクエスト(バージニア北部リージョン)

続いて証明書をリクエスト画面に遷移するのでパブリック証明書をリクエストを選択します。

証明書をリクエストする画面
パブリック証明書をリクエスト

完全修飾ドメイン名Route53で取得したドメインを入力します。筆者の場合syo-blog.linkです。
他はデフォルトでリクエストを選択します。

リクエストする証明書を入力する画面
ドメイン名にRoute53で取得したドメインを入力

リクエストをすると保留中として一覧に出てきます。この後の手順で検証をして有効化します。

リクエストが保留中となっている画面
保留中として登録される

保留中の証明書の証明書IDを選択して詳細を表示します。
Route53でレコードを作成を選択します。

Route53でレコードを作成する画面

保留中の検証が表示されるので選択してレコードを作成を選択します。

Route53でレコードを作成する画面(決定)
レコードを作成

しばらくすると検証済みになります。

検証済みに変更されるまでは数分かかります。少し待ってから更新してみましょう。

CloudFrontに発行した証明書をアタッチする

AWSマネジメントコンソールを開き、CloudFrontを開きます。作成したディストリビューションを選択します。
一般タブ編集を選択します。

CloudFrontで編集を押下する画面
CloudFrontの設定変更

カスタムSSL証明書でACMに登録した証明書を選択します。

カスタムSSL証明書に登録した証明書が出てこない場合はまだ保留中になっていないか、バージニア北部リージョンのACMに登録したかを確認してください

月額 600 USDという記載がありますが有効にチェックを入れない場合は課金されないので安心してください。

CloudFrontにSSL証明書を紐づける画面
カスタムSSL証明書の設定

あとは変更せずに変更を保存を選択してください。

Route53でエイリアスレコードを登録する

このままではカスタムドメインへのアクセスをCloudFrontのディストリビューションに向けることができていません。
DNS(Route53)にエイリアスレコードを登録してカスタムドメインへのアクセスをCloudFrontへ向けるように設定ます。
AWSマネジメントコンソールからRoute53→ホストゾーンを選択します。取得したカスタムドメインが表示されているはずなので選択します。そしてレコードを作成を選択します。

Route53でエイリアスレコードを作成する画面
ホストゾーンにレコードを作成

以下の通り入力してレコードを作成を押下します。

レコード名 デフォルト

入力なし。

レコードタイプ

A-IPv4

エイリアス

ONにする

トラフィックのルーティング先

CloudFrontディストリビューションへのエイリアス
CloudFrontのドメインxxxxxxxxx.cloudfront.netの形式。※CloudFrontの画面から確認できます。https://は不要です。
リストには出てこないので入力します。

ルーティングポリシー デフォルト

シンプルルーティング

必要事項を入力してRoute53レコードを作成する画面
エイリアスレコードの登録

エイリアスレコードはRoute53固有のレコードです。向き先にAWSリソースを設定する際に使用します。

CloudFrontの代替ドメインの設定

CloudFrontではディストリビューションドメイン名(xxxxxxxx.cloudfront.net)以外からアクセスする際は代替ドメインを設定しておく必要があります。
CloudFront→一般→編集を選択します。

CloudFrontの編集画面
CloudFrontの編集

代替ドメイン名 (CNAME) – オプションの項で項目を追加を選択してドメインを入力します。

CNAMEを設定する画面
代替ドメインの設定

入力が完了したら保存を押下します

WordPressのアドレス設定の変更

ブラウザからWordPressのダッシュボードにアクセスします。https://xxxxxxxxxxxxx.cloudfront.net/wp-login.phpのアドレスです。

ここではまだWordPressでURLの変更をしていないのでカスタムドメインは使えません。

ログインしたら設定→一般を選択します。以下の項目があるので独自ドメインに修正します

WordPress アドレス (URL)

https://[独自ドメイン]

サイトアドレス (URL)

https://[独自ドメイン]

入力したら変更を保存します。

WordPress管理画面で2か所のアドレスを変更する画面
URLの変更

設定は以上です。ここまで実施いただいた方本当にお疲れさまでした。

動作確認

以下を4点を確認して問題なければ構築完了です。

  • ブラウザからhttp://[EIP]にアクセスできない。
  • ブラウザからhttps://[ドメイン名]にアクセスできてレイアウト崩れなどがない。適当に画面上のリンクをクリックしても正常に動作する。
  • https://[ドメイン名]/wp-login.phpにアクセスするとダッシュボードにログインできる
  • ダッシュボードから投稿画面に遷移してブロックエディタが使える。(テキストまたはHTML を入力して開始となっていないこと)

さいごに 今後の動きなど

環境の構築はできました。最後に考えられる今後の動きを書いてみます。

まずは10記事書いてみる

記事を書いてみましょう。10記事程度書くとgoogle adsenceの審査に通過しやすくなります。

Google Search Consoleに登録する

Google Serch Consoleに登録して作成したブログをGoogleから検索できるようにします。サイト開設後しばらくはgoogleから見つけてもらえませんが、こちらからGoogleのクローラーを呼び込むことができます。

Google Adsenceに登録する

Google Adsenceに登録して広告収入が狙えます。登録後しばらくはなかなか収益が発生しませんが、粘り強く更新すると収益が発生しやすくなります。
GoogleAdsence

ASPに登録してアフィリエイト収益を目指す

A8.netもしもアフィリエイトあたりが有名です。もしもアフィリエイトのAmazonアソシエイトは申請しておくと使い勝手が良いかと思います。

Amazonアソシエイトには審査があります。10記事ほど書いてから一時的にGoogleAdsenceの広告をとめておくと審査が通過しやすくなるようです。

トラブルシュート

この章は構築や動作確認がうまくいかなかったときにご参照ください。
こちらのケースに無い場合はコメントまたはお問い合わせからお願いします。回答可能なものはここに追記しようと思います。

http://[EIP]でアクセスできてしまう

セキュリティグループの設定が正しくないと思われます。CloudFrontからのみの通信を許可します。
EC2のセキュリティグループの設定を見直してください。


https://[ドメイン名]にアクセスするとレイアウトが崩れている

WordPressでURLの設定が正しいか確認してください。
wp-config.phpにHTTPS接続を指定できているか確認してください。

ダッシュボードにログインしようとするとCookie がブロックされているか、お使いのブラウザーで未対応のようです。と出る

CloudFrontの設定が正しいか確認してください。特にキャッシュキーとオリジンリクエストが正しい設定になっていますか?

ブロックエディタが使えない

ブロックエディタを利用可能にするの章をご参照ください。

WordPressのダッシュボードからサイトURLの設定変更をしたいけどダッシュボードにログインできない

ssh経由でDBを直接更新する必要があります。
ドメイン設定をWordPressのDBに反映するを参照してDBを書き換えてみてください。

option_valueは設定したい値に書き換えてください。

アクセスすると403 ERRORになる

http://になっていませんか。ブラウザが勝手にhttpにしてしまうことがあります。https://[ドメイン名]とすると解消することがあります。
また、セキュリティグループの設定でEC2に対してCloudFrontからの通信を許可できていますか?

リダイレクトが繰り返し行われましたというエラーが発生する

こちらの記事の対処法を試してみてください。

記事を修正したのに反映されない

CloudFrontのキャッシュを削除してみてください。
やりかたはCloudFrontのキャッシュ削除から。

PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!

SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ

ランキング

ランキングに参加しています。クリックして応援いただけると嬉しいです。
にほんブログ村 IT技術ブログ クラウドコンピューティングへ
にほんブログ村
AWSランキング
AWSランキング

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次