Оптимизация FASTPANEL под Битрикс
Приветствую тебя дорогой читатель! Этот пост будет полезен тем, кто собирается размещать на хостинге с панелью управления FASTPANEL сайт Битрикс. В статье я собрал необходимые настройки для корректной работы Битрикса на данной ПУ.
Содержание
- Выбор версии PHP
- Если не работает ЧПУ
- Настройка параметров PHP
- MySQL value innodb_strict_mode=0
- Настройка прав MySQL SESSION_VARIABLES_ADMIN
- Настройка CRON
Выбор версии PHP
Опытным путем выведено, что наиболее выгодно использовать версию PHP 8.1 в режиме FastCGI. В отличиии от версий 8.2 и 8.3 в версии 8.1 сайт работает стабильно и расходует меньше ресурсов сервера.
Исправить не работающий ЧПУ Битрикса на FASTPANEL
Путей решения может быть как минимум два: выбрать интерпритатор PHP FastCGI, или если нужно запустить сайн на PHP-FPM, то нужно добавить строку в конфиг PHP для нужного сайата.
Выбор интерпритатора PHP FastCGI
Для этого открываем страницу сайта в панели управления и выбираем пунт “Настройки”

В меню слева на открывшейся странице выбираем пункт “Обработчик PHP” и выбираем нужный нам обрабтчик и версию PHP.

После этого жмем “Сохранить” и пользуемся сайтом.
Настройка PHP-FPM FASTPANEL для корректной работы ЧПУ Битрикса
По дефолту созданные в FASTPANEL сайты на CMS Bitrix не работают должным образом. Один из проблемных моментов, что в режиме PHP-FPM не работает обработка URL модулем urlrewrite. Путей исправления данной проблемы два: выбрать режим php FastCGI, или добавить в конфиг NGINX дополнительную строку настроек.
if (!-e $request_filename) {
rewrite ^(.*)$ /bitrix/urlrewrite.php last;
}
Этот фрагмент кода нужно вставить педе первым правилом location. Ниже на снимках экрана показано как найти эту настройку и куда вставить код.


Еще один важный момент, если нужно добавить HTTP авторизацию на хосте, то сначала делаем настройку доступа, а потом в конце правим конфиг, иначе HTTP авторизация может срабатывать не всегда.
Настройка параметров PHP
Для этого в разделе упраления сайтом ПУ открываем настройки PHP

Далее в строке поиска поочередно ищем нужные параметры и выставляем их значения как показано на снимках экрана ниже.


Список необходимых параметров и их значний:
opcache.revalidate_freq = 0
short_open_tag = on
После выставления всех параметров не забываем нажать кнопку “Сохранить” в верхнем правом углу списка, иначе настройки не будут применены.

Данная настройка применяется к конкретной версии PHP, поэтому для каждой версии эту настройку нужно будет повторно установить.
Настройка MySQL FASTPANEL под Битрикс
Переменная innodb_strict_mode=0
Для нормальной работы битрикса требуется задать значение параметра innodb_strict_mode=0 для этого необходимо открыть “Меню” – “Управление” – “Базы данных”

Дальше в правой верхней части окна рабочей области нажать кнопку “Серверы баз данных”

Далее на списке серверов выбираем сервер localhost и в правой чатси строки в меню выбираем пунт “Настроить переменные”

Далее вставляем в поле поиска строку innodb_strict_mode и дважды кликаем на найденной настроке в списке ниже.

В открыввшемся окне устанавливаем значение 0 или FALSE и жмем кнопку “Сохранить”.

После этого не забываем в писке сверху нажать кнопку “Сохранить”, чтобы изменение настроек применилилсь и сервер MySQL перезапустился.

Права пользователя MySQL
Еще часто после разворачивания копии Битрикс сайта на FASTPANEL может вылезать ошибка.
[Bitrix\Main\DB\SqlQueryException]
Mysql query error: (1227) Access denied; you need (at least one of) the SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation (400)
Для исправления этой ошибки необходимо открыть phpMyAdmin от пользователя ROOT и выполнить SQL запрос
GRANT SESSION_VARIABLES_ADMIN ON *.* TO 'username'@'localhost';
В этом запросе необходимо вместо username вписать имя пользователя БД, от имени которого осуществляется подключение (прописано в файлах dbconn.php и .settings.php).
Где взять пароль root для MySQL?
В FASTPANEL пароль root пользователя хранится в файле /root/.my.cnf и для его просмотра необходимо подключиться к серверу по SSH или открыть терминал в GUI вашего сервера и выполнить команду
sudo cat /root/.my.cnf
В ответ на экране появится содержимое этого файла с указанием пароля root, его можно скопировать и сохрнатить в надежном месте, т.к. эта информация может нам еще потребоваться в будущем.
[client]
user = root
password = ###############
Исправление ошибки MySQL 8 для старых версий битрикса
Могут возникать ситуации, когда устаревшие движки битрикса не заводятся на MySQL 8 версии и выдают ошибку вида:
Server sent charset unknown to the client. Please, report to the developers (400)
В этом случае нужно в файле /etc/mysql/conf.d/mysql.cnf добавить следующий фрагмент кода
[mysql]
default-character-set = utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin = mysql_native_password
После сохранения файла необходимо перезапустить службу mysql
service mysql restart
Все, ошибка должна исправиться.
Настройка CRON
Для того, чтобы задания по крону выполнялись с нужной версией PHP нужно исползовать строку вида:
php -f /var/www/fastuser/data/www/your_site_folder/bitrix/modules/main/tools/cron_events.php
Причем нужно убедиться, что путь к корню сайта /var/www/fastuser/data/www/your_site_folder соответсвует вашим настройкам.
Периодичность запуска настраиваем 1 раз в минуту.
И если нужно задать запуск с версией PHP отличной от версии по умолчанию, нужно указать ее в задании:
/opt/php81/bin/php -f /var/www/fastuser/data/www/your_site_folder/bitrix/modules/main/tools/cron_events.php
в строке /opt/php81/bin/php мы указываем версию нужную нам версию PHP. Так php81 означает, что скрипт будет выполняться на PHP версии 8.1
Проверить правильность строки можно путем вызова этой команды в терминале, подключившись к вашему серверу по SSH. Если все настроено правильно, то сервер отработает задачу и не выведет никаких сообщений, и если в случае появления ошибок они будут выведены на экран в этом же окне терминала. Одна из наиболее распространненных ошибок “PHP Parse error: Unclosed ‘{‘ on line …”, которая вылезать, если не установлена опция PHP short_open_tag = on (как ее установить написано выше в этой же статье).
Подскажите что это значит, и что нужно подправить? – “Еще один важный момент, если нужно добавить HTTP авторизацию на хосте, то сначала делаем настройку доступа, а потом в конце правим конфиг, иначе HTTP авторизация может срабатывать не всегда.”
Тут речь идет, что если нужно заставить сайт на битриксе работать на PHP в режиме PHP-FPM, то придется добавлять в конфиг ручные правки, и в этом случае может возникать ситуация когда после этой процедуры вдруг захотелось добавить HTTP авторизацию на сайт, чтобы закрыть его от посещения, то ручная правка в конфиге слетает. Поэтому нужно выполнять действия в последовательности:
1. активируем HTTP авторизацию
2. вносим ручные корректировки в пользовательский конфиг
И соответственно, если нужно отменить авторизациюя, порядок действий такой же.