こんな方におすすめの記事です。
・Amazon LightsailでWordPressマルチサイトを複数の独自ドメインで構築したい
・AWS上で構築したブログサイトをSSL化したい
・CloudFrontのCDN(コンテンツディストリビューションネットワーク)を使ってサイトをスピードアップしたい
・複数ブログのランニングコストを安く抑えたい
・忙しいから最短ルートで構築したい
背景
Amazon LightsailでWordPressのシングルサイトを構築する手順についてはこちらの記事で解説しました。

今回の記事ではAmazon LightsailでWordPressのマルチサイトを構築する手順について解説します。
概要
WordPressマルチサイトを利用すれば一つのインスタンスに複数サイトを構築することができます。
それぞれのサイトには異なる独自ドメインを設定してSSL化することが可能です。
また、コンテンツ配信のディストリビューション(CDN)を利用すればサイトをスピードアップさせることができます。
AWSはLightsailダッシュボード内に上記全ての設定ができる機能を導入しました。
しかしながら、Lightsailのプランでは「DNS管理はアカウントごとに3つのドメインゾーンまで」という制限が設けられているため、4サイト目以降はAmazon Route 53のようなDNSサーバーを利用する必要があります。
この記事では最初にWordPressマルチサイトを使って1つ目のサイトを独自ドメインで構築、その後、2つ目以降のサイトもそれぞれ異なる独自ドメインでセットアップする手順をご紹介します。
LightSailはダッシュボード内にコンテンツ配信のディストリビューション(CDN)を設定する機能もありますので、これも利用します。
それでは早速やってみましょう!最初はメイン・サイトのセットアップです。
メイン・サイトのセットアップ
ドメイン取得
私はムームードメインで独自ドメインを取得しました。お名前.comでも良いと思います。
欲しいドメインがあれば検索してみてください。
ムームードメイン、お名前.comへのリンク


LightsailでWordPressのインスタンスを作成
AWSコンソールにログインして、Lightsailのホーム画面からインスタンスを作成します。

以下のように設定しました。Lightsailリソース名はデフォルトのまま「WordPress_Multisite-1」です。
「インスタンスの作成」ボタンを押下します。


ホーム画面でインスタンスが新規追加されたことを確認できます。
作成直後は「保留中」ステータスになっていますが、数分後に「実行中」ステータスに変わります。

WordPressマルチサイトのインスタンスが作成されました!
次のステップに進みましょう
静的IPアドレスの作成
作成したインスタンスの「ネットワーキング」タブへ行って、「静的IPの作成」をクリックします。

前のステップで作成したWordPressマルチサイトのインスタンスをアタッチします。静的IPのリソース名はデフォルトのまま「StaticIp-1」にしました。
「作成」ボタンを押します。

静的IPアドレスが割り当てられました。

次はCDNのセットアップです!
ディストリビューションの作成
Lightsailホーム画面の「ネットワーキング」タブから「ディストリビューションを作成する」ボタンを押します。

オリジンを選択するプルダウンから作成したインスタンスを選択します。

ポップアップの「はい、適用します。」ボタンを押下します。

今回はAWS内部のディストリビューションとオリジンの間の通信のことなのでHTTPのみでOKです。後のステップでクライアントとのHTTPS通信を行う設定をします。
キャッシュ動作の設定は「WordPressに最適」を選択しましょう。

分かりやすいLighsailリソース名を入力して「ディストリビューションを作成する」ボタンを押します。ステータスが「有効」に変わるまで数分掛かりした。

これでコンテンツ配信ネットワーク(CDN)の仕組みが構築されました!
次のステップに進みましょう。
SSL証明書の作成 (メイン・サイト)
Lightsailホーム画面の「ネットワーキング」タブから前のステップで作成したディストリビューションへ行きます。
「カスタムドメイン」タブで「証明書を作成」をクリックします。

作成するSSL証明書に関連付けるドメイン名を入力して「作成」をクリックします。
- プライマリドメイン:tatsu-don.site
- 証明書の名前:Multisite-cert ※一意のリソース名であれば何でもOKです。
- 代替ドメインおよびサブドメイン:www.tatsu-don.site ※www.を追加しています。

次のステップでは、SSL証明書に関連付けたドメイン名を所有していることを証明するための設定をします。
ドメイン所有の証明とDNSゾーンの作成 (メイン・サイト)
※前のステップと同じ画面です。
Lightsailホーム画面の「ネットワーキング」タブから前のステップで作成したディストリビューションへ行きます。
2つのCNAMEの名前と値をそれぞれメモしておきましょう。
後のステップでDNSレコードを作成する際に使います。

Lightsailホーム画面の「ネットワーキング」タブで「DNSゾーンの作成」ボタンを押下します。

「登録済みドメインの入力」にドメイン名を入力して「DNSゾーンの作成」ボタンを押します。

メモしていたSSL証明書のCNANEレコードを追加します。2つとも追加します。
サブドメインにCNAMEの名前を入力、マップ先にCNAMEの値を入力します。
サブドメインはテキストボックスの右にドメイン名がありますので、ドメイン名の部分は削除して入力します。
名前の変更前:abcdefg.tatsu-don.site
名前の変更後:abcdefg
マップ先に設定した値の最後のドット(“.”)は自動的に削除されます。

