Семейство сайтов на одном движке Wordpress

В этой статье рассмотрим, как установить и настроить несколько сайтов, работающих на движке WordPress, таким образом, чтобы они использовали одну-единственную инсталляцию движка. Предполагается, что на нашей хостинговой площадке развёрнута операционная система CentOS 7.0.

Программа WordPress появилась в 2003 в виде нескольких строк кода, для улучшения типографии при повседневном наборе текста. С тех пор WordPress превратился в наиболее популярную самодостаточную программу: сейчас это мощнейший движок для создания блогов, используемый на миллионах сайтов миллионами людей каждый день. Рассмотрим процесс установки WordPress 4.0 на CentOS 7.0 в виде простой последовательности действий.

1 Предварительные замечания

В первую очередь потребуется установить CentOS, прежде чем продолжить. Система должна иметь статический IP-адрес. В нашем случае будем использовать 192.168.0.100 в качестве IP адреса. Также нам понадобится установленный на CentOS 7.0 LAMP-сервер, прекрасно подойдёт связка apache+nginx.

2 Инициализация баз данных

Базы данных для Wordpress 4.0 создаются следующим образом:

mysql -u root -p

Затем присвоим значения database=wordpressdb user=wordpressuser и password=wordpresspassword:

CREATE DATABASE wordpressdb;
CREATE USER wordpressuser@localhost IDENTIFIED BY 'wordpresspassword';
GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpressuser@localhost;

Двигаемся далее:

FLUSH PRIVILEGES;
exit

Перезапустим службы:

service httpd restart
service mariadb restart

Далее настроим межсетевой экран для работы с http и https следующим образом:

firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Для того, чтобы развернуть семейство сайтов на одном движке, я бы рекомендовал отключить SELinux.

3 Установка WordPress 4.0

Для начала создадим директорию temp, в которую загрузим последнюю версию Wordpress:

mkdir temp
cd temp
yum install wget unzip net-tools
wget http://wordpress.org/latest.zip

Далее если требуется работа с изображениями, установим плагины и обновления с полномочиями SSH и установим следующее:

yum install php-gd
service httpd restart

Распакуем архив Wordpress 4.0 в папку:

unzip -q latest.zip -d /var/www/html/

Теперь предоставим директории соответствующие права доступа:

chown -R apache:apache /var/www/html/wordpress
chmod -R 755 /var/www/html/wordpress

Далее необходимо собственноручно создать директорию для загрузки ниже директории wp-content в корне документа. Это будет исходной директорией для нашего содержимого:

mkdir -p /var/www/html/wordpress/wp-content/uploads

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

chown -R :apache /var/www/html/wordpress/wp-content/uploads

Теперь нам потребуется образец файла конфигурации, для того чтобы скопировать его в стандартный файл конфигурации, таким образом WordPress сможет распознать файл конфигурации. Образец файла конфигурации находится по адресу /var/www/html/wordpress:

cd /var/www/html/wordpress/
cp wp-config-sample.php wp-config.php
nano wp-config.php
[...]
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpressdb');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'wordpresspassword');
[...]

Необходимо ввести те же данные, что были заданы при инициализации баз данных.

3.1 Настройка поддержки нескольких сайтов

Теперь необходимо настроить поддержку нескольких сайтов, для этого добавим несколько строк в файл wp-config.php , перед строками /* That’s all, stop editing! Happy blogging. */.

nano /var/www/html/wordpress/wp-config.php
[...]
/* Multisite */
define('WP_ALLOW_MULTISITE', true);
/* That's all, stop editing! Happy blogging. */
[...]

3.2 Перезапись Apache

Нам потребуется изменить файл виртуального хоста apache для WordPress, чтобы заменить.htaccess. Для этого откроем файл виртуального хоста и добавим следующее:

nano /etc/httpd/conf/httpd.conf
[...]
# Further relax access to the default document root:
<Directory "/var/www/html">
# # Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
[...]

Сменим значение AllowOverride None на AllowOverride All, затем перезапустим службу:

service httpd restart

3.3 Создание файла .htaccess

Теперь создадим файл.htaccess в корне документа, это позволит Apache производить перезапись:

touch /var/www/html/wordpress/.htaccess

