Установка Drupal 10 на хостинг с Ubuntu 22.04, LAMP, ISP manager Lite 6.68

Главные вкладки

Аватар пользователя karmike karmike 15 марта в 13:29
1

Обновляю два сайта на Друпале с 8 до 10. Старые сайты снес, содержимое сохранено, буду избирательно переносить на новые сайты, поэтому Друпал ставлю заново.

Сам я не специалист, можно сказать, продвинутый поневоле пользователь.
Поэтому буду писать сюда проблемы и решения для других "чайников".
Может быть, слишком подробно, но иначе нам, самоделкиным, никак.

Ставил Друпал Композером, как рекомендовано, да тако оно и проще, на самом деле.
Тут есть моменты.
а) Нужно иметь доступ SSH, чтобы работать с терминалом, и клиент. Обычно рекомендуют Putty, но есть штука много лучше. Это такой Bitvise SSH client, бесплатный, графический, запоминает много сайтов (если надо) и в дополнение имеет файловый менеджер, типа Total Commander.
б) Многие вещи я делаю через ISP manager, о чем и упомянул в названии. Хостинг 1VDS.

Теперь о проблемах.

Вводная часть. У вас заранее должны быть DNS имена, обычно можно получить их через хостинг. Сначала я создаю сайт на хостинге с имеющимся именем, используя ISP менеджер (Сайты > создать сайт). При этом он создает директорию для сайта и файлы конфигурации для Apache и nginx (если у провайдера используется т.н. связка). Собственно, веб-сервер просто отправляет запросы из интернет в эту дир., а там уже должны быть файлы для обработки запросов.
Никакого сайта пока нет, но если в дир. положить файл index.html или info.php, будут работать.

Далее, иду в SSH client, захожу на хостинг (провайдеры дают логин и пароль), файл менеджером нахожу дир. сайта (можно найти через ISP сайт - файлы конфигурации), копирую для запуска Композера.

Получается команда типа такого (у вашего хостинга путь может быть другой):
sudo composer create-project drupal/recommended-project /var/www/www-root/data/www/mysite.ru

1. Композер ругается на запуск от имени администратора, но без sudo установка не происходит. Пишет что-то типа, что не может создать какую-то директорию...

На всякий случай я делаю другого юзера (по ssh попадаете в консоль Linux как root) и даю ему права администратора. Root может больше безобразий натворить...

2. Композер засовывает Друпал в поддир. сайта web, а ISP при создании сайта устанавливает root dir по имени сайта, без web, поэтому, при попытке открыть сайт вы видите вместо Друпала листинг директории mysite.ru.

Чтобы исправить эту проблему, нужно указать Апачу и Nginx где на самом деле находятся файлы Друпал. Композер не правит конфиг. файлы серверов.
Я открываю конфигурационные файлы ISP менеджером (Сайты - выбрать сайт - файлы конфигурации) и дописываю web во все позиции, где указывается корень сайта.

Для nginx:
set $root_path /var/www/www-root/data/www/mysite.ru/web; (два раза)

Для Apache:
DocumentRoot /var/www/www-root/data/www/mysite.ru/web
(три раза)

После чего все работает и можно провести установку Друпал.

После установки Друпал можно зайти в админку и посмотреть отчеты (может понадобиться запустить Cron).

Проблема 2. У меня в отчете была одна ошибка: Настройки доверенного хоста. Выключено. В settings.php не настроена переменная trusted_host_patterns.

Сделал все по рекомендациям, правил файл с помощью Bitvise SSH client, все равно ошибка осталась, хотя изменения в файле налицо. (это пока не победил)

Проблема 3. Предупреждение в отчете Друпал: Кеширование PHP APCu. Включено (32 МБ). В зависимости от конфигурации, Drupal может работать с лимитом APCu 32 МБ. Однако рекомендуется устанавливать APCu (базовый) лимит 32 MB или выше, особенно если Ваш сайт использует дополнительные модули.

Иду в ISP , Сайты - выбрать нужный - в верхнем меню PHP - находим поиском APC - видим список переменных, увидел только одну с 32 мб. - apc.shm_size.
Справа три точки: изменить, сделал 128 мб., оно сохранилось. Для активации нужно перезапустить Апач (тем же ISP).

В результате вижу в отчете: PHP Версия 8.2.3 Ограничение памяти 128M, а кэш APCu так и остался 32 МБ.

Пока все, буду дописывать по мере появления ответов.

Лучший ответ

Аватар пользователя karmike karmike 15 марта в 15:56

По проблеме 2: trusted_host_patterns.

