Nginx — это веб-сервер, используемый для обслуживания веб-запросов на нашем веб-сайте. Его можно использовать в качестве обратного прокси-сервера, почтового прокси-сервера, кэша HTTP или балансировщика нагрузки. Nginx — это бесплатное программное обеспечение с открытым исходным кодом, которое можно настроить с помощью PHP-модуля PHP-fpm и мгновенно улучшить загрузку веб-сайта и обработать огромный объем трафика.

Настройка PHP-fpm с помощью Nginx в Ubuntu 22.04 — очень простой и понятный процесс, который может занять до 15 минут. Давайте начнем!

Предпосылки

  • Сервер с Ubuntu 22.04 в качестве ОС
  • Права пользователя: пользователь root или обычный пользователь с привилегиями sudo

Шаг 1. Обновите систему

Свежая установка Ubuntu 22.04 требует обновления пакетов до последних доступных версий.

1
sudo apt-get update -y && sudo apt-get upgrade -y

Шаг 2. Установите веб-сервер Nginx

Веб-сервер Nginx можно установить с помощью следующей команды:

1
sudo apt install nginx -y

После завершения установки запустите и включите службу Nginx:

1
sudo systemctl start nginx && sudo systemctl enable nginx

Шаг 3. Установите PHP-FPM

Далее необходимо установить расширение php-fpm вместе с другими расширениями php.

1
2
3
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

После установки зависимостей мы готовы установить PHP-FPM.

1
sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-curl

После установки запустите и включите php8.1-fpm.service.

1
sudo systemctl start php8.1-fpm.service && sudo systemctl enable php8.1-fpm.service

Вот и все, а теперь давайте отредактируем файл php.ini.

В php-fpm этот файл находится в /etc/php/8.1/fpm/php.ini. Затем введите следующее, чтобы отредактировать его:

1
sudo nano /etc/php/8.1/fpm/php.ini

Измените следующее:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
...
file_uploads = On
...
allow_url_fopen = On
...
memory_limit = 256M
...
upload_max_filesize = 100M
...
max_execution_time = 360
...
date.timezone = America/Sao_Paulo
... 

И сохраните файл.

Шаг 4. Настройте PHP-FPM с Nginx

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

Нам нужно создать файл виртуального хоста, содержащий наше доменное имя. Перейдите в каталог конфигурации Nginx и создайте файл.

1
cd /etc/nginx/conf.d/ && sudo nano yourdomain.com.conf

Вставьте следующие строки кода.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
server {
            listen       80;
         server_name  yourdomain.com;
         root         /var/www/html/;

         access_log /var/log/nginx/yourdomain.com-access.log;
         error_log  /var/log/nginx/yourdomain.com-error.log error;
         index index.html index.htm index.php;

         location / {
                      try_files $uri $uri/ /index.php$is_args$args;
         }

         location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
    }
        }
}

Проверьте синтаксис конфигурации Nginx, чтобы убедиться, что он в порядке.

1
nginx -t

Вы должны получить следующий вывод:

1
2
3
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.

1
sudo systemctl restart nginx

Далее необходимо создать собственный пул в конфигурации PHP8.1-FPM. Расположение конфигурации пула: /etc/php/8.1/fpm/pool.d Конфигурация пула по умолчанию — www.conf, но мы не будем вносить изменения в этот файл, так как рекомендуется использовать отдельные файлы для каждой новой конфигурации и интернет сайт.

Сначала нам нужно создать группу и пользователя, затем добавить пользователя в группу

1
2
3
4
5
6
7
sudo groupadd php_fpm_group

sudo useradd php_fpm_user -d /var/www/html/ -s /sbin/nologin

sudo useradd -g php_fpm_group php_fpm_user

sudo passwd php_fpm_user

Далее нам нужно создать конфигурацию пула для веб-сайта.

1
cd /etc/php/8.1/fpm/pool.d && touch yourdomain.conf

Откройте файл yourdomain.conf в своем любимом редакторе и вставьте следующие строки кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[pool_name]
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

Поясним параметры в созданном выше файле:

Имя пула должно быть специфичным для каждой новой конфигурации пула. Пользователь и группа должны быть созданными пользователем и группой для нашего веб-сайта, а listen.owner и listen.group — это пользователь и группа, в которой работает Nginx. Listen — это путь sock PHP8.1.

Параметр pm.max_children предназначен для установки максимального количества детей, которые могут быть живы одновременно. pm.start_servers — это количество дочерних элементов, созданных при запуске. pm.process_idle_timeout используется только в том случае, если pm настроен на динамическое и является желаемым максимальным числом простаивающих серверных процессов. pm=dynamic означает, что количество дочерних процессов устанавливается динамически на основе следующих директив.

Помните, что эта конфигурация может отличаться в зависимости от ресурсов вашего сервера и потребностей веб-сайта.

Последнее, что нужно сделать, это создать файл phpinfo.php в корневом каталоге вашего веб-сайта.

1
cd /var/www/html/ && sudo nano phpinfo.php

Открыв файл, вставьте следующие строки кода:

1
2
3
<? php
phpinfo();
?>

Сохраните файл, закройте его и перейдите по следующему URL-адресу: http://yourdomain.com/phpinfo.php.

В переменных среды и PHP вы можете заметить, что для USER и HOME установлены значения php_fpm_user и /home/php_fpm_user соответственно. Это доказательство того, что PHP-FPM успешно настроен с Nginx.

Вот и все. Вы успешно установили и настроили php-fpm на Ubuntu 22.04.

Если вам понравился этот пост о том, как установить PHP-FPM с помощью Nginx в Ubuntu 22.04, поделитесь им с друзьями в социальных сетях. Спасибо.