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

推薦する

よく知られているブラウザのDOCTYPEモード選択メカニズム

ドキュメントの範囲この記事では、Firefox やその他の Gecko ベースのブラウザ、Safar...

モバイル適応型ウェブページ効果は、小さな表示ページの問題を解決します

仕事上、携帯電話に適応した Web ページ効果を作成する必要があります。ようやく完成しました。まずは...

MySQL 8.0 の新機能 - チェック制約の紹介

目次序文チェック制約作成、削除、表示制限要約する序文MySQL 8.0 では、チェック制約という非常...

MySQLからデータをインポートする際の不正なフォーマット、インポートの遅延、データ損失などの問題を迅速に解決します。

遅い問題を完全に解決したい場合は、MySQL を MySQL 8.0 にアップグレードすることをお勧...

Zabbixを介してデータベース接続情報といくつかの拡張機能をすばやく取得します

背景アプリケーション システムの数が増え続けると、当初はアラームを発していなかったアクティブ スレッ...

メタタグの詳しい説明(メタタグの役割)

個人のウェブサイトがどんなに素晴らしいものであっても、サイバースペースの広大な海に浮かぶ小さなボート...

vuexの強制リフレッシュによるデータ損失問題の分析

vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...

Linux 上の MySQL 5.7 でパスワードを忘れる問題を解決する

1. 問題Linux 上の mysql5.7 のパスワードを忘れました2. 解決策• ステップ 1:...

MySQLソースコマンドの使い方の紹介

目次ネット上の質問から生まれた思考MySQL ソースコマンドネット上の質問から生まれた思考今日仕事中...

背景位置パーセンテージ原則の詳細な説明

今日、誰かがコードを調整するのを手伝っていたとき、次のようなスタイルを見つけました。 背景位置: 5...

Win10でのMySQL5.7.17無料インストール版の基本設定チュートリアルについて(画像とテキスト付き)

データベース アプリケーションは、アプリケーション システムに不可欠な部分です。リレーショナル デー...

Dockerコマンドの自動補完の実装

序文この友人がどれくらいDockerを使っていなかったのかは分かりませんが、突然Dockerコマンド...

セマンティック XHTML タグの紹介

まず最初に指摘しておきたいのは、人間は視覚的な区分を通じてコン​​テンツの意味を判断できるが、検索エ...

MySQL バックアップ スクリプトの書き方

序文:データベースのバックアップの重要性は、特にデータの損失が深刻な結果を招く可能性がある実稼働環境...

ウェブサイトのパフォーマンスを向上させるために画像を最適化する方法

目次概要画像圧縮とはJPEG/JPG JPGの利点JPGの使用シナリオJPGの欠点MozJPEG を...