Eu segui esse processo para instalar o nginx no meu Ubuntu 10.04 Lucid Server http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid
Eu me perdi após o ponto de criar um script init para iniciar o nginx e depois chamar /etc/init.d/nginx start. Quando fiz isso, recebi o seguinte erro:
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)
A única maneira de executá-lo é se eu usar sudo
e executar o processo como root
, que é o que eu não quero.
Eu tenho chown
o diretório inteiro ( chown -R nginx:nginx /opt/nginx
) e também chmod -R 755
o diretório.
Adicionar a user
diretiva conforme sugerido pelo CS3 também me dá esse erro, mas com uma linha adicional.
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)
Alguma ideia?
and I've also chmod -R 755 the directory as well
Continue fazendo isso e você pagará um preço por isso eventualmente. É assustador testemunhar quantas pessoas existem na internet sugerindo isso como o primeiro porto de escala para "consertar" qualquer problema. O Unix não dará feedback amigável se você fizer algo idiota.Respostas:
Primeiro de tudo, os scripts init devem ser executados
quando você não está logado como root (quando o usuário logado está com o sudo ativado)
Em segundo lugar, quando você executa o sudo /etc/init.d/nginx start ==>, o processo mestre do nginx é acionado como root e o trabalhador como o usuário especificado na diretiva de usuário nginx.conf (por exemplo, www-data)
Você pode confirmar se todo o seu processo no nginx está sendo executado pela raiz ao emitir sudo /etc/init.d/nginx start?
com
por exemplo.
Sugestão: O Ubuntu 10.04 LTS possui excelente suporte ao pacote ubuntu da equipe nginx. Então, por que se preocupar em instalar a partir do código-fonte se você não possui requisitos para o módulo personalizado dentro do nginx?
Consulte aqui
O pacote binário já vem com os módulos necessários
fonte
Adicione a diretiva de usuário dentro do nginx.conf
fonte
Meus 5 comentários sobre isso
nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path
.. você receberá todos os outros patches, que você deve substituir na configuração fornecida personalizada ou com a opção "-g".
fonte
nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
No meu caso, havia uma referência de arquivo ausente no meu nginx.conf:
error_log /var/log/nginx/error.log warn;
Tornou-se: error_log warn;
Por isso, excluí acidentalmente a referência /var/log/nginx/error.log, que causou uma mensagem de erro de permissão negada.
fonte