Настройка PHP-FPM в Nginx на Ubuntu 22.04
Nginx – это веб-сервер, используемый для обслуживания запросов для сайта. Он может использоваться в качестве обратного прокси, почтового прокси, HTTP -кэша или балансировщика нагрузки. Nginx – это бесплатное программное обеспечение с открытым исходным кодом, которое можно настроить с помощью PHP -модуля PHP -fpm и улучшить загрузку сайта и обработать огромное количество трафика.
Настройка PHP -fpm с Nginx на Ubuntu 22.04 – это очень простой и понятный процесс, который может занять до 15 минут. Давайте начнем!
Шаг 1. Обновление системы
Свежая установка Ubuntu 22.04 нуждается в обновлении системы, поэтому нам необходимо выполнить следующие команды.
sudo apt update -y && sudo apt upgrade -y
Шаг 2. Установите веб-сервер Nginx
Веб-сервер Nginx можно установить с помощью следующей команды:
После завершения установки запустите и включите службу Nginx:
sudo systemctl start nginx && sudo systemctl enable nginx
Шаг 3. Установка PHP — FPM
Следующим шагом будет установка расширения php-fpm вместе с другими расширениями php.
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https -y LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php sudo apt update
После установки зависимостей мы готовы к установке PHP — FPM .
sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-curl
После установки запустите и включите php8.1-fpm.service
sudo systemctl start php8.1-fpm.service && sudo systemctl enable php8.1-fpm.service
Чтобы проверить, все ли в порядке, выполните следующую команду:
sudo systemctl status php8.1-fpm.service
Вы должны получить следующее сообщение:
● php8.1-fpm.service - The PHP 8.1 FastCGI Process Manager Loaded: загружен (/lib/systemd/system/php8.1-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2022-09-10 15:31:29 CEST; 1min 52s ago Docs: man:php-fpm8.1(8) Main PID: 16869 (php-fpm8.1) Status: "Процессы активны: 0, простаивают: 2, Запросы: 0, медленный: 0, Трафик: 0req/sec" Задачи: 3 (limit: 4575) Memory: 8.9M CPU: 482ms CGroup: /system.slice/php8.1-fpm.service
Шаг 4. Настройка PHP — FPM с Nginx
Мы должны создать файл виртуального хоста нашего доменного имени. Зайдите в каталог конфигурации Nginx и создайте файл.
cd /etc/nginx/conf.d/ && sudo nano yourdomain.com.conf
Вставьте следующие строчки кода.
Проверьте синтаксис конфигурации Nginx, чтобы убедиться, что он в порядке.
Вы должны получить следующий результат:
root@vps:/etc/nginx/conf.d# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите службу Nginx.
sudo systemctl restart nginx
Далее необходимо создать пользовательский пул в конфигурации PHP8.1- FPM . Расположение конфигураций пула – * /etc/php/8.1/fpm/pool.d* Конфигурация пула по умолчанию – www.conf, но мы не будем вносить изменения в этот файл, поскольку рекомендуется использовать отдельные файлы для каждой новой конфигурации и сайта.
Сначала нам нужно создать группу и пользователя, затем добавить пользователя в группу
groupadd php_fpm_group useradd -g php_fpm_group php_fpm_user
Следующее, нам нужно создать конфигурацию пула для сайта.
cd /etc/php/8.1/fpm/pool.d && touch yourdomain.conf
Откройте файл yourdomain.conf вашим любимым редактором и вставьте следующие строки кода:
[имя_пула] user = php_fpm_user group = php_fpm_group listen = /var/run/php/php8.1-fpm.sock listen.owner = www-data listen.group = www-data pm = dynamic pm.max_children = 30 pm.start_servers = 5 pm.process_idle_timeout = 20s
Поясним параметры в созданном выше файле:
Имя пула должно быть специфичным для каждой новой конфигурации пула. user и group должны быть созданными пользователем и группой для нашего сайта, а listen.owner и listen.group – пользователем и группой, под которыми работает Nginx. listen – это путь к sock-файлу PHP8.1.
- pm.max_children предназначен для установки максимального количества потомков, которые могут быть запущены одновременно.
- pm.start_servers – количество дочерних серверов, создаваемых при запуске.
- pm.process_idle_timeout используется только в том случае, если pm установлен в значение dynamic и представляет собой число желаемых максимальных незанятых серверных процессов. Значение pm=dynamic означает, что количество дочерних процессов устанавливается динамически на основе следующих директив.
Помните, что эта конфигурация может быть другой в зависимости от ресурсов вашего сервера и потребностей сайта.
Последним шагом будет создание файла phpinfo.php в корневой директории вашего сайта.
cd /var/www/html/ && sudo nano phpinfo.php
Открыв файл, вставьте следующие строки кода:
Сохраните файл, закройте его и откройте следующий URL : http://yourdomain.com/phpinfo.php
В Environment и PHP Variables вы можете заметить, что USER и HOME установлены в php_fpm_user и /home/php_fpm_user, соответственно. Это является доказательством того, что PHP — FPM успешно сконфигурирован с Nginx.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
PHP 7 PHP-FPM Configuration File Location?
In this article we will locate a few different config files that relate to your PHP-FPM install. FPM uses php.ini syntax for its configuration files php-fpm.conf and pool configuration file www.conf .
php.ini
If you are looking for the php.ini file, please see article: Where is my PHP php.ini Configuration File Located?
php-fpm.conf
If you have the locate command, you can simply search for the file:
Alternatively, confirm which version of PHP you are using by listing the PHP directory.
Above we are on version 7.2, therefore, php-fpm.conf should be in /etc/php/7.2/fpm/php-fpm.conf .
To edit the php-fpm.conf PHP-FPM config file with nano :
www.conf
php-fpm.conf isn’t all of the php-fpm configuration. For serving web requests, php-fpm creates a new pool of processes, which have a separate configuration file www.conf .
If you have the locate command, you can simply search for the file:
Alternatively, confirm which version of PHP you are using by listing the PHP directory.
Above we are on version 7.2, therefore, the www.conf file should be in /etc/php/7.2/fpm/pool.d/www.conf .
Further Resources
Let me know if this helped. Follow me on Twitter, Facebook and YouTube, or 🍊 buy me a smoothie.
p.s. I increased my AdSense revenue by 200% using AI 🤖. Read my Ezoic review to find out how.
2 replies
Leave a reply Cancel reply
Whats the difference between pool.d and conf.d?
Configuring PHP-FPM with Apache is quite difficult and time taking. I tried to do it manually on my local, but since I don’t have server side knowledge I got stuck.