Synology NAS : Multi Domain ~ 1つのNASの上に複数ドメイン名でサイトを構築する [2025/07/02追記]

複数サーバー安定化に忘れてはいけない

一番の不安定原因は,cache pluginのコンフリクトが考えられる.その他,portal serverの設定がある.

redisと一般的なwordpressのcache pluginはキャッシャ層が異なる.レスポンス速度を高めるために一般的なキャッシュ(表示系)とredisを導入しているので,以下の事項について注意して進める必要があった.

一般的なキャッシュプラグイン

サイト構築の設定過程では,個々のwordpressのcache pluginの挙動を意識して進める必要がある.また,作業中はcache pluginは無効にしておくか,そうでない場合は適時キャッシュをflushする.

設定が完了してから無効化していたcache pluginを有効化する.

redis関連 pluginの設定

以下に解説しているweb stationでPortal Serverを同時にenableにする場合には注意が必要である.

先ず問題だった点は、

今回の場合,Redis Serverを複数のwordpressを導入した1つの同じNAS内にcontainer managerでコンテナ構築(host)し,更に、個々のwordpressでは、それぞれredis object server pluginをインストールしていた.このpluginでの設定ではdefaultのredis 用のDBの番号は「0」となっていたため、複数のportal(web url)をenableにした途端にredisのキャッシャでコンフリクトを起こした.

対処:

redis serverに関わる以下のコードをwp-config.phpに追記する.

define( 'WP_HOME', 'https://harikiri.diskstation.me' );
define( 'WP_SITEURL', 'https://harikiri.diskstation.me' );

define( 'WP_CACHE', true );
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', <0,1,2・・・> );
define( 'WP_CACHE_KEY_SALT', '<site name>_' );

note :
1. <0,1,2・・・15>には,複数サイトと重複しない一意である1つの数.
2. <site name>には,接頭語として分かるワードであれば良い(harikiri).
3. この時点で残っている設定は、DB関連(wp_config.php, data baseの複製または新規作成)
4. WordPressでinstallしているRedis Serverには、「Redis Object +Cache」などがある。


更に必要な作業

default serverの設定

Web Protalで複数のweb serverを安定的に稼働させるために,default serverの設定をいじる必要がある.なぜなら,Multi Domain Web Serverを構築する前の状態はSingle Web Server (既存)が稼働するのみであり,それはdefault serverが担っていたため.

今回の作業過程では,既存のweb serverを新しくportal server (以降で説明)として設定 (既存のurl:harikirii.diskstation.me)したため,既存のurlであったdefault server (url: 同じ)が起動すると,この同じurlに対して異なるservice (script languageを含む)が割り当てられることになるため,コンフリクトを生じる可能性が考えられた.

そこで,以下の手順により,default serverに対して適切な設定が可能になるようservice設定をいじった.この設定を完了させてから,複数(現在3つ)あるportal(web server)がレスポンスを失う自体にはなっていない(2025/06/20).

設定 :

  1. 先ず,Web Portal 設定の画面では,default serverをdisable/enableは,できな仕様となっている(図5).
  2. そこで,Service設定画面から設定を以下の手順でいじる(図6).
  3. 図6に示すように,user portalが使用しているHTTP back-end serverはapacheである.念のため,default serverにはそれとは異なる「Nginx」を選択する.
  4. Serverが起動しないようにすめにたに(結果的そうだった*),PHPには「Not configured」を選択する.おそらくこの設定が重要.
  5. * NASをrebootさせてlogを確認してみると,この設定前ではharikiri.diskstation.meの起動が2回記録されていた.設定してからは,1回の起動のみが記録されるようになった.
  6. Save
  7. 以上

Image

図5. Default serverのdisable/enableはできない(仕様)


Image

図6. Service設定画面

Portal Serverに関する設定

今回の作業では,既存のwebサイト(harikiri.diskstation.me)は,Default serverで管理されていた(そのはずな)ので,専用のportalはリスト(登録)されていなかった.

そこで,harikiri.diskstation.me用に上記の作業でWeb Portalを作成した.その際,/web/<site A用のfolfer>のフォルダ構造と,harikiri.diskstation.me/<site A>というurl構造が不整合となりブラウザでの表示が出来なくなった(エラー500, 404).

修正作業は,以降に述べているように「wp-config.php」の修正,DBの複製と修正,及び「.htaccess」の修正が必要.

  1. File Stationから,既存のwordpressディレクトリを複製して2つめwordpressディレクトリとし,wp-config.php,.htaccess,必要があればrobots.txtを修正する.

以下詳細を示す.



File Stationでの作業

(1) DSM->File Stationで既存のwordpressフォルダーの複製

  1. /web/<site A>にwordpressがインストールされている前提とする(既存).
  2. /web/<site B>をcreate folderで作成する.
  3. <site A> foldeにあるfolder/fileの全てを<site B>に複製する.
    注意) 既存を消したりしないように!

(2) .htaccessの修正

以下のコードでにおいて “/” が,”/<site A/Bのfolder name>”になっているとブラウザ表示できないので,以下のコードに置き換える.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

(3) wp-config.phpの修正

MariaDB10のデータベース(DB)は,2つ目のuser2で別DBを作成し,exportしたuser1のDBをuser2のDBにimportされていることを前提にしている.

define( 'DB_NAME', 'DB2' );
define( 'DB_USER', 'user2' );
define( 'DB_PASSWORD', '********' );
define( 'DB_HOST', 'localhost:/run/mysqld/mysqld10.sock' );  // MariaDBパッケージならlocalhostでOK(未確認)

define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');

/volume1/web/<site A filder name>/wp-config.php に以下の2行を require_once より前 (強制)に追加:
これらの環境変数は,DBのwp_optionsのsiteurlとhomeより優先する(by 4o).DBで設定しているなら必要ない.

define( 'WP_HOME', 'https://harikiri.diskstation.me' );
define( 'WP_SITEURL', 'https://harikiri.diskstation.me' );

(4) robots.txtの修正

robots.txt (小文字)についてもサイトに合わせて修正してください.


Control Panelでの作業

Login Portal -> Advanced -> Access Control Profileでprofile作成画面を開き当該profilelを作成する.

Image

access control profileは,web stationの設定で使用する.Web Stationの設定が完了後,後から当該profileを作成・設定も可能.

機能:

  1. サイトの内容を編集している間やその他のIP Addressを拒否/許可することが可能.ネットからのアクセスを拒否する設定のprofileを作り,web station->web portal->”で,作成したportalのAccess control profile”に指定するとprofileに従ってアクセス制限される.
  2. サイトの投稿が整いサイトを公開したい場合,公開用のprofileを前述と同様のところに指定するか,何も指定しなければフルアクセスとなる.

access control profileを作る

  1. Login Portal->Advancedを開き,Access Control Profileを開く
  2. Createボタンを押し,2つ目のサイト用にprofileを作成する

人気順