2017-02-19 18 views
2

Я установил Nginx, используя Ansible. Для установки на Centos7 я использовал пакет yum, поэтому он по умолчанию был запущен как root пользователь. Я хочу, чтобы он запускался и запускался как другой пользователь (ex - nginx пользователь) в поле Centos. Когда я пытаюсь запустить его с другим пользователем, я получаю следующее сообщение об ошибке:Запуск Nginx в качестве пользователя без root

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

Я знаю, что это не желательно, чтобы бежать как корень. Итак, как мне обойти это и запустить nginx в качестве пользователя без root. Благодаря

+0

Stack Overflow это сайт для программирования и разработки вопросов. Этот вопрос кажется вне темы, потому что речь идет не о программировании или разработке. См. [Какие темы можно задать здесь] (http://stackoverflow.com/help/on-topic) в Справочном центре. Возможно, лучше сказать [Суперпользователь] (http://superuser.com/) или [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/). Также см. [Где я пишу вопросы о Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

+0

Может быть [Разрешить не-root-процесс привязываться к портам 80 и 443?] (Http: // superuser.com/q/710253/173513) и [привязать к портам менее 1024 без доступа root] (https://serverfault.com/questions/268099/bind-to-ports-less-than-1024-without-root -access) поможет. Также см. [Существует ли способ, которым не-корневые процессы связываются с «привилегированными» портами (<1024) в Linux?] (Http://stackoverflow.com/q/413807/608639). – jww

ответ

5

Добавить/изменить следующее в вашем /etc/nginx/nginx.conf:

user nginx; 

Вы должны создать права доступа пользователей и привилегий на WebRoot каталогов рекурсивно.

Таким образом, только основной процесс работает как root. Потому что: Только корневые процессы могут прослушивать порты ниже 1024. Веб-сервер обычно работает на порту 80 и/или 443. Это означает, что его нужно запустить с правами root.

Чтобы запустить мастер процесс как не суперпользователя:

Изменение права собственности на следующем:

  • error_log
  • access_log
  • PID
  • client_body_temp_path
  • fastcgi_temp_path
  • proxy_temp_path
  • scgi_temp_path
  • uwsgi_temp_path

Изменение слушать директивы портов выше 1024, войти по желанию пользователя и запустить Nginx по nginx -c /path/to/nginx.conf

+0

привет Фархад. По умолчанию этот пользователь установил в файле conf. Я попробовал su - nginx и начал его, но процесс стал root. – Sarith

+0

'ps aux | grep nginx' показывает корень? –

+0

есть. Смотри ниже. корень 5830 0,0 0,1 122232 2216? Ss 17:07 0:00 nginx: master process/usr/sbin/nginx nginx 5831 0.0 0.1 122664 3292? S 17:07 0:00 nginx: рабочий процесс nginx 5832 0.0 0.1 122664 3088?S 17:07 0:00 nginx: рабочий процесс – Sarith