Linux

Запуск сайтов от разных пользователей nginx + php-fpm

По умолчанию, все сайты запускаться от пользователя (www-data), указанного в настройках php-fpm.

Внимание: Использую версию PHP 7.2, для других версий пути могут отличаться. Чтобы запускать сайты от разных пользователей, необходимо:

1. Создать несколько пользователей. 2. Создать отдельные конфигурационные файлы и настроить php-fpm. 3. Создать отдельные конфигурационные файлы и настроить nginx. 4. Перезапустить сервисы и создать контент.

Пользователи

Создаем пользователя site с домашним каталогом, оболочкой /bin/bash и пароль.

useradd -g www-data -m -d /var/www/site/ -s /bin/bash site passwd site

Настройка php-fpm

Создать отдельные конфигурационные файлы в директории /etc/php/7.2/fpm/pool.d, убедившись при этом, что в файле /etc/php/7.2/fpm/php-fpm.conf указана строчка include=/etc/php/7.2/fpm/pool.d/*.conf Создать файл site.conf и пишем содержимое:

[site.ru]

pm = dynamic pm.start_servers = 1

pm.min_spare_servers = 1

pm.max_children = 5

pm.max_spare_servers = 5

listen = /run/php/php7.2-fpm-site.sock

listen.mode = 0660

listen.owner = site

listen.group = www-data

user = site

group = www-data

chdir = / php_admin_value[upload_tmp_dir] = /var/www/site/tmp

php_admin_value[session.save_path] = /var/www/site/tmp

Создать папку /var/www/site/tmp

Настройка nginx

Создать отдельные конфигурационные файлы в директории /etc/nginx/sites-available/ Создать файл site.conf и пишем содержимое:

upstream site.ru {server unix:/run/php/php7.2-fpm-site.sock;}

server {

listen 80;

root /var/www/site/html;

index index.php index.html index.htm;

server_name site.ru;

location /

{

try_files $uri $uri/ /index.php?q=$uri&$args;

}

location ~ \\.php$

{

fastcgi_pass unix:/run/php/php7.2-fpm-site.sock;

include fastcgi_params;

include snippets/fastcgi-php.conf;

fastcgi_keep_conn on; fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f noreply@site.ru";

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_split_path_info ^((?U).+\\.ph(?:p\\d*|tml))(/?.+)$;

}

location ~ /\\.ht

{

deny all;

} }

По умолчанию, в Debian все файлы настройки виртуальных доменов создаются в каталоге /etc/nginx/sites-available, а на все активные сайты создаются символические ссылки на этот файл в каталоге /etc/nginx/sites-enable

ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.ru

Готово. Теперь перезапустить сервисы и проверить.

service nginx restart service php7.2-fpm restart Содержимое файла index.php для проверки

Администратор

Хороший ученик видит ошибки своего учителя, но молчит о них почтительно, ибо самые эти ошибки служат ему в пользу и наставляют его на прямой путь