Мультисайт Drupal 8
В следующем руководстве будут освещены шаги, необходимые для настройки мультисайта Drupal 8. Это руководство находится в стадии разработки, представлены только некоторые примеры конфигураций. Доступны другие варианты, такие как HTTPS, другие веб-серверы и базы данных, а также более усовершенствованные конфигурации виртуальных хостов и т. д.
Однако следует отметить, что использование хостинг-системы Aegir является предпочтительным. Он выполняет всю тяжелую работу за вас, используя безопасные передовые практики, включая автоматическую настройку виртуальных хостов для Apache и Nginx, добавление поддержки HTTPS, запуск команд Composer и т. д. см. Документацию по настройке «платформы», Aegir-speak для многосайтовая кодовая база.
Обзор процесса:
1. Установите экземпляр Drupal 8, который будет выполнять роль корневого сайта для нашего многоузлового экземпляра. В нашем примере корневой сайт будет называться d8multisite, будет доступен на d8multisite.com и будет установлен на /var/www/d8multisite.
2. Создайте сайт в мультисайт с названием site1, который доступен на site1.d8multisite.com
3. Настройте site1, чтобы иметь свои собственные модули вне корневого сайта.
Шаг 1: создание мастер-сайта
Чтобы начать процесс, установите копию Drupal 8 на свой сервер. Прочитайте документы по установке Drupal 8, если вы не знакомы.
В этом примере мы устанавливаем Drupal со следующими шагами:
1.1: Создайте базу данных для многосайтового корневого сайта, например: d8multisite.
1.2: Загрузите и извлеките копию Drupal 8 в свой веб-каталог.
1.3. Создайте определение виртуального хоста для корневого сайта. Читайте о конфигурациях виртуальных хостов. Пример конфигурации виртуального хоста Apache: Для Nginx смотрите официальный рецепт.
<VirtualHost *: 80> # настройка виртуального хоста для многосайтового корневого сайта Drupal 8 ServerAdmin me@domain.com DocumentRoot / var / www / d8multisite Имя_сервера d8multisite.com ServerAlias www.d8multisite.com <Directory /> Опции FollowSymLinks AllowOverride Нет </ Directory> <Directory / var / www / d8multisite> Опции Индексы FollowSymLinks MultiViews AllowOverride All Заказать разрешить, отказать Разрешить от всех </ Directory> ErrorLog $ {APACHE_LOG_DIR} /d8multisite_error.log LogLevel предупреждают CustomLog $ {APACHE_LOG_DIR} /d8multisite_access.log в сочетании </ VirtualHost>
1.4: Установите Drupal, посетив d8multisite.com и следуя интерфейсу установки.
Шаг 2. Настройте первый сайт для мультисайта
Теперь, когда у нас настроен корневой сайт, мы можем приступить к настройке нашего первого сайта с именем site1. Вот шаги в этом процессе:
2.1. Создайте папку для site1 на своем мультисайте: /d8multisite/sites/site1.d8multisite.com
2.2: Создать базу данных для сайта 1, например: d8multisite_site1
2.3. Сделайте копию /d8multisite/sites/example.sites.php с именем /d8multisite/sites/sites.php
2.4: Отредактируйте sites.php так, чтобы конец файла выглядел так:
# make the root drupal site aware of site1: $sites['site1.d8multisite.com'] = 'site1.d8multisite.com';
2.5: Создайте виртуальный хост для site1. Обратите внимание, что этот виртуальный хост должен указывать на корневой сайт, а не на его подкаталог. Обратите внимание, что вы также можете отказаться от создания новой конфигурации виртуального хоста для этого сайта и только для нового сайта в качестве ServerAlias для корневого сайта. В этом примере Apache мы, однако, создадим отдельный виртуальный хост для site1:
<VirtualHost *:80> ServerAdmin me@domain.com DocumentRoot /var/www/d8multisite ServerName site1.d8multisite.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/d8multisite> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log combined </VirtualHost>
2.6. Скопируйте /d8multisite/sites/default/default.settings.php в каталог нового сайта в виде settings.php:
#from the drupal root folder cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php
2.7: Завершите процесс установки Drupal для site1, посетив домен сайта.
Вы можете повторять эти шаги каждый раз, когда хотите создать сайт на своем мультисайте. Вы также можете использовать такие домены, как example.com и site1.anotherdomain.com. Подробнее о доменах, URL-адресах и именах подкаталогов сайтов.
Шаг 3. Включите модули для каждого сайта
В некоторых случаях вы можете захотеть, чтобы один из ваших сайтов в вашем мультисайте имел свои собственные модули. Чтобы включить это, вам просто нужно создать соответствующие папки в папке целевого сайта. См. Структура многосайтовых папок в Drupal 8.
В этом примере мы позволим site1 иметь свои собственные модули:
1. Создайте папку «modules» в подкаталоге site1: /d8multisite/sites/site1.d8multisite.com/modules
2. Предоставьте apache доступ для записи в эту папку с помощью chown www-data /d8multisite/sites/site1.d8multisite.com/modules
3. Проверьте это:
1) Переместитесь из подкаталога site1 (т.е. в корневой сайт) и установите модуль Pathauto с помощью drush drush dl pathauto
2) Перейдите в подкаталог site1 и установите модуль ds с помощью drush drush dl ds
3) Посетите оба сайта и подтвердите:
- Pathauto доступен на обоих сайтах
- Display Suite доступен только на сайте1
Примечание. Предполагается, что вы можете сделать это с темами, библиотеками и файлами. Здесь требуется дополнительное тестирование и документация.
Использование drush в мультисайте
Вы можете использовать -l option:
drush -l example.com command
или псевдоним сайта:
drush @alias command
Чтобы проверить, какие псевдонимы используются, выполните:
drush site:alias
Примером его вывода может быть:
@sub1.dev ':
root: /var/www/mydomain.com/web
uri: «https://sub1.mydomain.com»
@default.dev ':
root: /var/www/mydomain.com/web
uri: «https://sub2.mydomain.com/»
@third.dev ':
root: /var/www/mydomain.com/web
uri: «https://thirddomain.com»
И правильная команда drush может быть:
drush @sub1 updb
Примечание: мы не используем «.dev» в псевдониме
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.