Гид по технологиям

Установка Drupal Multisite на Debian с ISPConfig

• 9 min read • Инструкции • Обновлено 25 Nov 2025
Установка Drupal Multisite на Debian с ISPConfig
Установка Drupal Multisite на Debian с ISPConfig

Основные понятия

  • Multisite — запуск нескольких сайтов на одном кодовой базе Drupal с отдельными настройками и файлами.
  • Ядро Drupal (core) — общие каталоги modules, themes, includes и т. п., которые используются всеми сайтами.
  • settings.php — файл конфигурации конкретного сайта; он содержит настройки подключения к БД и некоторые системные параметры.

Хронология операции (кратко)

  1. Создаёте сайт и базу в ISPConfig.
  2. Даёте права MySQL владельцу базы через root.
  3. На уровне файлов создаёте символьные ссылки и копируете стартовые файлы из core в корень нового сайта.
  4. Создаёте каталог sites/<домен> и настраиваете settings.php.
  5. Проходите установку через веб-интерфейс, настраиваете cron и права папки files.

Важно: все команды выполняйте от привилегированного системного пользователя, который имеет доступ к /www и правам на создание ссылок и папок. Не используйте учётную запись web-приложения для выдачи привилегий в MySQL.


Чему соответствует это руководство — цели и варианты использования

Primary intent: развернуть новый мультисайт Drupal 5.6 на Debian Etch с ISPConfig. Подходит для среды, где одно ядро Drupal уже установлено в /www/web1/web/ и второй сайт будет расположен в /www/web2/web/. Варианты: аналогично применимо к другим дистрибутивам Linux при корректировке путей и инструментов управления хостингом.

1. Требования и подготовка

  • Debian Etch (инструкция писана для Debian, но шаги применимы к любому Linux при корректировке путей).
  • Установленный Drupal core в /www/web1/web/ (в примере — версия 5.6).
  • ISPConfig для управления сайтами, пользователями и созданием БД.
  • Доступ к MySQL как root для выдачи привилегий.
  • Права на файловую систему для создания символьных ссылок и изменения chmod.

Коротко: проверьте, что у вас есть доступ к терминалу, ISPConfig и MySQL root.

2. Имена и пароли в примере

В примере используются следующие обозначения — замените их на свои значения:

  • Домен мультисайта: www.multiexample.tld
  • Администратор сайта: admin
  • MySQL суперпользователь: root (пароль rootpassword)
  • База мультисайта: web2_db1
  • MySQL пользователь мультисайта: web2_u1
  • Пароль для web2_u1: web2password
  • Drupal версия в примере: 5.6

3. Создание нового сайта в ISPConfig

  1. Войдите в ISPConfig.
  2. Перейдите: ISP Manager => New site.
  3. Заполните форму: Hostname = www, Domain = multiexample.tld.
  4. Включите PHP и MySQL. Не выбирайте PHP Safe Mode.
  5. Не сохраняйте пока: создайте пользователя администратора через User and Email => New. Создайте user = admin и предоставьте права администратора, добавьте email.
  6. Сохраните пользователя, затем вернитесь к окну сайта и создайте базу: Options => Database New.
  7. ISPConfig покажет: Database name: web2_db1, Database user: web2_u1 — задайте пароль web2password и нажмите Save.
  8. Вернитесь на вкладку Basic и нажмите Save, чтобы сохранить сайт.

Примечание: интерфейс ISPConfig может отличаться по версии; поля те же, логика одинаковая.

4. Предоставление привилегий в MySQL

Важно: используйте MySQL root для выдачи прав. Новому пользователю web2_u1 нужно дать привилегии над web2_db1.

Выполните в терминале:

mysql -u root -p

Введите пароль rootpassword. В появившейся подсказке mysql> выполните:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON web2_db1.* TO 'web2_u1'@'localhost' IDENTIFIED BY 'web2password';

Если успешно, вы увидите:

Query OK, 0 rows affected

Активируйте права:

FLUSH PRIVILEGES;

Выйдите из mysql. Если вы использовали интерактивную оболочку, завершите доступ стандартным способом (например, CTRL+D или EXIT). Не используйте CTRL+Z, так как это переводит процесс в фоновый режим.

Важно: не используйте пользователя web2_u1 для выдачи привилегий другим пользователям — только root или другой суперпользователь MySQL.

5. Установка файлов Drupal для мультисайта

Переключитесь в корень нового сайта:

cd /www/web2/web/

Создайте символьные ссылки на общие каталоги ядра Drupal, чтобы использовать одну кодовую базу:

ln -s /www/web1/web/includes
ln -s /www/web1/web/misc
ln -s /www/web1/web/modules
ln -s /www/web1/web/profiles
ln -s /www/web1/web/scripts
ln -s /www/web1/web/sites
ln -s /www/web1/web/themes

Затем скопируйте необходимые файлы из ядра в корень сайта (они нужны для корректного запуска и установки):

