こんにちは。ミヤマエです。

作業記録を書くのも、一週間続けると、だいぶ習慣づいてきました。
仕事でいうところの日報のようなものなので、
一日の作業が終わったあとの締めみたいな感じで続けられそうです。

■作業内容
WPのインストール(5分)
WPのマルチサイト設定(エックスサーバー)(6~8h)
WPの設定(3h)

作成中サイト
http://start-affiliate.info/

まだ何も投稿していない作成中のブログサイトです。
今後、ブログタイトルやレイアウトも変更になるかもしれませんので、
あくまで中間成果物です。

■解説
WPをインストールするということで、随分と身構えていたのですが、
エックスサーバーには自動インストールという機能が付いていて、
拍子抜けするほど一瞬でインストール終わってしまいました。

そのあと、マルチサイト機能を有効にする設定にトライしたのですが、
こちらは難しかったです。

ただ調べながら色々試したので、かなりWPの勉強になりました。

一応、備忘録として、
エックスサーバーのWPでサブドメイン型のマルチサイト機能を
有効にする方法についてまとめておきます。

基本的な手順はこちら

しかし、上記の手順だけでは、サブドメインのディレクトリが正常に作成されませんでした。
2017年4月8日時点のエックスサーバーの仕様ではそうなってました。

そして、サブドメインを正常に作成するための手順がこちら

エックスサーバーの場合、サブドメインを作成するには、
サーバーパネルにアクセスして、明示的に設定を追加しないといけないようです。

しかも、設定した後、サーバー内部の設定が切り替わるまで半日程度時間がかかるようです。

という訳で、私もまだこの後の手順は試していません。
説明を読んだところ、おそらくこの手順で正常に設定できると予想していますが、結果は明日ご報告します。

エックスサーバーでサブドメイン型のマルチサイトを有効にするときのポイントは、
ルートディレクトリのシンボリックリンクの設定をきちんと行うことです。

シンボリックリンクを作成するためには、SSHでサーバーにアクセスして作業する必要があります。
その方法はこちら

エックスサーバーの設定は以下のようになっていました。
全部、私が今日実際に試して分かったことですが、
私はwebサーバーを使うこと自体が初めてなので、
何か誤解や勘違いがあるかもしれません。
間違っている点などあれば、コメントでご指摘いただければと幸いです。

例として、test.comというドメインを取得して、サイトを作成する場合を説明します。

エックスサーバーのサーバーパネルでドメインを設定すると、
サーバーのルート直下(TeraTermでアクセスしたとき、パスが / となる場所)に、
「test.com」というフォルダができます。

WPをインストールするときに、インストール先として、

http://test.com/

を指定すると、「test.com/public_html」というディレクトリにWPはインストールされます。
他のサイトの説明をみると、http://test.com/ をトップページにしたかったら、
「test.com」の直下にWPをインストールしなくてはいけないと書いてあります。

しかし、現状エックスサーバーでは、何か別の設定がされているようで、
「test.com/public_html」にインストールすることで、
http://test.com/ がトップページになるようです。

http://test.com/を指定してインストールすることで、
「test.com/public_html」にWPが自動インストールされます。
しかし、トップページはhttp://test.com/public_html ではなく、
ちゃんとhttp://test.com/となります。

次にサブドメインを作った場合です。
サブドメインを作ると、「test.com/public_html」にサブドメイン名のフォルダができます。

例として、sub.test.comというサブドメインを追加した場合、
「test.com/public_html/sub」というディレクトリができます。

http://sub.test.com/ というURLと、
「test.com/public_html/sub」というディレクトリが対応していると理解しています。

そして、先ほどのシンボリックリンクの話になります。
WPは「test.com/public_html」にインストールされているので、
サブドメインにアクセスしたときもここを参照するようにする必要があります。

そのようにするには、
「test.com/public_html/」」に、「sub」というシンボリックリンクを作成し、
そのリンク先を「test.com/public_html」に設定します。

