エックスサーバーでサブドメイン型のワードプレスマルチサイトを設定する方法

サイトのテーマとは違うので気が引けたんですが困ってそうな人が多かったので共有しようと思いまして記事にしました。

プラグインで実現できそうな記事も発見しましたが、ワードプレス側に何かするのはちょっと違うかな?と思い、色々試してみた結果を共有致します。

どうも、はじめまして。ここのサイトで裏方しているたかさんと申します。普段は記事を書く役目ではありませんが、サイト運営者の方に許可を頂いて記事を書きました。

前半は引っ越しの理由を記載しております。そんな情報いらないよ!という方は、目次から前半を飛ばし、具体的な設定方法から閲覧して下さい。

海外ホスティング会社のbluehostから日本のホスティング会社、エックスサーバーに引っ越しました。

スポンサーリンク

bluehostのいいところ

一番便利だと思った所をあげますと

  • 24時間365日サポート
    (ただし、英語でのやりとりです)
  • ドメイン・メールアドレス・My SQL DBの容量 無制限
    (ただし、ファイル数の制限あり)
  • 自動インストールできるソフトウェアが多数
  • 初年度無料ドメインプレゼント
  • 比較的安価

です。

海外中心でサイト運営されるのであれば、結構おすすめです。
bluehostはこちら

サーバー引っ越しをした理由

bluehostの価格・機能の面で言えば素晴らしいです。ほかのサイトについてはbluehostで運用しています。

ただ、利用目的、環境が今回、ご依頼を受けたサイトにはそぐわなかったためです。

実際運用して思いのほかレスポンスが良くなかった

今回、サイトを開設したいとのお話を受けまして、ちょうど海外向けサイト用に契約していたbluehostにブログを開設致しました。

ところが運営者の方からレスポンスが遅く感じるといわれまして、急遽こちらのサイトは国内のホスティング会社に引っ越しすることとなりました。

一番重要視したのは稼働率です。いくらサービス内容が良くてもサイトが見れない状態だったら意味がありません。

次がレスポンスタイム。そもそも、国内向けサイトのために引っ越しを考えているので、これが遅ければ引っ越す意味が無いですから。

こういった要件を中心に国内ホスティングサービス会社を調べていくとエックスサーバーが丁度良いと思い、引越し先と決めました。

国内のホスティングサービス会社のサービスが思いのほか向上していた

国内向けサイトのということで、国内のホスティング会社を調べてみたら以前と比べて、色々とよくなっていて値段もこなれていました。

ちょっと浦島太郎状態でした。

何よりサーバーの性能がとても良くなっており結構びっくりしました。多少、サービスの面で見劣りするところはありましたが、費用対効果の面でバランスがとれていて、納得のいくものでした。

管理画面がシンプルで使いやすい

bluehostでは、機能満載で管理画面もその分多くの項目がありました。ただ、実際に使うものはそれほど多くなく、機能過剰めの感があります。

対して、エックスサーバーでは無駄なく必要最小限の管理画面で操作効率は良くなったと感じました。

具体的な設定方法

さて、おまたせ致しました。本題に入りたいと思います。
ワードプレスのインストールなどは割愛します。

事前準備

  • エックスサーバーの契約(当たり前ですね)
  • ワードプレスのインストール(マルチサイト化前。手動・自動はお好みで)
    ※インストール時、サブディレクトリとしてインストールするとサブドメインに出来ませんのでご注意下さい
  • SSHでの接続設定
    ※unixのコマンドを実行する必要があるので必須です
  • ターミナルクライアントの設定
    (TeraTermでもMacのターミナルでもお好みのもので)

これらに関しての説明は割愛致しますが、ご質問のある方はコメント下さい。対応できる範囲のコメントでしたら回答致します。

サブドメイン型マルチサイト設定手順

ワードプレスのマルチサイト設定を行う

こちらに来られる殆どの方はご存知かと思いますが、一応説明しますね。

    1. mysqlとワードプレスのファイル一式をバックアップ
    2. wp-config.phpの編集
define('WP_ALLOW_MULTISITE', true);

を追記。既に設定している方はフラグがtrueになっているか確認。ファイルマネージャからでも、ftpからでもご随意に。

    1. ワードプレスの管理画面、左のメニューの、ツール→ネットワークの設置ここでネットワークの設置が出ていない方は前段のwp-config.phpの編集ができていないと思います。確認の上、やり直して下さい。
    2. WordPressのサイトネットワークを作成ここで、サブドメイン型を選び、タイトルと管理者のメールアドレスを設定して下さい。
    3. wp-config.phpと.htaccessファイルの編集画面にそれぞれのファイルの編集内容が表示されているので対象のファイルにコピペして下さい。

