予定通り約2ヶ月ぶりの投稿となります。
NHNテコラスの遠藤と申します。よろしくお願いいたします┏○
KUSANAGIを搭載したホスティングサービスを自社で運営開始して約半年が経過しましたが、お問い合わせなどを通じてKUSANAGIやWordPress公式サイトのドキュメントには無いノウハウも蓄積されてきているため、今回はそれら公式サイトには掲載されていなかった情報を交えて書かせていただきました。
WordPressでマルチサイトは作れますか?
定期的にこのお問い合わせをいただくのですが、問い合わせ主によってマルチサイトの意味が異なります。
実際に頂戴したお問い合わせ例:
- Aさんが考えるマルチサイト
KUSANAGIではWordPressを複数インストールしてマルチサイトの運営は可能でしょうか? - Bさんが考えるマルチサイト
WordPressのネットワーク作成機能はKUSANAGIでも利用可能でしょうか?
また、マルチサイトではなく、マルチドメインという用語で類似したお問い合わせをいただくケースもございます。
Aさんの質問に対してはkusanagi provisionをコマンドラインで実行いただくことでサブドメイン型のWordPressは複数作ることが可能です。
はじめてのKUSANAGI として、プライム・ストラテジーの宮﨑様も『KUSANAGIでは、複数回 kusanagi provisionを実行することで、サブドメイン型のマルチサイトを構築できます。』として紹介している手法です。
kusanagi provisionではFQDNを指定しますが、サブディレクトリに対してのインストールは行えないため、サブディレクトリに複数のWordPressをインストールしたい場合の手順は先日、自社サイト上で紹介しました。
KUSANAGIでサブディレクトリにWordPressを複数インストールする
Bさんの質問に対してはWordPressの機能を用いた運用ですが、KUSANAGIでも動作することを確認しておりますので可能として回答しております。
なお、WordPressのネットワーク作成についてはapacheを前提に書かれているドキュメントが多く、KUSANAGI標準仕様のnginxによる設定方法が書かれているサイトが少ないため、以降はnginxで動作させているWordPressのネットワーク作成について少々説明いたします。
※サブドメインとしての設定例となります。サブディレクトリの場合とは若干異なりますのでご注意ください。
ネットワークの作成
WordPress公式ドキュメントでは次のように説明されていますが、1つのWordPressをインストールするだけで複数のWordPressサイトが構築可能です。
WordPress 3.0以降、サイトのネットワーク(マルチサイト、複数サイト)を作成できるようになりました。 (一部省略)マルチサイトを作成することにより、サイトの仮想的なネットワークが作成されます。 各サイトごとにメディアアップロードディレクトリ以外のディレクトリは作成されません。 |
この機能を有効化するにはwp-config.phpの記述を一部編集します。
KUSANAGI環境では /home/kusanagi/<<プロファイル>>/DocumentRoot/wp-config.php に配置されています。
次の行を探し、 冒頭の#(コメントアウト)を削除する #define ('WP_ALLOW_MULTISITE', true); ↓ define ('WP_ALLOW_MULTISITE', true);
wp-config.phpを書き換えたことで、WordPressの管理画面上のツールメニューにネットワークの設置が追加されます。
ネットワークの設置に進むと次の画面が表示され、サブドメインとして子サイトを作るかサブディレクトリとして子サイトを作るかを選択します。
(プラグインが有効の場合はこの画面に進む前にプラグインを全て無効にする案内が表示されます)
キャプチャが小さくてすみません(ーー;)
赤線で囲んだ文字列にはサブドメインかサブディレクトリを選択したあとは「これは後で変更することができません。」という注意書きされています。
今回はサブドメインとして作成するを選択して次の画面に進みました。
ここでは3つの設定案内が表示されます。
1つはDNSにワイルドカードを設定すること。
1つは/home/kusanagi/<<プロファイル>>/DocumentRoot/wp-config.php に表示されているコメントを追記すること。
1つは/home/kusanagi/<<プロファイル>>/DocumentRoot/.htaccess に表示されているコメントを追記すること。
DNSについてはお使いのネームサーバーに *.FQDNとしたAレコードを追加してください。
また、3つ目の.htaccessはnginxでは利用出来ないので対応不要となります。
wp-config.phpについては具体的には次のように追記します。
define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true); define('DOMAIN_CURRENT_SITE', '<<FQDN>>'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1);
ちなみにDNSについては後々設定でも大丈夫です。wp-config.phpの追記さえ行い、再度画面遷移するとWordPressのログイン画面に戻されますので管理者アカウントでログインしてください。
ログインに成功すると、ヘッダーにサイトネットワーク管理などが追加されたいつものダッシュボートと少し変わった画面が表示されるはずです。
サブドメインとしてのサイトを追加されたい場合、参加サイト > サイトネットワーク管理 > サイトを辿っていくと新規サイトの追加画面に遷移可能です。
WordPress公式サイトに掲載されている手順はここまでですが、これだけではまだサブドメインでのWordPressにアクセス出来ず、404 not foundとなります。
nginxの設定をマルチサイト用に編集する
/etc/nginx/conf.d/<<プロファイル>>_ssl.conf と /etc/nginx/conf.d/<<プロファイル>>_http.conf の記述を一部編集し、サブドメインのアクセスを受け付けるようにします。
server_name FQDN; ↓ server_name .FQDN; ※FQDNの前に.(ドット)を加える ※元の設定によってはFQDNにwww.が追加されている場合があります
編集後、nginxを再起動します。
# kusanagi nginx
nginxの設定が正常に更新されれば作成されたサブドメインのネットワークサイトも接続可能となります。
kusanagiコマンドでマルチサイト!?∑(・∀・;ノ)ノ
KUSANAGIでもマルチサイト(ネットワーク設定)による運用も動作するとは断言出来ませんが、幾つかのお客様では実稼動をしており、今のところ大きな問題は発生していないようです。
また、KUSANAGI公式サイトには掲載されていないのですが、kusanagi multisite としてコマンドラインも用意されているため、将来はmultisiteの provisionがサポートされるのかも知れません(^・ω・^)
このコマンドラインはどのような動きかと言うと、、、
次のようにサブディレクトリもサブドメインも設定出来そうな表示がされます。
# kusanagi multisite マルチサイト機能を有効化します。 1) サブディレクトリタイプ 2) サブドメインタイプ どちらをマルチサイトのモードとして使用しますか?(デフォルト:2):
ただし、実際の動作は2017.4月現在、以下2つの動作が行われるのみのためKUSANAGI環境でネットワーク設定を利用する場合は、当記事で紹介の流れでお試しいただくのが宜しいかと存じます。
1.wp-config.phpの書き換え(手順前半で紹介した define (‘WP_ALLOW_MULTISITE’, true); とする箇所)
2.サブディレクトリ型を選択した場合、<<プロファイル>>_ssl.conf と<<プロファイル>>_http.confの書き換え( # define(‘WP_ALLOW_MULTISITE’, true);のコメントアウトが削除されます)
次回、6月ごろにお邪魔させていただきます。
ありがとうございました。