Nginx 環境での WordPress マルチサイト構成の詳細な説明

Nginx 環境での WordPress マルチサイト構成の詳細な説明

WordPress のマルチサイト機能を使用すると、1 つの WordPress プログラムをインストールして複数のサイト (つまり、複数のドメイン名またはサブドメインにバインドできる一連のプログラム) を作成できます。

各サイトには独自のテーマ、プラグイン、記事、ページがあります。

これにより、複数の WordPress インストールの保守と更新の手間が大幅に軽減されます。

さらに、各サイトは互いに独立しており、互いに影響を与えません。

WordPress マルチサイトの使い方にはサブディレクトリとサブドメインの 2 つの方法があります。ここでは主にサブドメイン方式を紹介します。

つまり、メインのドメイン名に基づいて、サブドメインを作成します(例:http://shop.jb51.com)。

同時に、このサブドメインを http://shop.com などの第 1 レベル ドメインにマップすることもできます。

訪問者がアクセスするのは、独立したファーストレベル ドメイン名です。

1. 準備

WordPress がマルチサイト機能ページを導入: サイトネットワーク管理ページ

次に、以下のようにいくつかのドメイン名を準備します。

サイト 1: www.jb51.com (プライマリ ドメイン名)、WordPress のインストール時に使用するドメイン名 サイト 2: blog.jb51.com、セカンド レベル ドメイン名 サイト 3: news.com、マッピングされたセカンド レベル ドメイン名 news.jb51.com
サイト 4: shop.com、マッピングされた第 2 レベル ドメイン名 shop.jb51.com
注意: WordPress をインストールした後は、許可なくバックエンドのドメイン名を変更しないでください。ドメイン名を www 付きから www なしに変更したり、その逆を行ったりしても、「リダイレクト回数が多すぎます」というエラーが発生する可能性があります。

次に、ドメイン名サービスプロバイダーの解決ページにログインし、上記のドメイン名のAレコードをWordPressがインストールされているサーバーのIPに設定します。

また、hosts ファイルを直接変更し、次の行を追加することで、ローカル コンピューターでテストすることもできます。

127.0.0.1 www.jb51.com blog.jb51.com news.com shop.com

2. Nginx の設定 次のように、Nginx 設定ディレクトリに新しい設定ファイルを作成します。

$ sudo vi /etc/nginx/conf.d/jb51.conf

内容は次のとおりです。

サーバー{
聞く 80;
server_name www.jb51.com blog.jb51.com news.com shop.com;

ルート /usr/share/nginx/wordpress;
インデックスindex.php;

位置 / {
try_files $uri $uri/ /index.php?$args;
}

場所 ~ /favicon.ico {
access_log オフ;
log_not_found オフ;
}

場所 ~ \.php$ {
try_files $uri /index.php;
fastcgi_params を含めます。
127.0.0.1:9000; をデフォルトとして設定します。
fastcgi_index インデックス.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

アクセスログ /var/log/nginx/$host-access.log;
error_log /var/log/nginx/wpms-error.log;
}

ここでは、$host 変数を使用して、Nginx がドメイン名ごとに個別のアクセス ログを生成できるようにします。

たとえば、news.com-access.log および shop.com-access.log などです。

ただし、エラー ログでは $host 変数を使用できないため、すべてのエラーはファイルに記録されます。

Nginx サーバーを再起動します。

$ nginx -s リロード

3. WordPressをインストールする

通常の WordPress インストール手順に従って WordPress をインストールします。

4. マルチサイト機能を有効にする

テキスト エディターで wp-config.php ファイルを開き、コメントの前に次の行を追加します: "/* これで完了です。これ以上編集しないでください。このファイルを保存してください。楽しんでください。*/":

/* マルチサイト設定 */
定義( 'WP_ALLOW_MULTISITE' , true );

このファイルをさらに数回編集します。

保存後、WordPress バックエンドにログインし、「ツール」>「ネットワーク設定」をクリックし、サブドメイン、ネットワーク タイトル、ネットワーク管理者のメール アドレスを選択します。

次にターミナルをインストールします。

しばらくすると、インターフェイスに 2 つのコード ブロックが表示され、それぞれ wp-config.php ファイルと .htaccesss ファイルを追加するように求められます。

ここでは Nginx を使用しているため、.htaccess の部分については心配する必要はありません。

wp-config.php ファイルを開き、コメントの前に次の行を追加します: "/* OK! これ以上編集しないでください。このファイルを保存してください。楽しんでください! */":

'MULTISITE' を定義します。
定義('SUBDOMAIN_INSTALL'、true);
定義('DOMAIN_CURRENT_SITE'、'www.jb51.com');
定義('PATH_CURRENT_SITE'、'/');
定義('SITE_ID_CURRENT_SITE'、1);
定義('BLOG_ID_CURRENT_SITE', 1);
WordPress 管理パネルからログアウトし、再度ログインします。

WordPress からログアウトして再度ログインします。

パネルの左上隅にある [マイサイト] > [ネットワーク管理] > [サイト] を開きます。

[新規追加] ボタンをクリックして [新しいサイトの追加] フォームを開き、ブログ、ニュース、ショップの 3 つのサブドメインを順番に追加します。

追加後、すべてのサイトを選択し、2 つのサブドメイン news.jb51.com と shop.jb51.com を編集します。サイト タイトルはそれぞれニュースとショッピング モールになります。

サイト アドレス (URL) をそれぞれ news.com と shop.com に変更します。

この手順を完了すると、blog.jb51.com にアクセスできます。これはすでに独立したリソースを持つ独立したサイトです。

ただし、news.com と shop.com にアクセスするには、読み続ける必要があります。

5.ドメイン名マッピングを設定する

パネルの左上隅にある [マイサイト] > [ネットワーク管理] > [プラグイン] を開きます。

ここで WordPress MU ドメイン マッピング プラグインをインストールします。直接検索するか、ダウンロードしてインストールしてから有効にすることができます。

次に、プラグイン ディレクトリ (ディレクトリ wp-content/plugins/wordpress-mu-domain-mapping) にある sunrise.php ファイルを wp-content ディレクトリにコピーします。

wp-config.php ファイルを開き、コメントの前に次の行を追加します: "/* OK! これ以上編集しないでください。このファイルを保存してください。楽しんでください! */":

定義('SUNRISE'、'on');

保存してからブラウザに戻り、バックグラウンドのパネルの左上隅にある [マイサイト] > [ネットワーク管理] > [設定] を開きます。

次に、ドメイン マッピングを選択し、以下のようにドメイン オプションを変更します。

それから保存します。

ここでの設定の機能は、管理ページ (/wp-admin) を含むすべての第 2 レベル ドメイン名 (news.jb51.com など) をそれぞれの外部ドメイン名 (news.com など) にリダイレクトすることです。

次に、トップレベルドメイン名をさまざまなサイト ID にマッピングする必要があります。

デフォルトでは、サイト ID はバックグラウンドに表示されないため、最も簡単な方法として、サイト ID をバックグラウンドで直接表示します。

この方法は、WordPressのMust-useプラグインを使用する方法です。

wp-content ディレクトリに mu-plugins ディレクトリを作成し、新しく作成したディレクトリに wpms_blogid.php という名前のファイルを作成します。

この PHP ファイルの内容は次のとおりです。

<?php
フィルターを追加します( 'wpmu_blogs_columns', 'do_get_id' );
アクションを追加します('manage_sites_custom_column', 'do_add_columns', 10, 2);
add_action( 'manage_blogs_custom_column', 'do_add_columns', 10, 2 );

関数 do_add_columns( $column_name, $blog_id ) {
if ( 'blog_id' === $column_name )
$blog_id をエコーし​​ます。
$column_name を返します。
}

関数do_get_id($columns){
$columns['blog_id'] = 'ID';
$columns を返します。
}

保存後、バックエンドで「サイト」>「すべてのサイト」にアクセスすると、サイト リストに追加の ID 列が表示されます。これは次の手順で使用します。

バックエンド コントロール パネルで [設定] > [ドメイン] に切り替えて、次の 2 つのドメイン名を追加します。

サイトID: 3 (実際の状況に基づく)
ドメイン: news.com
プライマリ:√

同様に:

サイトID: 4 (実際の状況に基づく)
ドメイン: shop.com
プライマリ:√

ドメイン名に www が含まれる場合も、同じ操作が使用されます。

6. 結果

上記の手順を完了すれば、基本的には問題ありません。

メインサイトのドメイン名は変更されず、引き続き www.jb51.com のままです。

ニュースサイトにアクセスするには news.com を使用します。

shop.com を使用してモールサイトにアクセスできます。

このブログには、第 2 レベル ドメイン名 blog.jb51.com を使用して引き続きアクセスできます。

同時に、これらのサイトのバックエンドにも独立したアドレスがあります。

http://www.jb51.com/wp-admin/
http://blog.jb51.com/wp-admin/
http://news.com/wp-admin/
http://shop.com/wp-admin/

すべてのサイトにテーマやプラグインをインストールできなくなりました。

すべてはネットワーク管理(パネルの左上隅にある[マイサイト] > [ネットワーク管理])で構成されます。

以上がNginx環境下でWordPressのマルチサイト機能を設定する詳細な方法です。皆様のお役に立てれば幸いです。

以下もご興味があるかもしれません:
  • WordPress をベースに個人ブログをゼロから構築する方法を教える 6 つのステップ
  • nginx+WordPressで個人ブログを構築するプロセス全体の詳細な説明
  • ホストNginx + Docker WordPress Mysqlを設定するための詳細な手順
  • Nginx で WordPress 擬似静的を設定する方法の例
  • Nginx で WordPress を設定する方法
  • WordPress ウェブサイトのアクセスが遅い問題を解決する方法に関する詳細なグラフィックチュートリアル

<<:  Vue2.0の双方向データバインディング原則を手動で実装する

>>:  Linux centos7 環境での MySQL インストール チュートリアル

推薦する

MySQL 1対多関連クエリのページングエラー問題の解決方法

XML価格照会のクエリデータにはリストが含まれているため、コレクションが必要です <結果マップ...

Vue フロントエンド開発補助機能状態管理詳細例

目次マップ状態マップゲッターマップミューテーションマップアクション例まとめマップ状態コンポーネントが...

Dockerカスタムブリッジdocker0とdockerのコマンド操作の開始、終了、再起動

質問会社がサーバーを移行した後、デフォルトで作成された docker0 ブリッジが会社の外部ネットワ...

MySQL の効率的なクエリの左結合とグループ化 (プラス インデックス)

mysql 効率的なクエリMySQL は、左結合の速度を上げるために group by を犠牲にし...

Linux システムでの gcc コマンドの使用法の詳細な説明

目次1. 前処理2. コンパイル3. コンパイル4. リンク1. gccのインストール(Ubuntu...

mysql サブクエリと結合テーブルの詳細

目次1. サブクエリとは何ですか? 2. 自己結合3. 自然な結合4. 外部接続1. サブクエリとは...

Linux サーバーに埋め込まれた ddgs および qW3xT.2 マイニング ウイルスの対処の実践記録

序文仮想通貨の狂気的な投機により、マイニングウイルスは犯罪者が最も頻繁に使用する攻撃方法の 1 つに...

画面なしで無線ネットワークに接続しているときに Raspberry Pi の IP アドレスを見つける方法

あなたがlinuxerだと仮定すると、 windowserだとは想定しません。Windows ユーザ...

HTMLテキスト内のすべてのタグを置き換える方法

(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...

mysqlは指定された期間内の統計データを取得します

mysqlは指定された期間内の統計データを取得します年別統計 選択 カウント(*)、 DATE_FO...

jQuery はラブエフェクトをクリックする

この記事では、jQueryのクリック時のラブエフェクトの具体的なコードを参考までに共有します。具体的...

CentOS の起動時に RabbitMq ソフトウェアを自動的に起動する方法

1. /etc/init.dディレクトリに新しいrabbitmqを作成します。 [root@loca...

webpackでHMRを手動で実装するいくつかの方法

目次1. はじめに2. GitHub 3. 基本構成プロジェクトディレクトリパッケージ.json c...

jsは徐々に増加するデジタルアニメーションを実現します

目次背景コンテナを固定し、数字を上にスクロールすることで、スクロールホイールと同様の効果を実現します...

Vue で PC アドレスをモバイル アドレスにリダイレクトする方法

要件:PC側とモバイル側は2つの独立したプロジェクトです。2つのプロジェクトの内容は基本的に同じで、...