エックスサーバーを利用したWordPressのサブドメイン型マルチサイト化の方法

今回は、弊社のサービスである「WEBマニュアル」を構築する際に利用しているWordPresssのサブドメイン型マルチサイト化の方法をまとめます。

WordPressのサブドメイン型のマルチサイトは、SaasのようなWEBサービスを展開するに非常に有効です。

私の考えているWordpressのマルチサイトのメリットは下記の通りです。

  • 一つのドメインで複数のサイトを作成可能
  • プラグインの管理・更新の一括更新が可能
  • テーマの管理・更新の一括更新が可能

要するに、メンテナンスが簡単になります。

また、今回の記事を参考にドメインの変更が出来る方は、下記の条件が揃っている方です。

  • Xserverを利用している
  • WordPressを利用している
  • ファイル転送ソフト(FTP)を利用している

マルチサイトとは何か?

サーバーにインストールした 1つの WordPressを使って複数の Webサイトやブログを運用することが可能です。

マルチサイトには以下の3通りありますが、今回ご紹介する方法はサブドメイン型です。

  • サブディレクトリ型
  • サブドメイン型
  • 複数ドメイン型

マルチサイト化の手順

wp-config.phpへの追記

define('WP_ALLOW_MULTISITE', true);

下記は記述の例です。

/** マルチサイト化 */
define(‘WP_ALLOW_MULTISITE’, true);
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

元あった場所にwp-config.phpを上書きします。

ネットワークの設定

WordPress管理画面で「ツール」→「ネットワークの設定」を選択します。(「ネットワークの設定」は新しく追加されます。)
ネットワーク作成画面で「サブドメイン」を選択し「インストール」をクリックします。

ネットワークの有効化

「ネットワークを有効化中」画面に表示された内容を順番に実施していきます。

wp-config.phpへ指定されたコードを追記します。

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

下記は記述の例です。

/** マルチサイト化 */
define(‘WP_ALLOW_MULTISITE’, true);
define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, true);
define(‘DOMAIN_CURRENT_SITE’, ‘example.com’);
define(‘PATH_CURRENT_SITE’, ‘/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

.htaccessへ指定されたコードを追記し元の場所へ.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).*) [L]
RewriteRule ^(.*\.php)$ [L]
RewriteRule . index.php [L]

下記は記述の例です。

# BEGIN WordPress
IfModule mod_rewrite.c

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).*) [L]
RewriteRule ^(.*\.php)$ [L]
RewriteRule . index.php [L]

/IfModule
# END WordPress

追記が完了したらWordPress管理画面から一度ログアウトし再度ログインします。

サイトネットワーク管理者での設定

再度ログインし新しく追加されている「サイトネットワーク管理者」メニューに入り「設定」→「ネットワーク設定」を選択します。

ネットワーク設定画面の「言語設定」で「日本語」を選択し「変更を保存」をクリックします。

子サイトの追加

WordPress管理画面の「サイトネットワーク管理者」から「サイト」→「新規追加」を選択します。

新規サイトの追加画面でサブドメインやサイトのタイトル管理者メールアドレスを入力し「サイトを追加」をクリックします。

これで子サイトの追加は完了かと思いきや、そうではありません。

エックスサーバー側でサブドメインの追加が必要です。

エックスサーバー側でサブドメインの追加

サーバーパネルより上記手順で設定したものと同様のサブドメインを設定します。

1日ほど経過すると、Xserverのメッセージの画面が表示されます。

/ドメイン.com/public_htmlの直下にサブドメインのディレクトリが作成されており、ここにアクセスしています。

サブドメイン名のディレクトリを削除するか、リネームします。(私はフォルダ名の最後に「_1」を追記し、リネームしています。)

サブドメイン名のシンボリックリンクをpublic_htmlに張る

参照先を変更する必要があるので、SSHを利用し設定変更を実施します。

SSHを利用した設定

SSHの接続設定はエックスサーバーのサーバーパネルから行います。

SSH設定をONにし公開鍵認証用鍵ペアの生成を行います。

パスフレーズを任意で入力しSSH接続に必要な、公開鍵認証用の鍵を作成して保存します。(パスフレーズは後ほど利用するので覚えておいてください。)

ターミナルクライアントの設定

私はSSH接続にTeraTermを利用しているので、今回はTeraTermで紹介します。

  • ホスト名:ご自身のサーバー番号.xsrv.jp
  • TCPポート:10022

上記を入力し、OKを選択するとSSH認証画面になります。

  • ユーザー名:ご自身のサーバーID(エックスサーバー契約時に設定したID)
  • パスフレーズ:公開鍵認証用鍵を作成したときに入力したパス
  • RSA/DSA/ECDSA/ED25519鍵を使うにチェックし、秘密鍵をアップロード
POINT

秘密鍵の選択の際は、すべてのファイルを表示にすると表示されます。

接続されると以下が表示されます。

[サーバID@sv9999]$

以下を入力します。

[サーバID@sv9999]$ cd /home/サーバーID/サイトのドメイン/public_html

次は以下が表示されます。

[サーバID@sv9999 public_html]$

以下を入力します。

[サーバID@sv9999 public_html]$ ln -s /home/サーバID/サイトのドメイン/public_html /home/サーバID/サイトのドメイン/public_html/設定したサイトのサブドメイン

最後に以下を入力します。

[サーバID@sv9999 public_html]$ ll

これでシンボリックリンクが張れているのでWordPressのマルチサイトが起動出来ます。

サイトネットワーク管理から子サイトの表示を確認出来たら完了です。

手順通り進めると、意外と簡単にWordPressのサブドメイン型マルチサイトの構築が可能ですね。