そうすると、
http://sub.test.com/ にアクセスしたとき、
「test.com/public_html/sub/」 からリンクされて「test.com/public_html」を参照し、
WPが起動するようになります。

上記のシンボリックリンクを貼るためのSSHコマンド操作が以下になります。

cd /test.com/public_html
ln -s /test.com/public_html ./sub

(修正:4/9)
lnコマンドは、相対パスではなく、絶対パスで指定するそうです。
ln -s ~/test.com/public_html ~/test.com/public_html/sub

「~」はここでは波線になってしまっていますが、TeraTermで打ち込むとチルダという記号になります。
これはサーバーにログインしたときのディレクトリを表し、ホームディレクトリというそうです。

上の記事で、「TeraTermでアクセスしたとき、パスが / となる場所」と書いてますが、
そこと同じディレクトリです。てっきりここが最上位のディレクトリだと思っていたのですが、
SSHでサーバーにアクセスして、ディレクトリを見ると、ここも中間のディレクトリのようです。

この設定をしたあと、WPの方でサブドメインサイトの追加を行います。


本日はここまで設定したのですが、未だにhttp://sub.test.com/にアクセスすると403エラーが出ます。
サブドメインの内部設定が完了するのに半日ほどかかるそうなので、もうしばらく待ってみます。
 

それでは、今回も最期までお読みいただきありがとうございました!
エックスサーバーのサブドメイン追加は、結局、設定反映が完了するまで、24時間近くかかりました。
これは状況によるそうなので、半日程度が目安であり、場合によっては、もっとかかるそうです。

サブドメインの追加が完了したので、
シンボリックリンクを追加してみました。
しかし、403エラーが出て表示できず。

調べたところ、lnコマンドの使い方が間違っていました。
昨日の記事の該当箇所を修正しました。

以下、参考サイトです。

Xサーバーでサブドメイン型のワードプレスのマルチサイトの作り方について
https://teratail.com/questions/53783

UNIXの基礎知識
http://www.ysr.net.it-chiba.ac.jp/data/unix2.html

プログラミング専門のQAサイト
https://teratail.com/
 

上記のサイトに全く同様の質問がされていましたね。

そして、正しい方法でリンクを作成したところ、
ようやくサブドメインサイトのダッシュボードが表示できました!

もう一点書き忘れました。
影響があったかわかりませんが、
.htaccessに、Options +FollowSymLinks という一行を加えています。

これで、エックスサーバーでも、サブドメイン型のWPマルチサイト運営が可能ということがわかりました。

しかし、私がやりたかったのは、サブドメインではなく、複数ドメインです。
あくまで、サブドメインを追加するのはその過程です。
という訳で、昨日インストールした複数ドメインを運用するためのPluginを再度設定してみました。

シンボリックリンクの設置を、サブドメイン追加のときを参考に、

 ln -s ~/test.com/public_html ~/test2.com/public_html

としてみました。ここで、 test2.comは利用したい別ドメインです。

しかし、そうすると、確かに参照はできたようですが、
sunrise.php で致命的なエラーが起きたという警告文が表示されました。
そのほか、空のオブジェクトを定義しようとしている、とか、いくつかエラーが出ました。

しばらく調査してみたのですが・・・・ギブアップ。

やはりエックスサーバーの環境設定は特殊なようで、
複数ドメインをまたいでWPのマルチサイト管理機能を使おうとすると、
もう少しPHP(Apache:WEBサーバーアプリケーション)の知識がないと無理そうです。

ちなみ、エックスサーバーで複数ドメイン自体は運用することができます。
それぞれのドメインでWPをインストールすれば、普通に使うことできます。
観念して、そのように使うようにします。

一応、今回の収穫としては、エックスサーバーでも、サブディレクトリ、サブドメインであれば、
WPのマルチサイト管理機能が使えるということがわかりました。

一方、やはり「守破離」のうち、初心者は「破」をやってをいけないということですね。
悪くはないと思いますが、時間的に見て、効率が悪いです。