Найти в Дзене
Битрикс и не только

Debian 9: полная настройка веб-сервера. Часть 2: Настройка nginx, php-fpm, создание виртуальных хостов

Часть 1: Установка NGINX, PHP-FPM, Maria DB

Часть 2: Настройка nginx, php-fpm, создание виртуальных хостов

Часть 3: Установка phpMyadmin, webmin. Настройка ssl.

Продолжим настраивать наш сервер наш. Отредактируем основной конфигурационный файл /etc/nginx/nginx.conf

user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

Далее немного отвлечемся от nginx и переключимся на php-fpm. Изменим /etc/php/7.4/fpm/pool.d/www.conf

установим в параметры user, group, listen.owner, listen.group значение www-data

Создадим каталоги:

/etc/nginx/sites-available
/etc/nginx/sites-enabled

Далее создадим наш виртуальный хост example.com

/etc/nginx/sites-available/example.com.conf

и сделаем ссылку на этот конфиг а папке sites-enabled

ln -s /etc/nginx/sites-available/examle.com.conf /etc/nginx/sites-enabled/

Содержимое файла example.com.conf

server {
listen 80;
server_name example.com;
charset utf-8;
root /var/www/example.com/public;
index index.php;
access_log /var/log/nginx/example.com.log;
error_log /var/log/nginx/example.com.log;

location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
log_not_found off;
}
# removes trailing slashes (prevents SEO duplicate content issues)
if (!-d $request_filename)
{
rewrite ^/(.+)/$ /$1 permanent;
}
# enforce NO www
if ($host ~* ^www\.(.*))
{
set $host_without_www $1;
rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
}
# unless the request is for a valid file (image, js, css, etc.), send to bootstrap
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

Данный конфиг работает для Laravel 6.11

перезапускаем php и nginx

service php7.4-fpm restart
service nginx restart

Создадим каталог /var/www/example.com/public

и в нем создадим файлик index.php, в который добавим содержимое:

<?php
phpinfo();
?>

Не забудьте изменит владельца каталога /var/www/example.com

chown -R www-data:www-data /var/www/example.com/*

Если выводится страница phpinfo, значит все сделано правильно, в противном случае, рекомендую начать поиски с просмотра логов, указанных в конфиге виртуального хоста nginx