ノウハウ
[エンジニア向け]

KUSANAGIでサブディレクトリにWordPressを複数インストールする

ノウハウ
テクニカルサポート

エクスクラウドのWordPressホスティングで採用するKUSANAGIでWordPressをセットアップすると
http://example.com/ のように指定したFQDNがトップディレクトリとなります。

今回はこれを http://example.com/wp1/ などのようにサブディレクトリとしてインストールしたい場合の紹介となりますが、その前に、WordPressには『サイトのネットワーク』という機能が用意されており、この機能を用いることでも『サブディレクトリ』または『サブドメイン』のWordPressが設置可能です。
※ただし、当記事では意図的にこの機能は使わない説明となります
※以降はサブディレクトリとして運用する場合の例となります。

WordPress『サイトのネットワーク』機能概要

この機能を用いた場合、元のWordPress( http://example.com/ )がネットワークのメインサイトとなり、『サブディレクトリ』としてのWordPressはネットワーク上のサイトと言う扱いとなります。

また、ネットワークのメインサイト管理者は新たに特権管理者として割当てられ、ネットワーク上のサイトを含めてすべての機能にアクセスできます。
対して『サブディレクトリ』として作成したネットワーク上のサイトにもそれぞれ管理者を割当てることが可能なので、管理者を分ければ他のディレクトリのWordPress管理者に操作される心配はありません。

例:『サイトのネットワーク』機能では以下の3つのウェブサイトも1つのWordPressで管理可能となる

サイト1.http://example.com/ 特権管理者(ネットワーク管理者)すべての権限がある
サイト2.http://example.com/wp1/ 管理者(サイト管理者)/wp1/のサイトに対して殆どの権限がある
サイト3.http://example.com/wp2/ 管理者(サイト管理者)/wp2/のサイトに対して殆どの権限がある

サイト2とサイト3の管理者は殆どの権限があると書きましたが、プラグインのインストールなど一部の機能は特権管理者しか操作が行えないため、『サブディレクトリ』のWordPressでも自由にプラグインを入れたりしたいとなると『サイトのネットワーク』機能では対応出来ません。

そのため、当記事では『サイトのネットワーク』機能ではない、サブディレクトリにKUSANGI環境のWordPressを設置する手順の紹介となります。

なお、主な手順は以下のKUSANAGIユーザーグループにあった投稿を参考にさせていただきましたが、
当記事では http://example.com/wp1/ と wp2/ を作成し、 http://example.com/には設置しない手順となります。
kusanagiユーザーグループ:TOP › フォーラム › インストール › DocumentRoot以下のサブディレクトリにWordPressを複数インストール

KUSANAGIによるWordPressの設置

エクスクラウドであればサービスを購入いただき暫くすると自動的にWordPressが設置され、購入時に指定したURLにアクセスすれば次のインストール画面が表示されます。

 

エクスクラウドの環境ではなかったり、新規に kusanagi provision でWordPressを設置した場合は上記画面ではなくデータベース名などを入力する画面となりますが、いずれの場合も情報を何も入力せずに次の作業に進んでください。

サブディレクトリの作成とWordPressセットアップ前の環境をサブディレクトリに移動する

以降はシェル(SSH)によるリモート作業となります。

1.excloudのドキュメントルートに移動します(エクスクラウドではexcloudが初期プロファイルです)
2.サブディレクトリ(wp1)を作成します
3.サブディレクトリのパーミッション、ユーザー:グループを変更します
4.ドキュメントルートのファイルを作成したサブディレクトリに移動します
5.サブディレクトリ(wp1)をコピーしwp2を配置します

1.~5.までのコマンドライン例:

# cd /home/kusanagi/excloud/DocumentRoot
# mkdir -m 755 wp1
# chown -R kusanagi:kusanagi wp1
# ls | grep -v -w wp1 | xargs -i mv {} wp1/
# mv .[^\.]* wp1/
# cp -rp wp1 wp2

サブディレクトリに設置したWordPressのインストール

ここまでの手順で http://example.com/wp1/ または http://example.com/wp2/ にアクセスすればサブディレクトリへのWordPressインストールが可能です。

ただし、このままではwp1もwp2も同じデータベース設定となっていますので、もしwp1にアクセスしてWordPressをインストールした場合はwp2用のデータベースとデータベースユーザーを作成し、wp-config.phpの調整後、wp2へアクセスしてください。

wp1とwp2のデータベースを分ける作業例:
1.wp2用のデータベースとデータベースユーザーを作成する
2./home/kusanagi/excloud/DocumentRoot/wp2/wp-config.phpを編集する

# mysql -u root -p
Enter password:(エクスクラウドではkusanagiユーザーのパスワードと同じものを入力してください)
MariaDB [(none)]>
create database <任意データベース名>;
MariaDB [(none)]>
grant all on<作成したデータベース名>.* to <任意ユーザー名>@localhost identified by "<任意パスワード>";

wp2のwp-config.phpを編集し、作成したデータベース名やデータベースユーザー・パスワードを編集してください。
該当箇所は以下となります(★印の行)。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
★define('DB_NAME', '設定したデータベース名');

/** MySQL データベースのユーザー名 */
★define('DB_USER', '設定したユーザー名');

/** MySQL データベースのパスワード */
★define('DB_PASSWORD', '設定したパスワード');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

★次の項目は任意設定
$table_prefix  = '*****';
の行もwp1と設定が同じ値となりますので、好みで変更してください(変更しなくともWordPressの動作はします)

ここまでの作業で、 http://example.com/wp1/ とは別に http://example.com/wp2/ が作成されました。

wp-config.phpをサブディレクトリ以下に移動するとbcacheコマンドが利用できない問題の対応

サブディレクトリ以下にwp-config.phpを移動した場合、kusanagiのcache機能の一つであるbcacheをコマンドラインで操作しようとすると次のようにエラーとなります。

# kusanagi bcache
WordPress がインストールされていません。何もしません
完了しました。

対応方法はエクスクラウドのガイドに記載しておりますので、bcacheを利用される場合は次のガイドを参考にしてください。
ガイドの例では/wordpress に設置した場合を例としていますので、/wp1 または /wp2 を加えればエラーが表示されなくなります。
またはwp-config.phpをドキュメントルートより上の階層に移動することでもエラー回避が可能です。

<<2017.5.29追記>>
bcashe以外にkusanagi update plugin コマンドが同様にfunctions.shにて定義されていましたので、/usr/lib/kusanagi/resource/DocumentRoot/wp-content/mu-pluginsにファイルが存在しない場合はこのパスにもmu-pluginを置くか mu-pluginのディレクトリが参照可能となるようfunctions.sh を書き換えてください。

WordPressのコアファイルを移動しても問題ありませんか【WPH】

excloudのプロファイルを使うメリット

エクスクラウドのWordPressホスティングに限った話となりますが、このプランではkusanagi provisionによるWordPressが標準で1つセットアップされます。
その時のプロファイル名はexcloudとなりますが、通常のkusanagi provisionで設置されるWordPressに更に一部のカスタマイズを行っております。

具体的には、
・WordPressホスティングにおけるセキュリティ対策
https://ex-cloud.jp/wordpress/features/wphsecurity.html

上記で紹介しているFail2banによるSSH、およびWordPressパスワードアタック対策については
当社独自の設定となりますが、他のプロファイルを自身で追加(provision)してもこの対策は有効です。

ただし、
・WordPressデータベースにはランダム接頭辞
・ファイルパーミッション設定
・特定ファイルの閲覧を禁止
についてはお客様が後から行った provision では適用されない設定となっておりますので、サブディレクトリにWordPressをインストールする場合は当記事の手順にあるexcloudのプロファイルをコピーすることを推奨いたします。

冒頭に書いたWordPress自身の『サイトのネットワーク』機能についても適度にお問い合わせをいただくため、改めて別の記事で紹介させていただく予定です。
※予定であり公開は未定ですが、お問い合わせをいただければ個別に回答させていただきます┏○

※2017.5.9追記※
『サイトのネットワーク』機能によるマルチサイトについては当ブログではなく、KUSANAGI MAGAZINEへ投稿させていただきました

この記事を書いた人

テクニカルサポート

テクニカルサポートを得意とするエクスクラウドのサポートスタッフ。

この記事のタグ

オススメの記事

この記事を読んだ人にオススメのサービス

エクスクラウドのWordPressホスティング

WAF&SSLつきの超高速KUSANAGI標準搭載のWordPress専用サーバー。全てがオールインワン、さらに初期構築などの手間が不要なため手軽に超高速なWordPress環境をご利用いただけます。14日間無料お試しで超高速なWordPress環境を体感してください。

ページトップへ