普通のレンタルサーバーならサブディレクトリにWordPressをインストールすることは簡単にできますよね。
しかしVPS上で動作するKUSANAGIでサブディレクトリ化するには、ちょっと一手間加えてあげないとうまく動きません。
ちょうどConoHa VPS のサブディレクトリサイトを構築したので、手順をメモしておきます。
この記事のコンテンツ
KUSANAGIでサブディレクトリ化する手順
ここからはVPSのコンソール、もしくはSSH接続してある状態を前提として説明していきます。
新規にプロビジョニングする
はじめに、サブディレクトリ以下に置きたいサイトをプロビジョニングします。
# kusanagi provision 【プロファイル名】
通常通りにコマンドを入力していき、DBユーザーやパスワードを設定していきましょう。
ホスト名はルートディレクトリにしたいドメインがいいと思います。
プロビジョニングが終わったら、まだアクセスせずにそのまま置いておきます。
アクセスしてしまっても、wp-config.phpが作成されてなければ(DBに書き込まれていなければ)セーフです。
サブディレクトリを作成
次にサブディレクトリサイトを置きたいプロファイルのDocumentRoot以下に、kusanagi権限のディレクトリを作成します。
# cd /home/kusanagi/【サブディレクトリを置きたいプロファイル】/DocumentRoot
# mkdir -m 0777 【サブディレクトリ名】
# chown kusanagi:kusanagi 【サブディレクトリ名】
# cd 【サブディレクトリ名】
ちょっと紛らわしいですけど、例えばプロファイルexampleにsubというディレクトリを置きたいとすると、以下のようになります。
# cd /home/kusanagi/example/DocumentRoot
# mkdir -m 0777 sub
# chown kusanagi:kusanagi sub
# cd sub
サブディレクトリ名と、前項でプロビジョニングしたプロファイル名は一致している必要はありませんが、管理がめんどくさいので同じ名前にしておくといいでしょう。
WordPressをサブディレクトリに移動する
はじめにプロビジョニングしておいたWordPressを、作成したサブディレクトリに移動します。
移動方法はなんでも良さげですが、圧縮して解凍するのが体感速くて楽でした。
# tar zcf ./wp.tar.gz /home/kusanagi/【プロファイル名】/DocumentRoot
# tar xf wp.tar.gz
圧縮と解凍自体はわりと秒で終わるので、淡々とコマンドを打っていきましょう。
展開が終わったらゴミになった書庫ファイルを削除するのも忘れずに。
# rm -f wp.tar.gz
WordPressを初期設定する
ここまでできたら、ようやくWordPressにアクセスできるようになります。
ホストをexample.comとして、https://example.com/subにアクセスするとWordPressの初期設定画面が表示されます。
プロビジョニングの時に設定したデータベース名とパスワードなどを入力して、WordPressのインストールを実行しましょう。
この辺はすでにWordPressサイトを運営している方なら特に問題なく終わると思います。
サブディレクトリ化は残念ながらこれで完了、というわけにはいきません……。
このままだと管理画面とフロントページは問題ないのですが、パーマリンクやクエリが付くとルートディレクトリに飛ばされて404になってしまいます。
これをどうにかするために、Nginxの設定ファイルを変更しましょう。
Nginxの設定を変更する
URLに/sub/のようなサブディレクトリが付与されているけど、それに対してどう処理するかの記述がされていないために起こる不具合ですので、適切に分岐させてあげるよう設定します。
# vi /etc/nginx/conf.d/【ルートディレクトリのプロファイル名】_ssl.conf
ルートディレクトリのプロファイル名は、前項までの例でいうとexampleになりますね。
confファイルの編集に入ったら、INSERTモードでlocationディレクティブを追記してあげましょう。
location / {
try_files $uri $uri/ /index.php?$args;
}
これの直後あたりに以下を追記します。
location /【サブディレクトリ名】 {
try_files $uri $uri/ /【サブディレクトリ名】/index.php?$args;
}
ここまでの手順でようやくサブディレクトリのWordPressが正常に動作するようになります。
サブディレクトリ化したい時の別の選択肢
ここまで手順を書いてきましたけど、そもそもこんな面倒くさいことしなくてもサブディレクトリ化するだけなら別のアプローチもあるにはあります。
一つはWordPress標準のサイトネットワーク機能を利用すること。
ただしバグまみれ&サポートされていないプラグインも多いので、わりと茨の道だったりします。
もう一つは経験豊富な専門家に依頼すること。
KUSANAGI設置代行サービスなどがありますので、こういった業者さんを利用するのもアリでしょう。
僕もエンジニアとして事業を行っておりますので、お問い合わせやTwitterのDMからご相談ください。
そして最後に、いっそKUSANAGIを諦めてConoHa WING のようなレンタルサーバーに移行してしまうなんてのも選択肢の一つだとは思います。
WINGも十分過ぎるほど爆速です。
さいごに
KUSANAGIのサブディレクトリ化についての記事を書きましたが、特にNginx周りの設定は少しでも書き方を間違えると同じKUSANAGI上のすべてのサイトが死にます。
あまり無理をせず、難しそうならサブディレクトリを諦めるか安全策を選ぶようにしてください。
マジで責任取れませんからね……。
2 件のコメント
お聞きしたいのですが、
現在運用しているサイトのプロファイル名が「aaa_html」だった場合、
以下のような設定でいいのでしょうか?
# kusanagi provision 【aaa_html】
# cd /home/kusanagi/aaa_html/DocumentRoot
よろしくお願いいたします。
佐々木さん、コメントありがとうございます!
aaa_htmlがプロファイル名の場合はコマンドは下記のようになります。
# kusanagi provision aaa_html
# cd /home/kusanagi/aaa_html/DocumentRoot
記事内にて記載しているプロファイル名などは、角かっこ(【】)までが置換対象になっております。
実際のコマンドやファイル名に角かっこは含めないようにしてください。
Nginxの設定ファイルを触る内容となっておりますので、一つ間違えると親ディレクトリのサイトまで表示されなくなったり等リスクがあることをご承知おきください。
不安だったりよくわからない場合は記事後半の別の選択肢も検討いただけると安心かなと思います。