Переключаем bitrixvm на php-fpm

2k
Алексей,
Переключаем bitrixvm на php-fpm
Переключаем bitrixvm на php-fpm

Простой способ переключиться на php-fpm на стандартном битрикс окружении

Простой способ переключиться на php-fpm в стандартном битрикс окружении.

Для начала устанавливаем сам php-fpm и запускаем его

yum install php-fpm
systemctl start php-fpm

Далее добавляем конфиг nginx: /etc/nginx/bx/site_settings/default/z_bx_custom.conf, где default - ваш сайт.

location / {
	location ~ [^/]\.ph(p\d*|tml)$ {
		try_files /does_not_exists @php;
	}
}
if (!-e $request_filename) {
  rewrite  ^(.*)$  /bitrix/urlrewrite.php last;
}
location @php {
	fastcgi_index index.php;
	fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
	fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
	try_files $uri =404;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
}
location ~ /\.git {
  deny all;
}

Т.к. нельзя переопределить location / {}, его придётся убрать из /etc/nginx/bx/conf/bitrix.conf (в том числе location ~ /). Будьте внимательны, эта правка слетит при обновлении окружения.

Перезапускаем nginx:

systemctl restart nginx

Готово. Чтобы узнать в каком режиме у вас работает php, можно выполнить код:

echo php_sapi_name(); // должно быть fpm-fcgi

Теперь можно отключить apache, он больше не нужен.
У меня всё заработало именно в таком варианте. Но, если что, стоит проверить настройки php-fpm: /etc/php-fpm.d/www.conf, должны быть такие параметры (помимо остальных):

listen = /var/run/php-fpm/php-fpm.sock
user = bitrix
group = bitrix
listen.owner = bitrix
listen.group = bitrix
listen.mode = 0660

И еще, я не спец по nginx, конфиг подсмотрел с разных источников, если есть что добавить, пишите, буду рад обсудить.

Если после настройки у вас не работает авторизация, проверьте где хранятся сессии, если в файлах, то с этим могут быть проблемы. Решить можно изменением места хранения сессий на БД или memcache, redis.

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 11 февраля 2023 | Обновлено 27 июня 2023
php, php-fpm, web-сервер, nginx
Поделиться
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Гайк
10 янв 2024
А что с обработкой .htaccess? Переписывать все правила под nginx?
Алексей
10 янв 2024
Гайк, да, переписывать. Редиректы можно на php сделать.
Гайк
10 янв 2024
Там по ядру битрикса разбросаны .htaccess со строкой "Deny from All". Это тоже надо обязательно учитывать при переходе.
Антон
22 мая 2023
Добрый! Поставил все как у вас написано не работает авторизация админки
Алексей
31 мая 2023
Антон, добрый день. Прошу прощения, что не ответил сразу, сломалась почта и я не получил уведомление. Честно говоря, с таким не сталкивался. Если проблема еще актуальна, напишите, попробуем разобраться.
Алексей
27 июн 2023
Антон, столкнулся с подобной проблемой. Решилось изменением места хранения сессий. Видимо есть проблемы с доступом к сессиям, хранящимся в файлах.
Простой способ переключиться на php-fpm на стандартном битрикс окружении