Необходимо, чтобы сервер был владельцем группы, делается это следующим образом:

chown apache /var/www/html/wordpress/.htaccess

Если требуется, чтобы WordPress автоматически обновлял файл с правом перезаписи, необходимо убедится, есть ли для этого соответствующие права доступа:

chmod 664 /var/www/html/wordpress/.htaccess

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

chmod 644 /var/www/html/wordpress/.htaccess

В нашем случае будем использовать права доступа 644.

3.4 Веб-установка

Перейдём в веб-установке WordPress 4.0. Переходим по адресу http://192.168.0.100/wordpress/wp-admin/install.php.

Выбираем язык и нажимаем Continue.

Нажимаем Next

Теперь задаём данные для создания сайта, в нашем случае:

Site Title = Wordpress-testsite
Admin Email = Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Username = admin
Admin password = testpassword
Confirm Admin Password = testpassword

Вы можете ввести любые данные, на ваше усмотрение. После этого нажимаем InstallWordpress.

Переходим к странице входа, вводим данные и нажимаем LogIn.

Дадим полномочия, которые мы выбрали во время веб-установки WordPress:

Далее появится окно приветствия WordPress. На этой странице отображается текущая версия WordPress.

3.5 Настройка поддержки нескольких сайтов

Переходим Tools-->Network setup

Вводим данные:

Network Title = Wordpress-testsite multisite
Network admin email = Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

И нажимаем Install

Далее появится окно с названием «Create a Network of WordPress Sites»

Скорируем содержимое этого окна в файл wp-config.php по адресу /var/www/html/wordpress/ над строчкой /* That’s all, stop editing! Happy blogging. */:

nano /var/www/html/wordpress/wp-config.php

Введём данные, в нашем случае данные будут следующими:

[...]
/* Multisite */
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', '192.168.0.100');
define('PATH_CURRENT_SITE', '/wordpress/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
/* END. */
[...]

Внимание: адрес 192.168.0.100 в Вашем случае может быть другим!

Добавим наши данные в файл.htaccess по адресу /var/www/html/wordpress/, заменив другие правила WordPress:

nano /var/www/html/wordpress/.htaccess
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Затем перезапустим Apache

systemctl restart httpd.service

Перезайдём в WordPress. После успешной установки Multisite Network, необходимо переключиться на Network Dashboard для настройки сети, добавления новых сайтов и т.д. Наведём мышку на меню My Sites в панели инструментов администратора, появится всплывающее окно, нажимаем Network Admin-->Dashboard.

Теперь для создания сайта выбираем Sites-->Add New

И вводим необходимые данные.

Поздравляем! Теперь у вас есть полностью функциональная версия WordPress 4.0 с поддержкой нескольких сайтов на CentOS.

Не забудьте в целях безопасности изменить префикс баз данных при установке. Кроме того, стоит выполнить restorecon -R /var/www/html/wordpress' and 'setsebool -P httpd_unified 1

3 комментарии

  • Кирилл

    написал Кирилл

    Понедельник, 14 Март 2016 00:09

    Спасибо за ценную статью о том, как сделать на одном движке от wordpress несколько сайтов, при этом использовав 1 базу данных.

  • dana

    написал dana

    Четверг, 28 Апрель 2016 09:45

    Вот, кстати, нашел в сети еще один вариант реализации нескольких сайтов на одном движке wordpress. Там подход несколько иной, позволяющий для каждого сайта использовать отдельный конфиг файл. А это значит, что теоретически можно под одной админкой объединить даже сайты с разных баз данных.

  • Alina Mironova

    написал Alina Mironova

    Воскресенье, 01 Июль 2018 19:36

    Здравствуйте! Установите и активируйте выбранный плагин, например, All in One SEO Pack. Используйте настройки по умолчанию, если вы только знакомитесь с WordPress. Если вы считаете себя продвинутым вебмастером, можете изменить некоторые настройки SEO-модуля. Для этого выберите меню «Инструменты SEO» в консоли «движка».

Оставить комментарий

Ваше мнение очень важно для нас! Обязательно выскажите Ваши мысли, пожелания и критику! Не стесняйтесь задавать вопросы. Скорее всего, ответ появится уже через 2-3 дня. Спасибо заранее.

Другие материалы в этой категории:

Go to top