Nginx — это бесплатный веб-сервер с открытым исходным кодом, один из самых мощных в мире. Он в основном используется для веб-сайтов с высокой нагрузкой и интенсивным трафиком. Nginx известен своей стабильностью, простотой настройки и низким потреблением ресурсов. Nginx можно использовать в качестве веб-сервера и обратного прокси.
FPM (FastCGI Process Manager) — это альтернативная реализация PHP на основе FastCGI, используемая для веб-сайтов с высоким трафиком. Обычно она используется вместе с веб-сервером для обслуживания страниц PHP. PHP-FPM потребляет меньше памяти и ресурсов процессора по сравнению с любыми другими методами запуска PHP. PHP-FPM работает быстрее, чем традиционные методы на основе CGI, в многопользовательских средах PHP. PHP-FPM также позволяет запускать несколько версий PHP одновременно.
Начало работы
По умолчанию на сервере CentOS 8 включен SELinux. Поэтому сначала вам нужно его отключить.
Это можно сделать, отредактировав файл /etc/selinux/config:
nano /etc/selinux/config
Внесите следующие изменения:
SELINUX=disabled
Сохраните и закройте файл. Затем перезапустите сервер, чтобы изменения вступили в силу.
Установка веб-сервера Nginx
Сначала установите веб-сервер Nginx с помощью следующей команды:
yum install nginx -y
После установки Nginx запустите службу Nginx и включите ее запуск при загрузке с помощью следующей команды:
systemctl start nginx systemctl enable nginx
После завершения вы можете перейти к следующему шагу.
Установите PHP и PHP-FPM
Затем установите PHP и PHP-FPM, выполнив следующую команду:
yum install php php-cli php-common php-fpm -y
После установки всех пакетов запустите службу PHP-FPM и включите ее запуск после перезагрузки системы:
systemctl start php-fpm systemctl enable php-fpm
Вы также можете проверить состояние службы PHP-FPM с помощью следующей команды:
systemctl status php-fpm
Вы должны получить следующий вывод:
? php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2019-10-17 05:39:11 EDT; 4min 40s ago
Main PID: 1475 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 6 (limit: 5060)
Memory: 28.5M
CGroup: /system.slice/php-fpm.service
??1475 php-fpm: master process (/etc/php-fpm.conf)
??1478 php-fpm: pool www
??1479 php-fpm: pool www
??1480 php-fpm: pool www
??1481 php-fpm: pool www
??1482 php-fpm: pool www
Oct 17 05:39:10 centos8 systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 17 05:39:11 centos8 systemd[1]: Started The PHP FastCGI Process Manager.
Создание индексной страницы для Nginx
Далее вам нужно будет создать пример info.php для проверки, использует ли Nginx PHP-FPM или нет.
Вы можете создать файл info.php в корневом каталоге Nginx, как показано ниже:
nano /var/www/html/info.php
Добавьте следующие строки:
Сохраните и закройте файл, когда закончите.
Затем измените владельца файла info.php на nginx:
chown -R nginx: /var/www/html/info.php/
Настройте Nginx с PHP-FPM
Далее вам нужно будет создать файл конфигурации виртуального хоста Nginx и включить поддержку PHP-FPM.
Вы можете создать его с помощью следующей команды:
nano /etc/nginx/conf.d/example.conf
Добавьте следующие строки:
server {
listen 80;
server_name example.com;
root /var/www/html/;
index info.php;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
Сохраните и закройте файл. Затем проверьте Nginx на наличие синтаксических ошибок с помощью следующей команды:
nginx -t
Затем включите файл виртуального хоста Nginx и перезапустите службу Nginx, чтобы применить конфигурацию:
systemctl restart nginx
Проверка Nginx с поддержкой PHP-FPM
Теперь откройте веб-браузер и введите URL http://example.com. Вы будете перенаправлены на следующую страницу:


На этой странице вы должны увидеть, что PHP-FPM загружен с веб-сервером Nginx.