Все элементарно, запись:
$settings['trusted_host_patterns'] = [
'^www\.mysite\.ru$',
];
^www нужно, чтобы сайт открывался и с www и без него
нужно не тупо раскомментировать, а вынести за пределы записи, которая начинается с /** и кончается */
(в данном случае, после
* @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings
*/
Интересно, что ошибка исчезает даже без перезапуска сайта и Cron

Комментарии

Аватар пользователя karmike karmike 15 марта в 15:56

По проблеме 2: trusted_host_patterns.

Все элементарно, запись:
$settings['trusted_host_patterns'] = [
'^www\.mysite\.ru$',
];
^www нужно, чтобы сайт открывался и с www и без него
нужно не тупо раскомментировать, а вынести за пределы записи, которая начинается с /** и кончается */
(в данном случае, после
* @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings
*/
Интересно, что ошибка исчезает даже без перезапуска сайта и Cron

Аватар пользователя karmike karmike 15 марта в 16:29

Прошу прощения, наврал. ^ - это знак начала строки. Чтобы сайт работал как mysite.ru и как www.mysite.ru, нужна такая запись:

$settings['trusted_host_patterns'] = [
'^www\.mysite\.ru$',
'^mysite\.ru$',
];
Да, помещенная после */ и до следующего /**

Аватар пользователя karmike karmike 16 марта в 14:27

По проблеме 3: Проблема с кешированием APCu

Предупреждение в отчете Друпал: Кеширование PHP APCu
Включено (32 МБ) В зависимости от конфигурации, Drupal может работать с лимитом APCu 32 МБ. Однако рекомендуется устанавливать APCu (базовый) лимит 32 MB или выше, особенно если Ваш сайт использует дополнительные модули.

Пробовал изменять apc.shm_size с помощью ISP manager, почему-то не работает. Нашел, как управлять APCu.

Файл конфигурации APCu находится тут: etc/php/8.2/mods-available/apcu.ini
У меня там всего две строки:
extension=apcu.so
apc.shm_size = "32M"

изменил на
extension=apcu.so
apc.shm_size = "128M"

Изменения появляются в отчете Друпал после рестарта php
(если вы не знаете, какой php активен, используйте php -v. узнать, где расположен его конфиг, можно командой # php -i |grep "php.ini", однако в этом конфиге про APCu ничего нет, хотя раньше, в PHP до 5.5, вроде, было, но это неточно)

# systemctl restart php8.2-fpm

и перезапуска сайта через ISP панель (выбрать сайт, выключить и снова включить).

Да, новый размер кэш PHP APCu (128 МБ) у меня появился в отчете на обоих сайтах (PHP у них общий), без перезапуска второго сайта.

Аватар пользователя karmike karmike 23 марта в 13:54

Установка модулей Media и Media Library (очень полезные для управления изображениями и видео) через Расширения.

Директории /sites/default установить права 777, после установки сделать обратно 775

Друпал ругался, что
Каталог public://media-icons/generic не существует
Почему-то не мог создать такой каталог даже через SSH (обычно public - это sites/default/files). Но модули работают и без него.

После установки в Отчетах вижу:

Предупреждение
The Drupal media toolbar item requires the Встроенный медиа filter to be enabled.

Без фильтра при использовании ссылок на внешние медиа-файлы злобные хакеры могут вам набедокурить.
Очень старательно эта проблема описана здесь:
https://www.webwash.net/manage-media-using-entity-browser-and-entity-emb...
Но на Друпал 10 оно не работает (написано еще для 8.5), начиная с
4. Enter in a name for the asset in the Name field and select an image using the Image, then click on Save (нет там поля Name)

И далее везде, в том числе, Configure “Allowed HTML tags” list - в Друпал 10 не соответствует описанию. Многое уже встроено, например, здесь можно включить Remote video:

http://smart-karelia.ru/admin/structure/media/add

Однако, где включить этот "Встроенный медиа filter" (embedded media) не нашел.

Аватар пользователя filinkov.ru filinkov.ru 24 марта в 18:59

По проблеме 3: Проблема с кешированием APCu - забей это баг в ядре никак не могут исправить это уже несколько лет ))) Это просто уведомление

Аватар пользователя filinkov.ru filinkov.ru 24 марта в 19:04
1

Я могу тебе одно посоветовать. Сам я очень много сделал развертываний на ISP manager. Выполняй все операции от пользователя не root, создавай отедельно учетку под каждую группу проектов и из под нее копируй файлы на сервер и выполняй скрипты и тогда не нужно будет заморачиваться за настройку прав, Drupal все сделает за тебя.

PHP 8.2 - использовать пока крайне не рекомендую даже для Drupal 10. Не пришло еще время, слишком много сторонних модулей, которые не совместимы будут. PHP 8.1 только его.