Я следовал этому процессу, чтобы установить nginx на свой Ubuntu 10.04 Lucid Server http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid
Я заблудился после создания сценария инициализации для запуска nginx и затем вызова /etc/init.d/nginx start. Когда я это сделал, я получил следующую ошибку:
Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:17:27 [emerg] 859#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)
Единственный способ, которым я могу запустить это, если я использую, sudo
и он запускает процесс как root
, что я не хочу.
У меня есть chown
весь каталог ( chown -R nginx:nginx /opt/nginx
), а также chmod -R 755
каталог.
Добавление user
директивы, предложенной CS3, также дает мне эту ошибку, но с дополнительной строкой.
Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:48:34 [warn] 1606#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /opt/nginx/conf/nginx.conf:2
2012/03/16 18:48:34 [emerg] 1606#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)
Есть идеи?
and I've also chmod -R 755 the directory as well
Продолжайте делать это, и вы в конечном итоге заплатите за это. Страшно наблюдать, как много людей в Интернете предлагают это в качестве первого порта для решения любой проблемы. Unix не даст дружескую обратную связь, если вы сделаете что-то идиотское.Ответы:
Прежде всего, сценарии инициализации должны быть запущены
когда вы не вошли в систему как root (когда вошедший в систему пользователь включен sudo)
Во-вторых, когда вы запускаете sudo /etc/init.d/nginx start ==>, он запускает основной процесс nginx как root и рабочие процессы как пользователь, которого вы указали в пользовательской директиве nginx.conf (например, www-data)
Можете ли вы подтвердить, что все ваши процессы в nginx запускаются пользователем root при запуске sudo /etc/init.d/nginx start?
с
например.
Предложение: Ubuntu 10.04 LTS имеет отличную поддержку пакетов ubuntu от команды nginx. Итак, зачем беспокоиться об установке из исходного кода, если у вас нет требований к пользовательскому модулю внутри nginx?
Проконсультируйтесь здесь
Бинарный пакет уже поставляется с довольно необходимыми модулями
источник
Добавьте директиву пользователя внутри nginx.conf
источник
Мои 5 копеек по этому поводу
nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path
.. даст вам все другие пути, которые вы должны переопределить в пользовательском конфиге или с опцией "-g".
источник
nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
В моем случае отсутствовала ссылка на файл в моем nginx.conf:
error_log /var/log/nginx/error.log warn;
Стало: error_log предупреждать;
Поэтому я случайно удалил ссылку /var/log/nginx/error.log, которая вызвала сообщение об ошибке «Отказано в доступе».
источник