Недавно поставил на новый виндовый сервер drupal 8. Пока ставил, наступил на все возможные грабли. Если вы собираетесь ставить drupal 8 на IIS — вам сюда.
Подготовка к установке
Если у вас вообще ничего нет, если вы собираетесь поставить всё с нуля, то нужно начать с установки операционной системы. Поставим Windows Server 2016.
ESXi 6.7 - установка Windows Server 2016 на виртуальную машину
Итак, операционная система установлена. Теперь поднимем web-сервер IIS 10.
Установка IIS в Windows Server 2016
Готово, веб сервер поднят. Друпал работает на PHP, ставим 7.3.1. Вместе с PHP устанавливаем модуль URL Rewrite 2.1.
PHP нужно будет потом немного донастроить, но стандартной конфигурации достаточно для установки Drupal 8. Тюнить PHP будем потом, сам Drupal нам потом и подскажет, что донастроить.
Дальше нам нужна база данных. MySQL подойдёт.
Установка MySQL 8 на Windows Server 2016
Дополнительно понадобится почтовый сервер, должен же друпал как-то слать письма. Статьи по настройке почтовика у меня пока нет, будем считать, что вы с этим моментом сами справитесь.
Что ещё нужно сделать перед установкой
Нужно создать базу данных (схему) в MySQL, создать пользователя для этой базы, дать ему полные права на базу. Записать на бумажку или в файл:
- Имя БД
- Имя пользователя от БД
- Пароль пользователя от БД
- Адрес БД
- Порт БД
У меня веб-сервер и БД на одном сервере, порт стандартный, поэтому адрес БД у меня localhost, порт стандартный 3306.
Нужно придумать и создать почтовый ящик, от имени которого drupal будет рассылать сообщения.
- e-mail для drupal
Нужно делегировать домен и направить трафик на соответствующие NS сервера.
Нужно создать сайт на IIS. В директорию пока ничего не кладём, можно какой-нибудь тестовый файл с текстом "hello world", чтобы убедиться, что сайт работает.
Нужно настроить права на папку с сайтом. Для простоты можно сделать полный доступ к корневой папке сайта пользователям IUSR и IIS_IUSRS. Потом полный доступ можно снять и дать только на нужные директории.
Дистрибутив Drupal
Заходим на сайт https://drupal.org и качаем дистрибутив.
Try Drupal > Download.
Качаем Download Drupal zip.
На момент написания статьи последняя версия друпала: 8.6.13. Распаковываем содержимое архива в корень нашего сайта.
Заходим на сайт через браузер.
Установка Drupal
Итак, подготовка окончена, пора приступать к установке. Мы находимся в разделе "Choose language". Нужно выбрать язык. Выбираю русский.
Появляется предупреждение, что перевод будет скачан с ftp, если не хочется качать, выбираем обратно english. Но я упёртый, хочу русский. Save and continue. И у вас есть большой шанс увидеть такую ошибку:
The translation server is offline.
The installer requires to contact the translation server to download a translation file. Check your internet connection and verify that your website can reach the translation server at http://ftp.drupal.org. Check the messages and try again.
Ну тут всё понятно, по какой-то причине установщик не может скачать файл в переводом самого себя. Есть три варианта решения проблемы.
Первый вариант решения проблемы с переводом инсталлятора drupal
Можно выбрать язык english и ничего качать не придётся. Ошибка пропадёт. Это быстрый метод, но не наш.
Второй вариант решения проблемы с переводом инсталлятора drupal
Заходим на сайт https://localize.drupal.org.
Скроллим вниз и находим язык Russain.
Тыкаем в него.
Тыкаем во вкладку Overview.
И скачиваем там перевод. Но мне не нравится, что я ставлю drupal версии 8.6.13, а перевод уже от следующей версии.
Третий вариант решения проблемы с переводом инсталлятора drupal
Прямо на странице с ошибкой кликаем на ссылку https://ftp.drupal.org/. files > translations > 8.x > drupal > drupal-8.6.x.ru.po.
Качаем drupal-8.6.x.ru.po. Кладём в папку sites\default\files\translations.
Кликаем по ссылке try again.
Инсталлятор стал русскоязычным. Мы в разделе "Выбор профиля". Есть три варианта установки:
- Стандарт
- Минимальный
- Demo.
Я в демонстрационных целях выбираю Demo.
"Сохранить и продолжить".
Если инсталлятору что-то не понравится, то мы можем попасть в раздел "Проверка соответствия требованиям". Я при первой попытке увидел предупреждение:
КЕШИРОВАНИЕ PHP OPCODE
Данное предупреждение можно игнорировать и "продолжить в любом случае", а можно и сразу решить проблему, включив PHP Opcode. Для этого нужно внести в файл php.ini:
[opcache]
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
[PHP_OPCACHE]
zend_extension=php_opcache.dll
Не включайте php_opcache.dll через PHP Manager в IIS, там это можно сделать.
Но если это сделать, то в php.ini будет написано:
[PHP_OPCACHE]
extension=php_opcache.dll
Что очень неправильно, и на эти грабли я тоже наступал. Продолжаем установку. Попадаем в раздел "Установка базы данных".
Вод здесь нам и понадобится название базы и юзер с паролем, вводим эти данные. "Сохранить и продолжить". Попадаем в раздел "Установка сайта".
Начинается установка сайта. Попадаем в раздел "Установка переводов".
Попадаем в раздел "Настройка сайта".
Указываем:
- Название сайта.
- E-mail адрес сайта.
- Логин админа.
- Пароль админа.
- E-mail адрес админа.
- Страну.
- Часовой пояс.
- И галки:
- Проверять обновления автоматически.
- Получать уведомления по электронной почте.
"Сохранить и продолжить". Попадаем в раздел "Завершение переводов".
Ждём. Открывается главная страница сайта.
Drupal успешно установлен, поздравляем!
Настройка Drupal 8 после установки
Логинимся под админом. Конфигурация > Отчёт о состоянии.
Видно ошибку:
В settings.php не настроена переменная trusted_host_patterns. Это потенциальная угроза безопасности вашего сайта. Крайне рекомендуется настроить этот параметр. Более подробная информация доступна на странице Защита против HTTP HOST Header атак.
Находим на сайте файл settings.php, снимаем атрибут "только чтение" и раскомментируем переменную trusted_host_patterns. Не забываем отредактировать под свой домен, пример:
$settings['trusted_host_patterns'] = array(
'^hello\.your-domain\.ru$',
'^192\.168\.1\.1$',
);
Ошибка пропала. Переходим в Конфигурация > Файловая система. Обращаем внимание на настройку "Базовый URL общедоступных файлов". Если ваш веб-сервер находится за прокси. вы можете увидеть такую картину:
Это никуда не годится. В файле settings.php раскоментируем параметр $settings['file_public_base_url'] и укажем верный URL:
$settings['file_public_base_url'] = 'http://hello.your-domain.ru/sites/default/files';
Временный каталог можно сменить на "C:\Windows\temp", не забываем только про права доступа. Но это не обязательно.
"Сохранить конфигурацию".