cp /www/web1/web/CHANGELOG.txt /www/web2/web/
cp /www/web1/web/cron.php /www/web2/web/
cp /www/web1/web/index.php /www/web2/web/
cp /www/web1/web/INSTALL.mysql.txt /www/web2/web/
cp /www/web1/web/INSTALL.pgsql.txt /www/web2/web/
cp /www/web1/web/install.php /www/web2/web/
cp /www/web1/web/INSTALL.txt /www/web2/web/
cp /www/web1/web/LICENSE.txt /www/web2/web/
cp /www/web1/web/MAINTAINERS.txt /www/web2/web/
cp /www/web1/web/robots.txt /www/web2/web/
cp /www/web1/web/update.php /www/web2/web/
cp /www/web1/web/UPGRADE.txt /www/web2/web/
cp /www/web1/web/xmlrpc.php /www/web2/web/

Теперь создайте каталог для домена внутри общего каталога sites ядра. Обратите внимание: каталог создаётся в /www/web1/web/sites/ (ядро), а не в /www/web2/web/sites/. Это нормальная практика: каждый мультисайт получает подкаталог в общем sites.

mkdir /www/web1/web/sites/multiexample.tld

Скопируйте заготовленный файл настроек (в примере settings.php.multi с первой части руководства) и задайте временно открытые права для установки:

cp /www/web1/web/sites/default/settings.php.multi /www/web1/web/sites/multiexample.tld/settings.php
chmod 777 /www/web1/web/sites/multiexample.tld/settings.php

В корне /www/web2/web/ может присутствовать index.html, установленный ISPConfig. Переименуйте его, чтобы не мешал index.php Drupal:

mv index.html index.html.old

Примечание: альтернативно можно удалить index.html, но лучше переименовать как резервную копию.

6. Настройка базы через веб-интерфейс Drupal

Откройте браузер и перейдите на http://www.multiexample.tld. Если всё в порядке, вы увидите страницу установки БД. Введите параметры:

  • Database name: web2_db1
  • Username: web2_u1
  • Password: web2password

Конфигурация базы данных Drupal

Нажмите “Save configuration”. После успешной инициализации вы получите предупреждение о правах на settings.php — система попросит вернуть права к 644.

Установка завершена — предупреждение о правах

Вернитесь в терминал, находясь в /www/web2/web/ (или перейдите туда):

cd /www/web2/web/
chmod 644 sites/multiexample.tld/settings.php

Создайте директорию для загружаемых файлов сайта и сделайте её записываемой веб-сервером:

mkdir files
chmod 777 files

Примечание по безопасности: chmod 777 удобно для установки, но небезопасно в долгосрочной перспективе. После настройки рекомендуем ограничить права до более безопасных значений и настроить владельца/группу под пользователя веб-сервера (например, www-data).

7. Завершение установки и первичная конфигурация

