Назад | Перейти на главную страницу

Как изменить пользователя NGINX?

У меня есть сценарий PHP, который создает каталог и выводит изображение в каталог. Это прекрасно работало под Apache, но недавно мы решили переключиться на NGINX, чтобы больше использовать нашу ограниченную оперативную память. Я использую команду PHP mkdir () для создания каталога:

mkdir(dirname($path['image']['server']), 0755, true);

После перехода на NGINX я получаю следующее предупреждение:

Warning: mkdir(): Permission denied in ...

Я уже проверил все разрешения родительских каталогов, поэтому решил, что мне, вероятно, нужно изменить пользователя NGINX или PHP-FPM, но я не уверен, как это сделать (мне никогда не приходилось указывать пользователя разрешения для APACHE). Я не могу найти много информации по этому поводу. Любая помощь была бы замечательной!

(Примечание: помимо этого небольшого зависания, переключение на NGINX было довольно простым; я использую его впервые, и буквально на то, чтобы начать работу с NGINX, потребовалось всего около 10 минут. Теперь я просто гладю изгибов.)

Запустите nginx и php-fpm как www: www

1. Nginx

Отредактируйте nginx.conf и установите пользователь к www www;

Если главный процесс запускается от имени пользователя root, то nginx установит для setuid () / setgid () значение USER / GROUP. Если GROUP не указана, тогда nginx использует то же имя, что и USER. По умолчанию это никто и никто, или группа nogroup, или --user = USER и --group = GROUP из сценария ./configure.

2. PHP-FPM

редактировать php-fpm.conf и установите пользователя и группу на www.

user - Unix-пользователь процессов. По умолчанию "www-data"

group - группа процессов Unix. По умолчанию "www-data"

В Ubuntu 14.04 файл для изменения пользователь и группа в PHP-FPM является: /etc/php5/fpm/pool.d/www.conf. В этом файле измените эти параметры:

user = www
group = www
listen.owner = www
listen.group = www

Чтобы ответить на ваш актуальный вопрос просто изменить user линия в nginx.conf вот так:

user    [username];

Пример:

user    www-data;

Предпочтительный пользователь для запуска Nginx на самом деле отличается в зависимости от операционной системы. Иногда предполагается, что Nginx запускается как www-data. В других случаях он должен работать как nobody.

В некоторых операционных системах (например, Windows) это даже не имеет значения, и user линия в nginx.conf можно закомментировать или полностью исключить.

Следующее решение помогло мне изменить веб-пользователя, используя Ubuntu 18.04 LTS, nginx 1.14 и php7.2-fpm.

1. Nginx

редактировать /etc/nginx/nginx.conf и установите пользователя на webuser;

user webuser;

2. PHP-FPM

редактировать /etc/php/7.2/fpm/pool.d/www.conf.

user = webuser
group = webuser
...
listen.owner = webuser
listen.group = webuser