Ubuntu14.04でNginxを使用してWordPressマルチサイトを設定する方法
序章
WordPressのマルチサイト機能は、WordPressの1回のインストールから複数のWebサイトを作成する機能を提供します。 各サイトには、個別のテーマ、プラグインのセット、およびコンテンツのコレクション(投稿とページ)を含めることができます。 これにより、WordPressの複数のインストールを維持および更新するオーバーヘッドが削減されると同時に、互いにまったく関係のない複数のサイトをホストできます。
WordPressマルチサイトには、サブディレクトリまたはサブドメインの2つの種類があります。 このチュートリアルでは、サブドメインを使用するようにWordPressマルチサイトを設定します。 つまり、作成するサイトには、http://wp-site.yourdomain.comのようなサブドメインWebアドレスがあります。 これは、 http://wp-site.net のような外部ドメインにマッピングして、各サイトが外部から独立しているように見せることができます。
前提条件
このチュートリアルでは、ユーザーが次の知識を持っている必要があります。
次のドメイン名で3つのWordPressサイトを作成します。
-
サイト1:
ドメイン: examplewp.com (プライマリドメイン)
これは、WordPressのインストール時に作成されるサイトです。 -
サイト2:
外部ドメイン: Shoppingsite.com
サブドメイン: Shoppingsite.example.com -
サイト3:
外部ドメイン: companysite.org
サブドメイン: companysite.example.com
最初のドメインは、WordPressがインストールされるプライマリドメイン名です。 WordPressをホストするドロップレットのIPアドレスを指すように3つのドメインすべてにDNSを設定してください。
ステップ1-DNSワイルドカードレコードを設定する
このセクションでは、プライマリドメインのDNSワイルドカードレコードを追加して、個々の Aレコードを必要とせずに、いつでもサイトを追加できるようにします。 (または、サブドメインごとに新しいAレコードを追加することもできます。)
注:これは、* プライマリドメイン(このチュートリアルの examplewp.com )に対してのみ実行する必要があります。
DigitalOceanコントロールパネルにログインし、[ネットワーキング]セクションに移動します。 プライマリドメインを編集し、ドロップレットのIPアドレスを指すこのドメインのワイルドカードAレコードを作成します。 次のスクリーンショットに示すように、ホスト名入力ボックスにアスタリスク(*)を入力すると、ワイルドカードレコードが作成されます。
ドメインのDNSを他の場所でホストしている場合は、代わりにワイルドカードレコードをそこに設定する必要があります。
あなたが今見るべきもの:
random-sub-domain.examplewp.com に対するDNSクエリは、ドロップレットのIPアドレスを返す必要があります。
ステップ2-LEMPスタックをインストールして構成する
このセクションでは、Nginx、MySQL、およびPHPをインストールして構成します。 LEMPスタックのセットアップに関する詳細な記事があり、必要に応じて参照できます。 このセクションは、クイックセットアップとして機能します。 ドロップレットの作成時に[イメージの選択]セクションのアプリケーションタブの下にLEMPon Ubuntu14.04イメージもあります。
リポジトリを更新し、Nginx、MySQL、PHP5-FPMおよびその他の必要なPHPモジュールをインストールします。
apt-get update
apt-get install -y nginx mysql-server php5-fpm php5-mysql php5-curl php5-mcrypt php5-gd
MySQLサーバーをインストールすると、rootデータベースユーザーのパスワードを入力するように求められます。 強力なパスワードを入力してください。空白のままにしないでください。 パスワードを2回入力します。
WordPressファイルを保持するNginxのドキュメントルートを作成します。 このチュートリアルでは、 / usr / share / nginx /wordpressを使用します。
mkdir /usr/share/nginx/wordpress
Nginxのデフォルトの仮想ホストを独自の仮想ホストに置き換えるため、sites-enabledディレクトリのシンボリックリンクを削除します。
rm /etc/nginx/sites-enabled/default
sites-availableディレクトリ内に新しい仮想ホストファイルを作成します。 このファイルには任意の名前を付けることができます。 この例では、wp-msと呼びます。
nano /etc/nginx/sites-available/wp-ms
このファイルを編集して、次の構成を配置します。 環境に応じて、赤で強調表示されているテキストを編集します。 の中に server_name
行では、マルチサイトドメインの3つすべて(またはそれ以上)と、最初のドメインのワイルドカードサブドメインを追加する必要があります。
server {
listen [::]:80 ipv6only=off;
server_name examplewp.com *.examplewp.com shoppingsite.com companysite.org;
root /usr/share/nginx/wordpress;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ /favicon.ico {
access_log off;
log_not_found off;
}
location ~ \.php$ {
try_files $uri /index.php;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
access_log /var/log/nginx/$host-access.log;
error_log /var/log/nginx/wpms-error.log;
}
このドロップレットがこのWordPressインストールのみをホストする場合、 listen
と server_name
ディレクティブは次のように変更できます。
listen [::]:80 default_server ipv6only=off;
server_name examplewp.com *.examplewp.com;
の使用 $host
の変数 access_log
ディレクティブは、examplewp.com-access.logやshoppingsite.com-access.logのようにドメインごとに個別のログファイルを作成します。 このような変数を error_log
したがって、すべてのエラーは1つのファイルに記録されます。
このファイルを保存し、sites-enabledディレクトリ内にこのファイルのシンボリックリンクを作成します。
ln -s /etc/nginx/sites-available/wp-ms /etc/nginx/sites-enabled/wp-ms
Nginx構成テストを実行し、OKが返された場合は再起動します。
service nginx configtest
service nginx restart
ステップ3-WordPress用のMySQLデータベースとユーザーを作成する
このセクションでは、WordPress用のMySQLデータベースと、このデータベースのみの権限を持つユーザーを作成します。
rootユーザーとしてMySQLコマンドラインにログインします。
mysql -u root -p
データベースを作成します。
CREATE DATABASE wordpress;
MySQLユーザーを作成し、このデータベースへのアクセス許可を付与します。
CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress_user'@'localhost';
passwordという単語を強力なパスワードに置き換えます。 特権をフラッシュし、MySQLコマンドラインを終了します。
FLUSH PRIVILEGES;
exit
ステップ4で必要になるため、これらの詳細を書き留めます。
データベース名: ワードプレス
データベースユーザー: wordpress_user
データベースパスワード: パスワード
MySQLユーザーの詳細については、この記事を参照してください。
ステップ4-WordPressをダウンロードしてインストールする
このセクションでは、最新バージョンのWordPressをダウンロードしてインストールします。 これは、最初のサイトexamplewp.com用です。
WordPressをダウンロードして解凍します。
wget http://wordpress.org/latest.tar.gz
tar -xf latest.tar.gz
抽出したファイルをドキュメントルートに移動します。
mv wordpress/* /usr/share/nginx/wordpress/
ユーザーに所有権を割り当てる www-data
. これは、メディアのアップロードと、コア/プラグイン/テーマの更新がWordPressで機能するために不可欠です。
chown -R www-data:www-data /usr/share/nginx/wordpress
ブラウザでプライマリドメインにアクセスして、WordPressのインストールを開始します。
http://examplewp.com/
必要に応じて、URLに「www」サフィックスを追加できます。 構成ファイルの作成ボタンをクリックしてから、 Let’s go!ボタンをクリックします。 データベースの詳細を入力し(ステップ3の情報を使用)、送信をクリックします。
この時点で、WordPressはデータベースとの接続を確立して、入力された資格情報をテストします。 接続に成功すると、インストールの実行ボタンが表示されます。 クリックして。 必要な情報フォームに記入してサイトのタイトル、ユーザー名、パスワード、メールアドレスを設定し、WordPressのインストールをクリックします。 セキュリティのために、一般的でないユーザー名を選択することをお勧めします。
ステップ5-マルチサイトを有効にして、追加のサイトを作成する
このセクションでは、WordPressマルチサイトを有効にし、この記事の前提条件セクションに記載されている2つの追加サイトを作成します。
ネットワーク設定ページを有効にするには、PHP定数をwp-config.phpファイルで定義する必要があります。
wp-config.phpファイルを編集します。
nano /usr/share/nginx/wordpress/wp-config.php
コメントの前に次のコードを追加します /* That's all, stop editing! Happy blogging. */
:
/* Multisite settings */
define( 'WP_ALLOW_MULTISITE', true );
このチュートリアルでは、このファイルをさらに数回編集します。 にすべての新しい行を自由に追加してください /* Multisite settings */
作成したばかりのセクション。
ファイルを保存します。 WordPress管理パネルにログインし、ツール>ネットワーク設定に移動します。 サブドメインオプションを選択し、ネットワークタイトルを必要に応じて変更してから、インストールをクリックします。
wp-config.phpファイルと.htaccessファイルに追加される2つのコードブロックが表示されます。 次のようなwp-config.phpコードをコピーします。
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'examplewp.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
wp-config.phpファイルを編集します。
nano /usr/share/nginx/wordpress/wp-config.php
コメントの前にこれらの行を追加します /* That's all, stop editing! Happy blogging. */
そしてそれを保存します。 Nginxにはこのファイルがないため、.htaccessに表示されるコードは無視できます。
WordPress管理パネルからログアウトし、再度ログインします。 左上の管理者ツールバーから、個人用サイト>ネットワーク管理>サイトに移動します。
新規追加ボタンをクリックして、新規サイト追加フォームを開きます。 次のスクリーンショットは、この例のショッピングサイトの詳細を示しています。 入力したサイトアドレスは、このサイトのサブドメインを形成します。
サイトの追加をクリックすると、作成されたサイトにhttp://shoppingsite.examplewp.comからアクセスできます。
これらの手順を繰り返して、2番目のサイト(この例では companysite.examplewp.com )を作成します。
あなたが今見るべきもの:
次の3つのWordPressサイト:
それぞれに、独自のコンテンツ、テーマ、およびアクティブなプラグインのセットがあります。
ステップ6-ドメインマッピングを設定する
このセクションでは、WordPress MUドメインマッピングプラグインをダウンロードして有効にすることで、WordPressサイトごとに個別のドメイン名を使用できるようにします。 このプラグインを使用すると、WordPressマルチサイトのユーザーは自分のブログ/サイトを別のドメインにマッピングできます。
SSH経由でDropletにログインし、WordPressMUドメインマッピングプラグインをダウンロードします。 最初にインストールします unzip
コマンドを実行し、プラグインを抽出します。
wget http://downloads.wordpress.org/plugin/wordpress-mu-domain-mapping.latest-stable.zip
apt-get install unzip
unzip wordpress-mu-domain-mapping.latest-stable.zip
抽出したファイルをWordPressプラグインディレクトリに移動します。
mv wordpress-mu-domain-mapping /usr/share/nginx/wordpress/wp-content/plugins/
sunrise.phpファイルをプラグインのディレクトリからwp-contentディレクトリにコピーします。
cp /usr/share/nginx/wordpress/wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php /usr/share/nginx/wordpress/wp-content/
wp-config.php ファイルを編集し、コメントの前に次の行を追加します /* That's all, stop editing! Happy blogging. */
.
ファイル: /usr/share/nginx/wordpress/wp-config.php
define('SUNRISE', 'on');
このファイルを保存して、Webブラウザに戻ります。 WordPressツールバーから、個人用サイト>ネットワーク管理>プラグインに移動します。
WordPressMUドメインマッピングプラグインの下にあるNetworkActivateリンクをクリックします。 [設定]>[ドメインマッピング]に移動し、ドメインオプションを次のように変更します。
- リモートログインのチェックを外します
- パーマネントリダイレクトを確認してください
- 管理ページをサイトの元のドメインにリダイレクトするのチェックを外します
完了したら、保存をクリックします。 これらの設定は、サブドメイン( companysite.examplewp.com など)に対するすべてのリクエストを、管理ページ(/ wp-admin)を含むそれぞれの外部ドメイン( companysite.org など)にリダイレクトします。
次のステップでは、サイトIDに基づいてドメイン名を各サイトにマッピングします。 サイトのIDを見つける方法はたくさんありますが、管理を簡単にするために、サイトページに追加のID列を表示する単純なWordPress必須プラグインを作成します。
SSH経由でDropletにログインし、mu-pluginsディレクトリを作成します。
mkdir /usr/share/nginx/wordpress/wp-content/mu-plugins
このディレクトリ内にPHPファイルを作成し、次のコードを貼り付けます。
nano /usr/share/nginx/wordpress/wp-content/mu-plugins/wpms_blogid.php
このコンテンツを正確にコピーできます。
<?php
add_filter( 'wpmu_blogs_columns', 'do_get_id' );
add_action( 'manage_sites_custom_column', 'do_add_columns', 10, 2 );
add_action( 'manage_blogs_custom_column', 'do_add_columns', 10, 2 );
function do_add_columns( $column_name, $blog_id ) {
if ( 'blog_id' === $column_name )
echo $blog_id;
return $column_name;
}
function do_get_id( $columns ) {
$columns['blog_id'] = 'ID';
return $columns;
}
サイト>すべてのサイトセクションに追加のID列が表示されるはずです。
各サイトのID値を書き留めて、[設定]>[ドメイン]ページに移動します。 サイトIDに続けて、サイトの外部ドメインを入力します。 たとえば、companysiteのIDは3であるため、このページでは、 Site ID は3であり、ドメインはcompanysite.orgである必要があります。
サイトのURLをwww.companysite.orgとして設定する場合は、「www」プレフィックスを追加できます。 他のドメインに対してこれらの手順を繰り返します。 ページ下部の保存をクリックします。
あなたが今見るべきもの:
各サイトには、サブドメインではなく独自のドメイン名があります。 つまり、ブラウザに http://companysite.org と入力すると、 My OnlineCompanyサイトが開きます。 これは、http://shoppingsite.comおよびhttp://companysite.orgにアクセスして確認できます。 ページの左上隅にサイトタイトルの変更が表示されます。
これで、各サイトを独自のWordPress管理パネルで個別に管理できるようになりました。
http://examplewp.com/wp-admin/
http://shoppingsite.com/wp-admin/
http://companysite.org/wp-admin/
コア/プラグイン/テーマの更新とプラグイン/テーマのインストールは、プライマリドメインのネットワーク管理ページから行う必要があります。
http://examplewp.com/wp-admin/network/