zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

WordPress(Nginx+php-fpm)でのマルチドメイン運用

複数ドメイン:hogehoge.jp fugafuga.jp hogefuga.com を一つのWordPressで運用する場合のメモ。

【サマリ】

Wordpressのマルチサイト機能を利用し、かつ
- サブディレクトリ型
- サブドメイン
- 複数ドメイン
のうち、複数ドメイン型を作成する。

【参考サイト】

www.templateking.jp
基本的には上記情報に従います。
上記との違いとして、主にnginxのconfの書き方について以下にメモしておきます

1)WordPressのインストール

普通に管理画面にアクセスできるところまで。
※ドキュメントルート直下にインストールしてください

2)wp-config.phpの編集

以下を追記します

/** マルチサイト機能 */
define('WP_ALLOW_MULTISITE', true);
3)ネットワークの設定

WP管理画面-[ダッシュボード]-[ツール]-[ネットワークの設置]-[WordPress サイトのネットワークの作成]で、「サブドメイン」を選択し、「インストール
→"サイトネットワーク作成機能を有効化するには、次の手順を実行します。"として、wp-configの修正ファイルおよびapache用の設定が表示されます。

4)ネットワークの有効化作業

上記画面の作業を実行します。

  • wp-config.phpへの追記
/srv/www/hogehoge/ にある wp-config.php ファイルの
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
という行の上に、次の内容を追加
==========
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'hogehoge.jp');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
==========

※この際、先に設定していた
> define('WP_ALLOW_MULTISITE', true);
は削除する。重複しないように。

  • nginxのconfへの追記

ドメイン型の場合は不要。
※nginxについてはhttps://wpdocs.osdn.jp/Nginx にサブディレクトリ型マルチサイト向けの記述がある。
/hogehoge/wp-admin/hoge.phpなどへのアクセスがあった場合に、/hogehoge/を消してアクセスしてるような。
今回はドメインベースなので以下はいらないですが、念のためメモしておきます。

  # Rewrite multisite '.../wp-.*' and '.../*.php'.
  if (!-e $request_filename) {
    rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
    rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;
    rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
5)サイトネットワーク管理者での設定

「サイトネットワーク管理者」メニューが追加されていることを確認。
言語など初期設定をしておく

6)サイトの追加

サイトの新規追加で各ドメイン用のサイトを追加する。
※サイトのアドレスは後で変更するので適当に。

7)プラグインのインストール

マルチドメイン対応プラグインを追加します
WordPress MU Domain Mapping:インストール

8)プラグインの設定

プラグインが正常にインストールされると、「サイトネットワーク管理者」の「設定」メニューに「Domain Mapping」と「Domains」という項目が追加されます。初期画面で表示されるメッセージに従って作業を行います。

Please copy sunrise.php to /srv/www/hogehoge/wp-content/sunrise.php and ensure the SUNRISE definition is in /srv/www/hogehoge/wp-config.php
# →上記をコピーする
cp /srv/www/hogehoge/wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php /srv/www/hogehoge/wp-content/sunrise.php


→再読み込みすると次は以下のメッセージ

Please uncomment the line define( 'SUNRISE', 'on' ); or add it to your /srv/www/hogehoge/wp-config.php

# wp-config.phpに以下を追記
-----
/** WordPress MU Domain Mapping */
define( 'SUNRISE', 'on' );
-----
9)ドメインマッピング

[サイト]-[すべてのサイト]でURLを選択するとid=xxとサイトIDが表示されるので、こちらをメモ、
[設定]-[Domains]で上記でメモしたSiteIDとドメインマッピングします。

10)リンクの設定

[サイトネットワーク管理]-[サイト]で各サイトを編集し、サイトアドレス (URL)をそれぞれの期待するドメインに変更して保存します。

11)各ドメインをnginxで受けるようにしておく

nginxのserver_nameにエイリアスを追加して流入できるようにしておくのを忘れずに

ex.

  server_name hogehoge.jp fugafuga.jp hogefuga.com;

以上。