注意する点としては、.htaccessです。1行目から4行目は最初から記述されていますのでこちらを上書きしないように気をつけて下さい。

なお、下記コード中に記載のサーバーIDとドメイン名の部分はご自分の環境に合わせて読み替えて下さい。

また、実際に貼り付ける位置ですが<IfModule mod_rewrite.c>以下に貼り付けて下さい。
<IfModule mod_rewrite.c>がない場合は、記述して下さい。

suPHP_ConfigPath /home/サーバーID/ドメイン名/xserver_php/
AddHandler fcgid-script .php .phps
FCGIWrapper "/home/サーバーID/ドメイン名/xserver_php/php-cgi -c /home/サーバーID/ドメイン名/xserver_php/php.ini" .php
FCGIWrapper "/home/サーバーID/ドメイン名/xserver_php/php-cgi -c /home/サーバーID/ドメイン名/xserver_php/php.ini" .phps

# 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

wp-config.phpは、3行目の定義部分は各サイトのドメイン名となります。

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);
エックスサーバー側の設定
  1. サブドメインの設定サーバーパネルよりサブドメインの設定をして下さい。
    同時にドメイン下のpublic_htmlにサブドメイン名のディレクトリが生成されます。


  2. シンボリックリンクの作成作成されたサブドメイン名のディレクトリを削除するか、リネームをしてpublic_htmlディレクトリ直下にサブドメイン名でpublic_htmlとにシンボリックリンクを張ります。

    pwdコマンドでリンク先を先に表示して、コピペしたら楽かと思います。

    [サーバID@sv9999 public_html]$ mv example example2
    [サーバID@sv9999 public_html]$ pwd
    /home/サーバID/ドメイン名.com/public_html
    [サーバID@sv9999 public_html]$ ln -s /home/サーバID/ドメイン名/public_html /home/サーバID/ドメイン名/public_html/example
    
    [サーバID@sv9999 public_html]$ ll
    合計 188
    -rw-r--r-- 1 サーバID members 6633 10月 19 2015 default_page.png
    lrwxrwxrwx 1 サーバID members 49 10月 11 14:09 example -> /home/サーバID/ドメイン名/public_html
    drwx--x--x 2 サーバID members 58 10月 11 13:16 example2
    -rw-r--r-- 1 サーバID members 418 8月 20 2015 index.php
    -rw-r--r-- 1 サーバID members 19930 1月 12 2017 license.txt
    -rw-r--r-- 1 サーバID members 7361 9月 20 17:31 readme.html
    -rw-r--r-- 1 サーバID members 4951 8月 20 2015 wp-activate.php
    drwxr-xr-x 9 サーバID members 4096 10月 19 2015 wp-admin
    -rw-r--r-- 1 サーバID members 271 8月 20 2015 wp-blog-header.php
    -rw-r--r-- 1 サーバID members 5007 8月 20 2015 wp-comments-post.php
    -rw-r--r-- 1 サーバID members 3834 8月 20 2015 wp-config-sample.php
    -rw------- 1 サーバID members 3793 6月 3 17:12 wp-config.php
    drwxr-xr-x 8 サーバID members 136 10月 11 13:56 wp-content
    -rw-r--r-- 1 サーバID members 3286 8月 20 2015 wp-cron.php
    drwxr-xr-x 12 サーバID members 4096 10月 19 2015 wp-includes
    -rw-r--r-- 1 サーバID members 2380 8月 20 2015 wp-links-opml.php
    -rw-r--r-- 1 サーバID members 3123 8月 20 2015 wp-load.php
    -rw-r--r-- 1 サーバID members 34669 8月 20 2015 wp-login.php
    -rw-r--r-- 1 サーバID members 8459 1月 12 2017 wp-mail.php
    -rw-r--r-- 1 サーバID members 11062 8月 20 2015 wp-settings.php
    -rw-r--r-- 1 サーバID members 25124 8月 20 2015 wp-signup.php
    -rw-r--r-- 1 サーバID members 4035 8月 20 2015 wp-trackback.php
    -rw-r--r-- 1 サーバID members 3055 8月 20 2015 xmlrpc.php
    [サーバID@sv9999 public_html]$ 
    
    

※注意事項
Xserverでサブドメイン型のマルチサイト化するにあたり、サーバーパネルからサブドメインの追加をするのですが、すぐに反映されません。サブドメイン追加完了画面に数時間から最大2日かかるというメッセージが出ているはずです。

直後にアクセスしても、404エラーが出てしまいますのでご注意下さい。

それを見落として、小一時間ほど色々と無駄なことをやってしまいました。慌てず焦らず、待っていましょう。