ここで4つのネームサーバーをメモしておきましょう。
次のステップではムームードメインの設定画面でネームサーバー設定を行います。

ネームサーバー設定 (メイン・サイト)
ムームードメインのコントロールパネルから、ネームサーバー設定変更画面へ行きます。
前のステップの最後でメモしたネームサーバー4つを設定します。


カスタムドメインの有効化
検証が終わり証明書が有効になるまで10分ほど掛かりました。次にカスタムドメインを有効にします。

証明書が有効になるとカスタムドメインを有効にすることができます。

カスタムドメインが有効になりました。

ここでデフォルトのドメイン名(下の画像の赤い矢印)をメモしておきましょう。
次のステップでDNS設定追加をします。

DNS設定追加 (メイン・サイト)
Lightsailホーム画面の「ネットワーキング」からDNSゾーンの設定画面へ行きます。
CNAMEレコードを追加します。サブドメインはwww、マップ先は前のステップの最後でメモしたデフォルトのドメイン名を設定します。

Aレコードを追加します。サブドメインは@、マップ先はプルダウンから今回作成したディストリビューションを選択します。

WordPressにメイン・サイトのドメインを設定
Lightsailホーム画面からインスタンスにSSHを使用して接続します。

ターミナルが開いたら以下のコマンドを実行します。ドメイン名は実際に登録したいドメイン名に編集してください。
sudo /opt/bitnami/configure_app_domain --domain www.tatsu-don.site

DNS設定の確認 (メイン・サイト)
ドメイン名でサイトにアクセスできるようになりました。次のステップではSSLに対応します。
http://www.tatsu-don.site/

wp-config.phpの編集(コードをコピペ)
SSL/TLSターミネーションの設定をしてディストリビューションと連携できるようにします。
SSHを使用して接続します。

suしてから /bitnami/wordpress へ移動する。
sudo su -
cd /bitnami/wordpress
wp-config.phpを編集する前にバックアップを取っておく。
cp wp-config.php wp-config.php_backup
wp-config.phpを編集して以下を追加
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/');
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');
if (isset($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'])
&& $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}

このステップでサイトにSSL接続ができるようになりました。
次のステップではWordPressの管理者画面にログインして、新規特権管理者アカウントを作成します。
新規特権管理者アカウント作成
初期設定を行うためのデフォルト・ユーザーが存在しています。このディフォルト・ユーザーを使ってログインします。
ユーザー名は「user」です。
セキュリティの観点から、必要なセットアップが終わったらディフォルト・ユーザーを削除します。ただし、特権管理者権限を持つディフォルト・ユーザーを削除する前に、新規ユーザーに以下の設定をしていきます。
・特権管理者権限を付与する。
・メイン・サイトの管理者権限を付与する。
ログイン・パスワードはサーバー上のファイルに保存されています。SSH接続をしてパスワードを確認します。
パスワードが保存されているファイルはホームディレクトリの「bitnami_application_password」です。以下のコマンドでパスワードを確認できます。
cat bitnami_application_password

ログイン画面にアクセスするには、ドメインの後ろに「/wp-admin」を付けます。今回の説明に使用しているドメインは「https://www.tatsu-don.site」なので、ログイン画面のURLは「https://www.tatsu-don.site/wp-admin」になります。
ログインユーザー名:「user」
パスワード:bitnami_application_passwordに保存されているパスワード

メイン・サイトのダッシュボードにアクセスできました。早速、「参加サイト > サイトネットワーク管理 > ユーザー」から新規ユーザー追加をします。




「このユーザーにサイトネットワークの特権管理者権限を与える」にチェックをして「ユーザーを更新」ボタンを押します。

特権管理者アカウントを作成することができました。
まだディフォルト・ユーザーを削除できません。メイン・サイトにもユーザーを追加しておきます。
次のステップでメイン・サイトにユーザーを追加します。
メイン・サイトに管理者ユーザーを追加
「参加サイト > User’s blog > ダッシュボード」からメイン・サイトのダッシュボードへ行きます。
前のステップと同じようにユーザーの新規追加をします。ここでは特権管理者権限を付与したユーザーをメイン・サイトの管理者として追加しています。「既存のユーザーを追加」を押します。
これでメイン・サイトに管理者ユーザーが追加されました。

これでディフォルト・ユーザーが不要になり削除できるようになりました。
2サイト目以降のセットアップ
ここからはWordPressマルチサイトの機能である2サイト目以降のセットアップの手順を説明します。
私はムームードメインでドメインを取得しています。お名前.comでも良いと思います。
ムームードメイン、お名前.comへのリンク


SSL証明書の作成
Lightsailホーム画面の「ネットワーキング」タブからメイン・サイトのセットアップで作成したディストリビューション(Distribution-1)へ行きます。
メイン・サイトのセットアップで作成した証明書(Multisite-cert)をコピーします。Multisite-certの「重複」をクリックします。

新しい証明書の名前はデフォルトのまま「Multisite-cert-1」にしました。
「代替ドメインおよびサブドメイン」に2サイト目のドメイン名を追加します。www.が有るものと無いものを2つ追加して作成します。
例) hogehoge.com の場合
hogehoge.com
www.hogehoge.com