Зайдите в админку сайта (http://www.multiexample.tld) и создайте root-пользователя сайта. Drupal пришлёт на указанный email сгенерированный пароль. Если вы измените пароль вручную, система не пришлёт его по почте, поэтому сохраните его в надёжном месте.

Стартовая страница Drupal

Перейдите в раздел Отчёт о состоянии (Status report). Возможно, вы увидите сообщение о неработающем cron. Запустите cron вручную, чтобы убрать предупреждение. Затем настройте автоматический запуск cron (см. ниже).

Отчёт о проблеме установки Ошибка Cron

8. Настройка Cron

Cron нужен для задач обслуживания: отправка почты, обновление индексов, агрегация кеша и т. п. Простой вариант — добавить в кронтаб системного пользователя команду для выполнения cron.php:

Для систем с wget:

*/30 * * * * /usr/bin/wget -O - -q -t 1 http://www.multiexample.tld/cron.php

Или через curl:

*/30 * * * * /usr/bin/curl --silent http://www.multiexample.tld/cron.php >/dev/null 2>&1

Для более безопасного вызова используйте запуск PHP CLI (если доступен) и absolute path на update.php или cron.php с параметрами пользователя.

Важно: интервал и метод зависят от нагрузки сайта. Частые вызовы увеличивают нагрузку.

9. Чек-листы и роли

Ниже — практические контрольные списки для ключевых ролей.

Для системного администратора

  • Создал сайт в ISPConfig и указал hostname и домен.
  • Создал MySQL базу web2_db1 и пользователя web2_u1.
  • Выдал нужные привилегии через root.
  • Создал симлинки и скопировал необходимые файлы из ядра.
  • Настроил правильные права для settings.php (777 для установки, 644 после).
  • Создал директорию files и назначил права/владельца.
  • Настроил cron и проверил выполнение задач.
  • Настроил резервное копирование файлов и базы данных.

Для администратора сайта (контент)

  • Создал учетную запись администратора сайта и сохранил пароль.
  • Проверил статус сайта в админке Drupal, запустил cron вручную.
  • Настроил e-mail отправку тестового письма.
  • Установил базовые модули и тему оформления при необходимости.

Для разработчика

  • Проверил, что все модули и темы совместимы с Drupal 5.6.
  • Убедился, что кастомные модули используют правильный путь к files.
  • Настроил dev/stage/production workflow и миграцию содержимого.

10. Безопасность и права

  • settings.php: 777 только временно при установке. После установки вернуть 644.
  • files: вместо 777 лучше установить владельца web-сервера (chown www-data:www-data files) и выставить 755/750 по необходимости.
  • Бэкапы: настройте автоматические бэкапы базы данных и директорий sites/* и files.
  • Обновления: Drupal 5.x давно устарел — планируйте миграцию на актуальную версию ради безопасности.
  • SELinux/AppArmor: если они включены, добавьте правила для доступа Apache/Nginx к /www.

11. Отладка распространённых проблем

  • Ошибка подключения к БД: проверьте данные в settings.php, права у пользователя MySQL, и что база существует.
  • “Access denied” при выдаче привилегий: используйте root MySQL и FLUSH PRIVILEGES.
  • Белая страница / 500: проверьте логи веб-сервера (/var/log/apache2/error.log) и права файлов.
  • Cron не запускается: проверьте, может ли веб-сервер обращаться к cron.php (проверьте блокировки в .htaccess и правила firewall).

Краткий чек для логов:

  • Apache/Nginx error.log
  • MySQL error.log
  • Drupal watchdog (Reports → Recent log messages)

12. Краткая методика отката (rollback)

  1. Если ошибка сразу после копирования файлов: верните index.html (mv index.html.old index.html).
  2. Если непреодолимые проблемы с БД: восстановите дамп базы из резервной копии.
  3. Если права сломали доступ: восстановите владельца и права через chown/chmod по бэкапу.

Критерии приёмки

  • Сайт открывается по адресу www.multiexample.tld и показывает страницу Drupal.
  • Установка базы прошла успешно без ошибок.
  • settings.php имеет права 644, папка files доступна для записи веб-сервером.
  • Cron выполнен хотя бы один раз вручную и не сообщает ошибок.

13. Миграция и совместимость

  • Путь /www/web1/web/ и /www/web2/web/ — это примеры. На вашей системе пути могут отличаться (например, /var/www/). Подстраивайте команды под свои пути.
  • Если вы планируете миграцию на новую версию Drupal, заранее тестируйте модули и данные в тестовой среде.

14. Когда этот подход не подходит

  • Если ваши сайты требуют разные версии модулей или ядра — Multisite на одной кодовой базе не подойдёт.
  • Если вы хотите разнести сайты по разным версиям PHP или разным контейнерам — лучше использовать отдельные установки.

15. Полезные подсказки и лучшие практики

  • Используйте символьные ссылки для экономии места и упрощения обновлений ядра.
  • После обновления ядра проверьте, что все сайты работают: запустите update.php для каждой базы.
  • Документируйте все пароли и конфигурации в защищённом менеджере паролей.
  • Планируйте миграцию с Drupal 5.x — поддержка прекращена, риски безопасности высоки.

16. Fact box — ключевые моменты

  • Drupal версия в примере: 5.6
  • Файлы ядра: /www/web1/web/
  • Корень нового сайта: /www/web2/web/
  • Привилегии MySQL, требуемые пользователю: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES
  • Права settings.php: 777 на время установки, 644 после
  • Рекомендуемая практика: назначить владельца файлов под веб-сервер и избегать 777 в проде

17. Мини-решение: переход от установки к эксплуатации (SOP)

  1. Проверьте наличие core в /www/web1/web.
  2. Создайте сайт и БД в ISPConfig.
  3. Выдайте права MySQL через root.
  4. Создайте симлинки и скопируйте файлы в /www/web2/web/.
  5. Скопируйте settings.php.multi в sites/<домен>/ и дайте 777.
  6. Пройдите веб-установку, затем восстановите права и создайте files.
  7. Настройте cron и бэкапы.
  8. Проверьте отчёт о состоянии и устраните предупреждения.

18. Часто задаваемые вопросы

Q: Нужно ли каждому сайту своя база?
A: Обычно да. Отдельные базы изолируют данные и упрощают бэкап/миграцию.

Q: Можно ли использовать один каталог files для нескольких сайтов?
A: Нет, у каждого сайта должен быть свой каталог files, иначе загруженные файлы будут смешаны.

Q: Как безопасно настроить права после установки?
A: Сделайте chown www-data:www-data files; chmod 755 files; chmod 644 sites/*/settings.php.

19. Ресурсы

  • Официальная документация Drupal: https://www.drupal.org
  • Документация ISPConfig на вашем сервере (версия зависит от инсталляции)

20. Заключение

Вы успешно развернули мультисайт Drupal на общей кодовой базе. Дальше можно добавлять содержимое, темы и модули, но не забывайте о безопасности и регулярных бэкапах. Планируйте обновление на более современные релизы Drupal в ближайшей перспективе.

Краткое резюме:

  • Создайте сайт и базу в ISPConfig.
  • Выдайте MySQL-привилегии через root.
  • Создайте симлинки и скопируйте стартовые файлы в корень сайта.
  • Скопируйте settings.php в каталог sites/<домен>, дайте права, пройдите установку и затем верните права.
  • Настройте cron и бэкапы.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

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

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро