wordpress マルチサイト化 サブドメイン編

久々にwordpressネタを。とある事情でもう1つサイトを作る必要が出てきた。別に何で作ってもよかったんだけど、最近はすっかりwordpressを使い込み始めているし、環境も揃っているから、wordpressでささっと作ってみる事にした。当初は律儀にもう1つwordpress環境を作るつもりだったけど、コードの二重修正とか両者の運用的な同期とか手間の方が大きそうなので、マルチインスタンス的なことが出来ないか調べてみた。

すると、マルチサイトという機能で要件が満たせそう。同一ドメインだけかと思いきや、サブドメインでのマルチサイト化も可能。更にプラグインを組み込めばが別ドメインも対応できそうだ。結構怖そうな修正になるので、バックアップサーバ側を切り離して実験することに。念のため、ソースディレクトリのバックアップは取っておく。mysqlのデータはマスターサーバ側のデータを戻せばよいだけ。

既に運用に入っている www.nodoka.org に新サイト newdomain.com (仮称)を追加するつもりだが、まずはサブドメインで機能評価からやってみる。newdomain.nodoka.orgという試験用のドメインを用意した。以下の順に作業を進めていく。

  1. プラグインの停止
  2. WP_ALLOW_MULTISITE設定追加
  3. 管理ページでネットワークの作成作業
  4. wp-config.phpと.htaccessファイル修正

まずはプラグインの停止から。作業前に動作中のプラグインをメモしておくこと。管理ページのプラグイン>インストール済みプラグインで全てのプラグインを停止する。一部、停止できないプラグインがあったが、ソースのパーミッションがおかしかったので、全て正しい形に修正しておいた。ソースはgitで管理しているんだけど、git pullするとownerが作業ユーザーになっちゃう。今度、対策を考えよう。

次にwp-config.phpをに以下の設定を加える。WP_DEBUG設定の次の行くらいに。

define('WP_ALLOW_MULTISITE', true);

続いて、管理ページのツール>ネットワークの設置を選択。既に運用中だからか、サブディレクトリ構成は選択できず、サブドメイン構成の一択だった。逆だったら困ったけどサブドメインなら問題ない。気になったのは以下のメッセージ。

サーバーアドレス
サイトネットワークの機能を有効にする前に siteurl を nodoka.org に変更することをおすすめします。
www.nodoka.org のようなアドレスの前に www を追加してもサイトへ行けますが、リンクには www 接頭辞がつきません。

よくわからないが、設定変えずにそのまま『インストール』ボタンを押すのが無難。真面目にsiteurl変更して進めたら、『データベース接続確立エラー』が表示されて何も出来なくなったよ。。。インストールが終わったあとにDBを覗いてみると、wp_siteやらwp_sitemetaというテーブルが作成されていたので、その辺りに変な設定が入ったぽいが自力では直せなかった。

インストール後の画面を参考に、以下の設定をwp-config.phpのMULITSITE設定辺りに追加。この画面はまだ表示しておく。

define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'www.nodoka.org');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

同じディレクトリの.htaccessを以下の設定に修正。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

インストール後のページにログイン用のリンクあるので、それを使って再ログイン。左上に『参加サイト』というメニューが現れるので、参加サイト>サイトネットワーク管理者>サイトを選択。新規追加で新しいサイトを登録する。

サイトのアドレス : newdomain
サイトのタイトル : 新サイト
サイトの言語 : 日本語
管理者メールアドレス : admin@newdomain.com

サイトのアドレスはサブドメイン部のみを登録するので注意。『サイト追加』ボタンをクリックすると新サイトが作成される。DBを見てみるとwp_2_postsみたいな感じで、新サイト用のスキーマが用意されていた。

ここまで終わると、ブラウザからもnewdomain.nodoka.orgにアクセスする事が出来た。想像よりは安定して動作しているが、やはり怖い作業なので皆さん慎重に。成功すれば、いくつもサイトを作りたい衝動に駆られること間違いなしw

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)