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 インストール チュートリアル

推薦する

JavaScriptでカレンダー効果を素早く実装

この記事では、カレンダー効果を素早く実現するためのJavaScriptの具体的なコードを例として紹介...

MySQL 8.0.11 MSI バージョンのインストールと構成のグラフィック チュートリアル

この記事では、MySQL 8.0.11 MSIバージョンのインストールと設定のチュートリアルを参考ま...

フロントエンドコンポーネント化の基礎知識を詳しく解説

目次コンポーネントの基本概念オブジェクトとコンポーネントの違い成分属性属性とプロパティ属性:財産:ク...

Vue3+Vue-cli4 プロジェクトで Tencent スライダー検証コードを使用する方法

導入:従来の画像検証コードと比較して、スライダー検証コードには次の利点があります。サーバーは検証コー...

Linux で PyCurl のエラーを解決する方法

「curl-config を実行できませんでした」の解決策 pycurl のダウンロード/解凍 (p...

MySQLデータベースバックアップのさまざまな実装方法の概要

この記事では、MySQL データベースのバックアップを実装するさまざまな方法について説明します。ご参...

Windows10にMySQL5.6.35データベースを2つインストールする

次のように、Win10 での 2 つの MySQL5.6.35 データベースのインストールを記録しま...

VUE 3 テレポート コンポーネントと使用構文をすぐに使い始める

目次1. テレポートの紹介1.1. 複数のテレポートを使用する2. テレポートを使用する理由3. テ...

SWFObjectを使用すると、HTMLにFlashを挿入する際のブラウザ互換性の問題を完全に解決できます。

一緒に学びましょう1. 伝統的な方法コードをコピーコードは次のとおりです。 <object c...

jQueryはテーブル行データのスクロール効果を実現します

この記事の例では、テーブル行データのスクロール効果を実現するためのjQueryの具体的なコードを参考...

HTMLタグのtarget属性の使用法

1: <a> タグを使用してページにリンクする場合、target 属性の役割は誰もが知っ...

JavaScript で charAt() を使用して、最も頻繁に出現する文字とその出現回数をカウントする方法を教えます。

前回は、JavaScript の charAt() メソッドの使い方を紹介しました。今日は、最も多く...

MySQL 5.7 および MySQL 8.0 でルートパスワードを変更する方法の概要

MySQL 5.7 バージョン:方法1: SET PASSWORDコマンドを使用するフォーマット: ...

MySQL データベースは XA 仕様をどのように実装しますか?

MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...

MySQL テーブル内の重複データを検索して削除する方法の概要

時々、データベース テーブルに重複したデータが大量に保存されます。これらの重複データはリソースを浪費...