Переезд сайта на FastCGI (nginx + php-fpm)

Продолжаем серию статей по оптимизации сайтов. В этот раз речь пойдет об изменении работы PHP на FastCGI (nginx + php-fpm).

Данная статья посвящена оптимизации сайтов, а именно изменению работы PHP на FastCGI (nginx + php-fpm). Это необходимо, если Вы используете режим FastCGI (как модуль apache), CGI.

Помимо преимуществ в виде скорости работы, у данного метода работы PHP также есть и недостаток. Т.к. мы убираем из связки Apache, то перестанет работать файл .htaccess. Если у Вас есть
правила в данном файле, то необходимо будет сконвертировать их с помощью сервиса winginx.com/ru/htaccess и добавить в конфиг файл в пункте 4 данного мануала.

Если Вы используете режим LSAPI на нашем обычном виртуальном хостинге, то он также является достаточно производительным. Для использования FastCGI (nginx + php-fpm) необходимо заказать линейку мощных тарифов, подходящих для работы на любых CMS.

Внимание! Для перевода сайта на CMS WordPress, Joomla, OpenCart, Bitrix необходимы дополнительные действия, и сейчас мы их разберем.

Внимание! Данный мануал подходит для VPS серверов с панелью управления ispmanager Lite 5. Для изменения на тарифах мощного виртуального хостинга свяжитесь, пожалуйста, с отделом продаж.

Итак, приступим:

  1. Зайдите в панель управления хостингом под root пользователем (не обычным пользователем) в раздел www-домены. Далее Вам необходимо посмотреть, какому пользователю принадлежит сайт, который Вы хотите перевести на FastCGI, и на какой версии php он работает.
Запоминаем владельца и версию php

2) После этого, нам надо зайти во вкладку пользователи, выбрать пользователя, которому принадлежит сайт, и нажать на него 2 раза .

3) Выбираем пункт «Версия PHP (PHP-FPM)». В нем необходимо выставить такую же версию php, какая сейчас стоит у Вас на сайте. После выставления, нажимаем «Ok«.

Выставляем такую же версию, как у нас стояла на режиме apache

4) После этого возвращаемся во вкладку www-домены и меняем прежний режим работы на FastCGI (nginx + php-fpm) Сохраняем изменения.

Теперь мы можем попробовать зайти на сайт и проверить, все ли ссылки на сайте работают корректно, но, как правило, работает только главная страница, а все остальные отдают 404 ошибку.

Если у Вас похожая ситуация, то необходимо прописать дополнительный редирект.

5) Для этого в той же вкладке www-домены выбираем домен и нажимаем на кнопку «Конфиг».

Далее, в зависимости от Вашей CMS, выбираем один из вариантов:

a) Если у Вас WordPress, Joomla

Находим строку:

location / {

Под ней необходимо добавить наш редирект:

try_files $uri $uri/ /index.php?q=$uri&$args;

В конечном итоге, у нас получится такой блок:

б) Если у Вас Битрикс

Редирект необходимо будет прописать после блока location @php { , и выглядеть он будет по другому:

location ~* /\.ht {
deny all;
}

location ~ ^/(?!(\.well-known)) {
if (!-e $request_filename) {
rewrite ^(.*)$ /bitrix/urlrewrite.php last;
}
}

if (!-f $request_filename) {
rewrite ^(.*)/index.php$ $1/ redirect;
}

Должно получиться вот так:

в) Если у Вас Opencart, то редирект необходимо вставить в блок location / :

if (!-e $request_filename){
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}

ВАЖНО!!! Если у Вас на сайте используется SSL сертификат, то таких блоков у Вас будет два в разделе «конфиг». Необходимо прописать отдельно для http блока, и отдельно для https блока.

После того, как Вы прописали редирект, сохраняем конфиг и проверяем работу сайта.

Если по каким-то причинам Вам не удалось перейти на FastCGI (nginx + php-fpm), свяжитесь с нашей техподдержкой, и мы обязательно Вам поможем.

Что будем искать? Например,VPS-сервер

Мы в социальных сетях