Как настроить WordPress Multisite с Nginx в Ubuntu 14.04

Вступление

Функция WordPress для нескольких сайтов позволяет создавать несколько веб-сайтов из одной установки WordPress. Каждый сайт может иметь отдельную тему, набор плагинов и коллекцию контента (посты и страницы). Это уменьшает накладные расходы на обслуживание и обновление нескольких установок WordPress, позволяя вам размещать несколько сайтов, которые совершенно не связаны друг с другом.

WordPress MultiSite поставляется в двух вариантах: подкаталог или поддомен. В этом уроке мы настроим многосайтовый WordPress для использования поддоменов. Это означает, что сайты, которые мы создаем, будут иметь субдомен веб-адреса, такой как * http: //wp-site.yourdomain.com*. Это можно сопоставить с внешним доменом, таким как * http: //wp-site.net*, чтобы каждый сайт выглядел независимо от внешнего.

Предпосылки

Этот учебник требует от пользователя знания следующего:

Мы будем создавать три сайта WordPress со следующими доменными именами:

  • * Сайт 1: *

  • Домен: * (Основной домен)

    Это сайт, который создается при установке WordPress.

  • * Сайт 2: *

  • Внешний домен: *

  • Субдомен: * shoppingsite.example.com

  • * Сайт 3: *

  • Внешний домен: *

  • Субдомен: * companysite.example.com

Первый домен - это основное имя домена, через которое будет установлен WordPress. Убедитесь, что set up DNS для всех трех доменов, чтобы он указывал на IP-адрес Дроплет, который будет размещать WordPress.

Шаг первый - настройка DNS-записей с подстановочными знаками

В этом разделе мы добавим запись с подстановочным знаком DNS для * основного домена *, чтобы в любое время можно было добавлять дополнительные сайты, не требуя отдельных https://www.digitalocean.com/community/tutorials/an-introduction-to -dns-терминология-компоненты-и-концепции [записи]. (В качестве альтернативы вы можете добавить новую запись A для каждого субдомена.)

_ * Примечание: * Это должно быть сделано только для * _primary domain (в этом руководстве). __

Войдите в панель управления DigitalOcean и перейдите в раздел «Сеть». Отредактируйте основной домен и создайте подстановочный знак * A * для этого домена, указывающий на IP-адрес дроплета. Запись подстановочного знака создается путем ввода звездочки (*) в поле ввода имени хоста, как показано на снимке экрана ниже.

изображение: https: //assets.digitalocean.com/articles/wordpress_multisite/add_wildcard_a_record.png [Панель управления DNS - подстановочный знак]

Если вы размещаете DNS своего домена в другом месте, вы должны установить вместо этого запись с подстановочными знаками.

  • Что вы должны увидеть сейчас: *

Запросы DNS для любого * random-sub-domain.examplewp.com * должны возвращать IP-адрес вашей капли.

Шаг второй - установка и настройка стека LEMP

В этом разделе мы установим и настроим Nginx, MySQL и PHP. Подробная статья о https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 статье о настройке LEMP. стек], на который вы можете ссылаться, если хотите. Этот раздел будет служить быстрой настройкой. Существует также изображение * LEMP в Ubuntu 14.04 * на вкладке * Applications * в разделе * Select Image * при создании капли.

Обновите репозитории и установите 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 устанавливается, вам будет предложено ввести пароль для пользователя корневой базы данных. Пожалуйста, введите надежный пароль и * не оставляйте его пустым *. Вы введете пароль дважды.

изображение: https: //assets.digitalocean.com/articles/wordpress_multisite/2.png [пароль root MySQL]

Создайте корень документа для Nginx, который будет содержать файлы WordPress. Мы будем использовать в этом уроке.

mkdir

Мы заменим виртуальный хост по умолчанию в Nginx своим собственным, поэтому удалите его символическую ссылку в каталоге * sites-enabled *.

rm /etc/nginx/sites-enabled/default

Создайте новый файл виртуального хоста в каталоге * sites-available *. Этот файл может быть назван как угодно. В нашем примере мы назовем это.

nano /etc/nginx/sites-available/

Отредактируйте этот файл и разместите следующую конфигурацию. Отредактируйте текст, выделенный красным в соответствии с вашей средой. В строке + server_name + вы должны добавить все три (или более) ваших многосайтовых домена и субдомен подстановочного знака для первого домена.

server {
   listen [::]:80 ipv6only=off;
   server_name ;

   root ;
   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;
}

Если эта Droplet будет содержать только эту установку WordPress, директивы + listen + и + server_name + могут быть изменены следующим образом:

listen [::]:80 default_server ipv6only=off;
server_name ;

