Повышение производительности веб-сайта с помощью Nginx и PHP-FPM: подробное руководство

В сегодняшней записи блога мы рассмотрим различные методы повышения производительности веб-сайта с помощью Nginx и PHP-FPM. Nginx — это высокопроизводительный веб-сервер, а PHP-FPM (FastCGI Process Manager) — реализация PHP FastCGI. В сочетании они предлагают мощное решение для оптимизации серверных сценариев и ускорения загрузки веб-страниц. Мы углубимся в несколько методов, попутно предоставляя примеры кода.

  1. Установка Nginx и PHP-FPM:

Для начала нам необходимо установить на ваш сервер Nginx и PHP-FPM. Вот команды установки для Ubuntu:

sudo apt update
sudo apt install nginx php-fpm
  1. Настройка Nginx и PHP-FPM:

Далее мы настроим Nginx и PHP-FPM для совместной работы. Откройте файл конфигурации Nginx (nginx.conf) и добавьте следующие строки:

location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
  1. Включение кэширования:

Кэширование играет решающую роль в производительности сайта. Nginx позволяет нам кэшировать динамический контент PHP, снижая нагрузку на PHP-FPM и ускоряя доставку страниц. Добавьте следующий код в нужный блок locationв файле конфигурации Nginx (nginx.conf):

location ~ \.php$ {
    ...
    fastcgi_cache my_cache;
    fastcgi_cache_valid 200 1m;
    fastcgi_cache_methods GET HEAD;
    fastcgi_cache_bypass $no_cache;
    fastcgi_no_cache $no_cache;
}
  1. Балансировка нагрузки с помощью PHP-FPM:

Балансировка нагрузки распределяет входящий трафик между несколькими процессами или серверами PHP-FPM, повышая производительность и надежность веб-сайта. Вот пример настройки Nginx для балансировки нагрузки:

http {
    upstream php_fpm {
        server backend1.example.com;
        server backend2.example.com;
    }
    server {
        ...
        location ~ \.php$ {
            fastcgi_pass php_fpm;
            ...
        }
    }
}
  1. Реализация кэширования кода операции:

Кэширование кода операции сохраняет предварительно скомпилированные PHP-скрипты в памяти, что снижает необходимость в повторяющемся анализе и компиляции скриптов. Одним из популярных кэшей кодов операций для PHP является OPcache. Установите OPcache и добавьте следующие строки в файл конфигурации PHP (php.ini):

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
  1. Точная настройка конфигурации пула PHP-FPM:

PHP-FPM предоставляет несколько вариантов оптимизации конфигурации пула. Изменение этих параметров может значительно улучшить производительность. Откройте файл конфигурации PHP-FPM (php-fpm.conf) и внесите необходимые изменения в зависимости от ресурсов и рабочей нагрузки вашего сервера.

  1. Сжатие Gzip:

Включение сжатия Gzip минимизирует размер HTTP-ответов, что приводит к более быстрой передаче данных. Добавьте следующие строки в файл конфигурации Nginx (nginx.conf):

gzip on;
gzip_types text/html text/css application/javascript image/svg+xml;

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