WordPress側の設定
  1. WordPressの管理画面にログインします
  2. 正しく設定されていれば、左上に参加サイトという項目が追加されているはずです。

  3. サイトネットワーク管理からダッシュボードを開きます
  4. 新規サイトを作成をクリックします
  5. 必要事項を入力し、作成ボタンをクリックします
  6. ここで気をつけないといけないのは追加するユーザを現在ログインしているユーザと別のももにした場合、現在のユーザでは表示されません。
    これは、ユーザごとにブログを任せたい場合、他のブログが見えるとまずいわけでそのための機能かと思います。

    特に問題がなければ、現在ログインしているユーザのメールアドレスを入力することをおすすめします。

これで、サブドメイン型のマルチサイトができるはずです。

追加したサブドメインのブログは

左上の参加サイト一覧に表示されているかと思います。
リストからクリックしますと、いつものとおり操作できますので、後はご随意に。

まとめ

キモになる部分は

  • サーバーパネルよりサブドメインを設定するところ
  • サブドメイン名のシンボリックリンクをpublic_htmlに張るところ

です。

ご参考になれば幸いです。

関連記事/広告

スポンサーリンク

コメント

  1. gomi koichiro より:

    [2.シンボリックリンクの作成作成されたサブドメイン名のディレクトリを削除]
    ここで削除するのは

    サブドメイン追加時に作成されたサブドメイン名のディレクトリを削除すれば良いのでしょうか?

    • sitemaster より:

      こんにちは、わかりにくいとのご指摘が多かったので該当箇所を修正致しました。

      ご質問の件ですが、public_html ディレクトリで

      rm -rf サブドメイン名

      としていただければ、削除可能です。

  2. syei より:

    どうやってもうまく出来ません。
    こちらの記事の事はあちこちのサイトで見かけますが、
    どのサイトでも成功者の書き込みがありません。
    どうやるんでしょう?
    シンボリックリンクってもサブドメインのダッシュボードに入れないのですが。

    • sitemaster より:

      説明が悪くて済みません。

      説明がところどころさらっとしすぎていてわかりにくいみたいです。
      記事を修正いたしましたのでご参考にしてみて下さい。

  3. sitemaster より:

    はい、サーバパネルより追加したサブドメイン名と同じ名前のディレクトリができます。

    ターミナルから削除するのはそのディレクトリになります。

  4. […] あとは、エックスサーバーでサブドメイン型のワードプレスマルチサイトを設定する方法 の 具体的な設定方法 からを参照 […]

  5. […] 詳しくは、こちららエックスサーバーでサブドメイン型のワードプレスマルチサイトを設定する方法の通りなのですが、いつか消えてしまうかもしれないと思ったので、記載をしておき […]

  6. 伊藤 より:

    質問失礼します。

    今回はサブドメイン型のマルチサイトということでしたが「WordPress MU Domain Mapping」というプラグインを使用すれば、独自ドメイン(複数ドメイン型)でも追加できるのでしょうか?

    色々試しても404のエラーが消えません。
    エックスサーバーは複数のドメインを同一ディレクトリに入れれないという情報を耳にしたので、その辺の事情をご存知であれば教えていただきたいです。
    よろしくお願いします。

    • sitemaster より:

      コメントありがとうございます。

      WordPress MU Domain Mappingのプラグイン自体は利用したことがないのでなんとも言えないのですが、
      404エラーが出る理由としては、まず、URLに指定されたサブドメインに対応するIPアドレスが登録されていないと見つかりません。
      そのため、XServerでのコンパネでサブドメインの設定をするわけです。

      ちなみに、コンパネでサブドメインの指定をしてもすぐに反映されないのはDNSへの登録が伝播するまでに時間がかかるためです。
      XServerのマニュアル
      https://www.xserver.ne.jp/manual/man_domain_subdomain_setting.php
      にもありますとおり、

      なお、ご利用サーバーにサブドメイン設定が反映されるまで半日程度かかる場合があります。

      とあるのはそのためです。

      そして、そのサブドメインと紐づくコンテンツ(htmlなど)のあるディレクトリと紐付けるために自動でディレクトリが作成される、と言う流れがコンパネでサブドメイン追加の手順を取る理由です。

      そして、こちらでお伝えしているのは、そのコンテンツのディレクトリをだまくらかしてシンボリックリンクとしてメインのコンテンツ、この場合、wordpressインストール先、に指定しているわけですね。

      その先はwordpressのマルチサイト機能によって実現されるんですね。

      なので、お使いのWordPress MU Domain Mappingがそのあたりの処理をどのように行っているかわからない限り、お答えしようがないのです。

      お役に立てず申し訳ないのですが、ご理解の程よろしくお願いいたします。

XserverとWPでマルチサイト – ジーニー研究所 にコメントする コメントをキャンセル