Использование переменной + $ host + в директиве + access_log + создает отдельные файлы журнала для каждого домена, такие как examplewp.com-access.log и shoppingsite.com-access.log. Невозможно использовать такие переменные для директивы + error_log +, поэтому все ошибки записываются в один файл.

Сохраните этот файл и создайте символическую ссылку на этот файл в каталоге * sites-enabled *.

ln -s /etc/nginx/sites-available/wp-ms /etc/nginx/sites-enabled/wp-ms

Выполните тест конфигурации Nginx и перезапустите, если он вернет * OK *.

service nginx configtest
service nginx restart

Шаг третий - создание базы данных MySQL и пользователя для WordPress

В этом разделе мы создадим базу данных MySQL для WordPress и пользователя с разрешениями только для этой базы данных.

Войдите в командную строку MySQL как пользователь * root *.

mysql -u root -p

Создать базу данных.

CREATE DATABASE ;

Создайте пользователя MySQL и предоставьте разрешения для этой базы данных:

CREATE USER ''@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON .* TO ''@'localhost';

Замените слово * пароль * надежным паролем. Сбросьте привилегии и выйдите из командной строки MySQL.

FLUSH PRIVILEGES;
exit

Запишите эти детали, которые понадобятся вам на четвертом шаге.

_ _ * Имя базы данных: *

+ * Пользователь базы данных: *

+ * Пароль базы данных: * _ _

Более подробную информацию о пользователях MySQL можно найти в ths this статье.

Шаг четвертый - Загрузите и установите WordPress

В этом разделе мы скачаем последнюю версию WordPress и установим ее. Это будет для нашего первого сайта, * examplewp.com *.

Скачайте и распакуйте WordPress.

wget http://wordpress.org/latest.tar.gz
tar -xf latest.tar.gz

Переместить извлеченные файлы в корень документа.

mv wordpress/*

Присвойте право владения пользователю + www-data. Это важно для загрузки мультимедиа и обновления ядра / плагина / темы в WordPress.

chown -R www-data:www-data

Откройте * основной домен * в своем браузере, чтобы начать установку WordPress.

http:///

При необходимости вы можете добавить суффикс «www» к URL. Нажмите кнопку * Создать файл конфигурации *, а затем кнопку * Пойдем! *. Заполните данные базы данных (используйте информацию из третьего шага) и нажмите * Отправить *.

изображение: https: //assets.digitalocean.com/articles/wordpress_multisite/3.png [Детали базы данных WordPress]

В этот момент WordPress установит соединение с базой данных для проверки введенных учетных данных. Как только соединение установится успешно, появится кнопка * Запустить установку *. Нажмите здесь. Заполните форму * Информация, необходимая * для настройки названия вашего сайта, имени пользователя, пароля и адреса электронной почты, а затем нажмите * Установить WordPress *. В целях безопасности рекомендуется выбирать неуниверсальное имя пользователя.

изображение: https: //assets.digitalocean.com/articles/wordpress_multisite/4.png [Экран приветствия WordPress]

Шаг пятый - Включение мультисайтов и создание дополнительных сайтов

В этом разделе мы включим WordPress Multisite и создадим два дополнительных сайта, упомянутых в разделе * Prequisites * этой статьи.

Http://php.net/manual/en/language.constants.php[PHP constant] должен быть определен в файле * wp-config.php *, чтобы включить http://codex.wordpress.org/Tools_Network_Screen Страница [Настройка сети].

Отредактируйте файл * wp-config.php *:

nano wp-config.php

Добавьте следующий код * перед * комментарием `+ / * Вот и все, прекратите редактирование! Приятного ведения блога. * / + `:

/* Multisite settings */
define( 'WP_ALLOW_MULTISITE', true );

Мы будем редактировать этот файл еще несколько раз в течение этого урока. Не стесняйтесь добавлять все новые строки в раздел «+ / * Настройки мультисайта * / +», который мы только что создали.

Сохраните файл. Войдите в админ-панель WordPress и выберите «Инструменты»> «Настройка сети» *. Выберите параметр * Sub-domains *, измените * Название сети * по своему усмотрению и нажмите * Install *.

изображение: https: //assets.digitalocean.com/articles/wordpress_multisite/5.png [Настройка сети WordPress]

Вам будет предложено добавить два блока кода в файлы * wp-config.php * и * .htaccess *. Скопируйте код * wp-config.php *, который выглядит примерно так:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', '');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Отредактируйте файл * wp-config.php *.

nano wp-config.php

Добавьте эти строки * перед * комментарием `+ / * Вот и все, прекратите редактирование! Приятного ведения блога. * / + `и сохраните его. Код, отображаемый для .htaccess, можно игнорировать, так как Nginx не имеет этого файла.

