- Устанавливаем nginx
- Устанавливаем php-fpm (в примере 8.2 - default для debian 12)
Конфиг для nginx
- Удаляем симлинк на default конфиг и создаем конфиг mysite для nginx:
rm /etc/nginx/sites-enabled/default
nano /etc/nginx/sites-available/mysite
server {
listen 80 default_server;
root /var/www/html/mysite;
index index.php index.html;
server_name mysite;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # файл создается после старта nginx
fastcgi_index index.php;
include fastcgi.conf;
}
}
- Делаем symlink - активируем конфиг для mysite:
ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/mysite
Конфиг для php-fpm
- Бэкапим дефолтный конфиг для php-fpm:
mv /etc/php/8.2/fpm/pool.d/www.conf /etc/php/8.2/fpm/pool.d/www.conf.bak
- Делаем конфиг для php-fpm:
nano /etc/php/8.2/fpm/pool.d/mysite.conf
[mysite]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
- Создаем /var/www/html/mysite (тут будет лежать index.php сайта)
mkdir -p /var/www/html/mysite
- Релоадим сервисы
service nginx reload
service php8.2-fpm reload
Объяснение конфигурации /etc/nginx/sites-available/mysite
Конфигурационный файл nginx определяет, как сервер будет обрабатывать запросы к определенным типам файлов или URL-адресам. В данном случае, этот конфигурационный блок (location) отвечает за обработку файлов PHP.
location ~ \.php$ {
Этот блок начинается с определения местоположения (location), которое с помощью регулярного выражения (~) указывает на обработку запросов к файлам с расширением .php.
~ означает, что будет использоваться регулярное выражение для сопоставления URL.
\ используется для экранирования точки (.), потому что в регулярных выражениях точка обозначает любой символ, и . обозначает именно символ точки.
fastcgi_pass unix:/var/run/php8.2-fpm.sock;
Этот параметр указывает, куда должны отправляться обработанные запросы на выполнение PHP-скриптов с помощью FastCGI.
unix:/var/run/php8.2-fpm.sock - это путь к сокету PHP-FPM, через который nginx будет передавать запросы на обработку PHP скриптам.
fastcgi_index index.php;
Определяет индексный файл для FastCGI. Если запрос не содержит имени файла, сервер будет искать файл с именем index.php и передавать его на обработку PHP.
include fastcgi.conf;
Директива include используется для включения других конфигурационных файлов в текущий.
fastcgi.conf вероятно содержит общие настройки для FastCGI обработки и используется для установки параметров FastCGI, таких как переменные окружения, параметры тайм-аута и т. д.
Этот конфигурационный блок позволяет nginx обрабатывать запросы к файлам с расширением .php, отправлять их на PHP-FPM для выполнения и возвращать результат обратно веб-серверу для передачи клиенту.