この記事は最後に更新してから1年以上経過しています。
説明
本サイトはサブディレクトリタイプのマルチサイト機能を採用して構築しているが、これまでサブドメインタイプは利用した経験はない。マルチサイト機能のサブドメインタイプは以前から1度は試してみたいと思っており、今回実際にサイトを構築してみた。
サーバー環境と準備
はじめに使用したサーバー環境を簡単に紹介する。
- サーバー:さくらVPS(メモリー2GB、ストレージSSD 50GB)
- OS:KUSANAGI(CentOS7 x86_64)
- DNS:お名前.com
セットアップ状況は、プロファイル名を'html'としてWordPressをプロビジョニングし、Webサーバーは「nginx」を選択。ドメインを指定してSSL証明書を適用した。また今回使用するサブドメインについては、ワイルドカードを使用せず、ユニークなものを事前にAレコードを登録しておく(TTL値を短めにして反映待ちを軽減)。
WordPress関連の変更
WordPressでマルチサイトを有効にする手順は次の通り。
- wp-config.phpを修正(以下を追加)
define( 'WP_ALLOW_MULTISITE', true );
- ログインして管理画面にアクセス
- 「プラグイン」メニューをクリックしてすべてのプラグインを停止
- 「ツール」-「サイトネットワークの設置」メニューをクリックして「サブドメイン」を選択
- サブミット後のページに表示されている内容をwp-config.phpに追加
define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true); define('DOMAIN_CURRENT_SITE', 'ドメイン名'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1);
- 管理画面からログアウト
- nginx設定ファイルのserver_nameについてドメイン名の前に.を追加(パス名の赤字部分はプロファイル名)
# vi /etc/nginx/conf.d/html_ssl.conf
server_name .ドメイン名;# vi /etc/nginx/conf.d/html_http.confserver_name .ドメイン名; - nginxを再起動
# kusanagi nginx
- ログインして管理画面にアクセス
- ツールバーの「参加サイト」-「サイトネットワーク管理」-「サイト」をクリック
- 「新規追加」ボタンをクリックし、各項目を入力して「サイトを追加」ボタンをクリック
- 「ダッシュボードを表示」をクリック(最新ブラウザの多くは警告が表示される)
標準の手順でWordPressをプロビジョニングした場合、SSL証明書にはサブドメインは含まれない。この警告表示をなくすには、サブドメインを含んだSSL証明書を設定する必要がある。
SSL証明書の再発行
KUSANAGIではWordPressをプロビジョニングしている中でSSL証明書を発行している。プロビジョニングの各ステップは相応するコマンドが用意されており、次のコマンドでSSL証明書を発行できる。
# kusanagi ssl --email メールアドレス
このコマンドのスクリプトをトレースすると、/usr/lib/kusanagi/lib/ssl.shにたどり着く。このファイルを編集して青字の行を追加する(113行目)。
# vi /usr/lib/kusanagi/lib/ssl.sh
if [ "renew" = "$OPT" ] ; then
OPTION="--renew-by-default"
else
OPTION="-m $MAILADDR --agree-tos"
fi
OPTION="-d サブドメイン.$FQDN $OPTION"
KUSANAGIのSSL証明書(Let's Encrypt)は有効期間90日であり、発行から60日経過しないと再発行できない(有効期間が更新されない)。今回追加したサブドメインに対応したSSL証明書を確実に発行するため、ここでは現在適用されているSSL証明書を失効させ、その後で先ほどのコマンドを実行する。
# /usr/local/certbot/certbot-auto revoke --cert-name ドメイン名
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you like to delete the cert(s) you just revoked, along with all earlier
and later versions of the cert?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es (recommended)/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Deleted all files relating to certificate ドメイン名.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully revoked the certificate that was located
at /etc/letsencrypt/live/ドメイン名/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# kusanagi ssl --email メールアドレス
このような手順により、サブドメインを含んだSSL証明書が発行できる。確認のため、ブラウザをサブドメインの管理画面にログインしてみる。
【追記】サブドメインのマルチサイトでは「サイトアドレス」の初期値が「http://」で保存されているので、管理画面にアクセスしたら、「参加サイト」-「サイトネットワーク管理」-「サイト」にアクセス。サイトの「編集」メニューをクリックして、「https://」に書き換えること。
ワイルドカードの適用
なおLet's EncryptのSSL証明書には個別のサブドメインのほかにワイルドカードを指定できる。ワイルドカードを指定する場合は、今回変更したssl.shをさらに修正し、DNSサーバーにTXTレコードを更新するといった対応が必要になるため、今回は見送った。
最終更新 : 2019年08月06日 17:45
お勧め
add_shortcode(2018年5月27日 更新)
get_user_setting(2022年1月31日 更新)
have_posts(2018年5月27日 更新)
in_category(2018年5月27日 更新)
add_feed(2024年6月24日 更新)