Выйдите из админ-панели WordPress и войдите снова. От администратора toolbar в левом верхнем углу, перейдите к * Мои сайты> Сетевой администратор> Сайты *.

изображение: https: //assets.digitalocean.com/articles/wordpress_multisite/6.png [Панель инструментов WordPress]

Нажмите кнопку * Добавить новый *, чтобы открыть форму * Добавить новый сайт *. На следующем снимке экрана показаны заполненные данные для торгового сайта в нашем примере. Введенный * адрес сайта * сформирует поддомен этого сайта.

изображение: https: //assets.digitalocean.com/articles/wordpress_multisite/7.png [Создание нового сайта WordPress]

Нажмите * Добавить сайт , и созданный сайт будет доступен через * http: //shoppingsite.examplewp.com.

Повторите эти шаги для создания второго сайта (companysite.examplewp.com в нашем примере).

  • Что вы должны увидеть сейчас: *

Следующие три сайта WordPress:

  • examplewp.com

  • shoppingsite.examplewp.com

  • companysite.examplewp.com

У каждого из них будет свой контент, тема и активный набор плагинов.

Шаг шестой - настройка сопоставления доменов

В этом разделе мы дадим вам возможность использовать отдельное доменное имя для каждого сайта WordPress, загрузив и включив плагин WordPress MU Domain Mapping. Этот плагин позволяет пользователям WordPress Multisite связать свой блог / сайт с другим доменом.

Войдите в свою Droplet через SSH и загрузите плагин WordPress MU Domain Mapping. Сначала установите команду + 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 wp-content/plugins/

Скопируйте файл * sunrise.php * из каталога плагина в каталог * wp-content *.

cp wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php wp-content/

Отредактируйте файл * wp-config.php * и добавьте следующую строку * перед * комментарием `+ / * Вот и все, прекратите редактирование! Приятного ведения блога. * / + `.

Файл: + wp-config.php

define('SUNRISE', 'on');

Сохраните этот файл и вернитесь в веб-браузер. От панели инструментов WordPress перейдите к * Мои сайты> Сетевой администратор> Плагины *.

Изображение: HTTPS: //assets.digitalocean.com/articles/wordpress_multisite/8.png [Плагины]

Нажмите на ссылку * Активация сети * под плагином * WordPress MU Domain Mapping *. Перейдите в * Настройки> Сопоставление доменов * и внесите изменения в * Параметры домена * следующим образом:

  • Снимите флажок * Удаленный вход *

  • Проверьте * Постоянное перенаправление *

  • Снимите флажок * Перенаправлять страницы администрирования на исходный домен сайта *

изображение: https: //assets.digitalocean.com/articles/wordpress_multisite/9.png [Варианты сопоставления доменов]

Нажмите * Сохранить * после завершения. Эти параметры перенаправляют все запросы на субдомены (например, companysite.examplewp.com) на соответствующие внешние домены (например, companysite.org), включая страницы администрирования (/ wp-admin).

На следующем шаге мы будем сопоставлять доменное имя каждому сайту на основе его идентификатора. Существует много способов найти идентификатор сайта, но для более простого администрирования мы создадим простой плагин WordPress Must-use, который отображает дополнительный столбец идентификаторов на странице * Sites *. ,

Войдите в свою Droplet через SSH и создайте каталог * mu-plugins *.

mkdir wp-content/mu-plugins

Создайте файл PHP внутри этого каталога и вставьте следующий код:

nano 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;
}

В разделе * Сайты> Все сайты * теперь должен отображаться дополнительный столбец идентификаторов.

Изображение: HTTPS: //assets.digitalocean.com/articles/wordpress_multisite/10.png [ID]

Запишите значения идентификаторов для каждого сайта и перейдите на страницу * Настройки> Домены *. Введите идентификатор сайта, а затем внешний домен для сайта. Например, поскольку у companysite есть идентификатор 3, на этой странице * идентификатор сайта * должен быть равен 3, а домен должен быть * companysite.org *.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/11.png [Отображение идентификатора сайта в домен]

Вы можете добавить префикс «www», если хотите установить URL-адрес сайта как * http: //www.companysite.org [www.companysite.org] *. Повторите эти шаги для других доменов. Нажмите * Сохранить * внизу страницы.

  • Что вы должны увидеть сейчас: *

Каждый сайт будет иметь свое собственное доменное имя вместо поддоменов; То есть, введя http://companysite.org в вашем браузере, вы откроете сайт * My Online Company *. Вы можете проверить это сейчас, посетив 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/
Related