Всем привет!
По своей деятельности сталкиваюсь с множеством сайтов и хостингов и всегда удивляет, как неэффективно используются ресурсы сервера, это касается как старых версий PHP, работы сайта на медленных связках вроде
Nginx+Apache, в отсутствии грамотной настройки MySQL, Nginx и т.д. Сегодня будет кратная информация о том, как увеличить скорость сайта просто сменив режим его работы на
Nginx+PHP-FPM, т.е. без тяжеловесного Apache. Актуально будет прежде всего для владельцев VPS и серверов, т.к. у них есть доступ ко всем настройкам, для владельцев виртуального хостинга рекомендовал бы трясти поддержку или сменить хостинг.
Есть и более эффективные связки, но они используются реже и мало кто из хостеров их поддерживает, поэтому остановимся на более универсальной.
Плюсы связки Nginx+PHP-FPM по сравнению с Nginx+Apache:- Выше скорость работы
- Меньше потребление памяти
- Меньше потребление ресурсов CPU
- Выше отказоустойчивость
Минусы Nginx+PHP-FPM:- Не обрабатывается файл .htaccess (т.к. Apache не используется)
Но данный минус весьма условный, т.к. любой редирект и прочие настройки можно сделать через Nginx.
Основная часть конфига для связки Nginx+PHP-FPM (поддерживается Joomla 2 и 3):
location / {
try_files $uri $uri/ /index.php?$args;
}
#Запрещаем выполнение скриптов в каталогах
location ~* /(images|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
}
#Запрещаем доступ к файлам .*
location ~ /\. {
deny all;
}
#Кешируем максимально возможные статические файлы, в т.в. шрифты
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|woff|woff2|mp4|ttf|ico|tgz|doc|xls|wav|bmp|rtf|cur|txt|json)$ {
expires max;
log_not_found off;
access_log off;
break;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/www/php-fpm/user.sock;
fastcgi_intercept_errors on;
include fastcgi_params;
}
Также желательно использовать PHP 7.x, Joomla 3 уже давно поддерживает данную версию.