次のステップでは、SSL証明書に関連付けたドメイン名を所有していることを証明するための設定をします。
ドメイン所有の証明とDNSゾーンの作成 (2サイト目以降)
※前のステップと同じ画面です。
Lightsailホーム画面の「ネットワーキング」タブから前のステップで作成したディストリビューションへ行きます。
メイン・サイトのCNAMEに並んで、2サイト目のCNAMEが表示されます。
2サイト目の2つのCNAMEの名前と値をそれぞれメモしておきましょう。
後のステップでDNSレコードを作成する際に使います。

ここまで読んでお気づきかもしれませんが、このステップはメイン・サイトのセットアップ手順「ドメイン所有の証明とDNSゾーンの作成」と同じです。
「ドメイン所有の証明とDNSゾーンの作成」を参照して続きをやってみましょう。
ネームサーバー設定 (2サイト目以降)
「ネームサーバー設定 (メイン・サイト)」と同じなので参照してやってみましょう。
DNS設定追加 (2サイト目以降)
「DNS設定追加 (メイン・サイト)」と同じなので参照してやってみましょう。
Lightsailホーム画面の「ネットワーキング」タブで、2サイト目のDNSゾーンが追加された状態です。

サイト追加 (2サイト目以降)
WordPressの管理画面にログインします。「参加サイト > サイトネットワーク管理 > サイト」へ行きます。

サイトの「新規追加」を押します。

「サイトアドレス(URL)」、「サイトのタイトル」は一時的なものです。何でも良いので値を入力します。
入力したら「サイトを追加」を押します。

サイト一覧に戻ると2サイト目が追加されました。サブドメインのサイトではなく、独自ドメインのサイトを登録したいのでサイトをクリックして編集します。

「情報」タブのサイトアドレス項目に独自ドメインのアドレスを入力して、「変更を保存」を押します。
例) hogehoge.com を登録したい場合は、「http://www.hogehoge.com」を入力します。

追加した2つ目のサイトが独自ドメインでアクセスできるようになりました。
例) https://www.hogehoge.com

3サイト目、4サイト目…はこの「2サイト目以降のセットアップ」の繰り返しです。
Route 53を使ったDNS設定 (LightsailのDNSゾーン制限数を超える場合)
Lightsail では、最大 3 つの DNS ゾーンを作成できます。さらに多くの DNS ゾーンが必要な場合はRoute 53 を使用します。
Route 53のダッシュボードにアクセスして、ホストゾーンの作成をします。

ドメイン名を入力します。例) hogehoge.com
「ホストゾーンの作成」を押します。

4つのネームサーバーが表示されます。次のステップで使うのでコピーしておきましょう。

ムームードメインの「コントロールパネル > ドメイン管理 > ネームサーバー設定変更」からドメインのネームサーバー設定を行います。

Route 53に戻ってレコードを追加していきます。SSL証明書にドメイン所有の証明をするためのCNAMEが2つあるのでそれぞれレコードを作成します。

次にwwwのレコードを作成します。
・レコード名:「www」
・レコードタイプ:「CNAME」
・値:<ディストリビューションのデフォルト・ドメインを入力> ※Lightsailのディストリビューションで確認できます。

次にサブドメイン無しのレコードを作成します。
・レコード名:<空>
・レコードタイプ:「A」
・トラフィックのルーティング先:「CloudFrontディストリビューションへのエイリアス」
・値:<ディストリビューションのデフォルト・ドメインを入力> ※Lightsailのディストリビューションで確認できます。

wwwへのリダイレクト設定
wwwを付けずに「https://tatsu-don.site」でアクセスした場合に、「https://www.tatsu-don.site」へURLリライトする設定をします。
.htaccess有効化と編集
SSHを使用して接続します。

ディレクトリを移動します。
cd /opt/bitnami/apache2/conf/vhosts
編集する前に「wordpress-vhost.conf」のバックアップを取っておきます。
cp wordpress-vhost.conf wordpress-vhost.conf.backup
エディタで「wordpress-vhost.conf」を編集します。
AllowOverrideを「None」→「All」に変更。
AllowOverride None
→
AllowOverride All
リライトルールを追加。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteCond %{HTTP_HOST} (.+)$ [NC]
RewriteRule ^(.*)$ https://www.%1/$1 [R=301,L]
以下のような内容になります。

ファイルを保存して閉じたらApacheを再起動します。
sudo /opt/bitnami/ctlscript.sh restart apache
これでwww無しでURL指定した場合も、www有りのアドレスでアクセスされるようになりました。
最後に
お疲れさまでした。思っていたよりも大きなベージになりました。
ベストな方法ではないかもしれませんが、このページがみなさんのお役に立てたら幸いです。
ご意見ご感想、改善点などのフィードバックがございましたら是非コメントを頂けると嬉しいです。記事の品質改善に役立てたいと思います。
それでは!
コメント