Nginx — это веб-сервер, используемый для обслуживания веб-запросов на нашем веб-сайте. Его можно использовать в качестве обратного прокси-сервера, почтового прокси-сервера, кэша HTTP или балансировщика нагрузки. Nginx — это бесплатное программное обеспечение с открытым исходным кодом, которое можно настроить с помощью PHP-модуля PHP-fpm и мгновенно улучшить загрузку веб-сайта и обработать огромный объем трафика.
Настройка PHP-fpm с помощью Nginx в Ubuntu 22.04 — очень простой и понятный процесс, который может занять до 15 минут. Давайте начнем!
Предпосылки
- Сервер с Ubuntu 22.04 в качестве ОС
- Права пользователя: пользователь root или обычный пользователь с привилегиями sudo
Шаг 1. Обновите систему
Свежая установка Ubuntu 22.04 требует обновления пакетов до последних доступных версий.
sudo apt-get update -y && sudo apt-get upgrade -y
Шаг 2. Установите веб-сервер Nginx
Веб-сервер Nginx можно установить с помощью следующей команды:
sudo apt install nginx -y
После завершения установки запустите и включите службу Nginx:
sudo systemctl start nginx && sudo systemctl enable nginx
Шаг 3. Установите PHP-FPM
Далее необходимо установить расширение php-fpm вместе с другими расширениями php.
sudo apt install software-properties-common
sudo 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
Вот и все, а теперь давайте отредактируем файл php.ini.
В php-fpm этот файл находится в /etc/php/8.1/fpm/php.ini. Затем введите следующее, чтобы отредактировать его:
sudo nano /etc/php/8.1/fpm/php.ini
Измените следующее:
...
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 и создайте файл.
cd /etc/nginx/conf.d/ && sudo nano yourdomain.com.conf
Вставьте следующие строки кода.
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, чтобы убедиться, что он в порядке.
nginx -t
Вы должны получить следующий вывод:
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, но мы не будем вносить изменения в этот файл, так как рекомендуется использовать отдельные файлы для каждой новой конфигурации и интернет сайт.
Сначала нам нужно создать группу и пользователя, затем добавить пользователя в группу
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
Далее нам нужно создать конфигурацию пула для веб-сайта.
cd /etc/php/8.1/fpm/pool.d && touch yourdomain.conf
Откройте файл yourdomain.conf в своем любимом редакторе и вставьте следующие строки кода:
[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 в корневом каталоге вашего веб-сайта.
cd /var/www/html/ && sudo nano phpinfo.php
Открыв файл, вставьте следующие строки кода:
<? 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, поделитесь им с друзьями в социальных сетях. Спасибо.