Systemd falha ao iniciar o Nginx na reinicialização, mas funciona manualmente

5

Aqui está minha situação sempre que eu reinicio:

$ systemctl --failed
UNIT          LOAD   ACTIVE SUB    DESCRIPTION
nginx.service loaded failed failed A high performance web server and a reverse proxy server
...
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2014/01/18 05:44:47 [emerg] 254#0: open() "/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed
$ cd /run
$ ls -al | grep nginx
$ sudo systemctl start nginx
$ ls -al | grep nginx
-rw-r--r--  1 root     root        4 Jan 18 06:27 nginx.pid

Eu não entendo como nginx.pid poderia ter permissões incorretas antes mesmo de ser criado, ou o que alguém faria para resolver isso.

Estou usando o Arch e tenho visto problemas semelhantes relacionados ao chroot-jail, mas não instalei o nginx em um chroot.

    
por Ryne Everett 18.01.2014 / 18:34

2 respostas

8

O problema parece ser que você está usando um usuário não privilegiado para testar a configuração do Nginx. Quando o teste ocorre, ele tenta criar /run/nginx.pid, mas falha e isso faz com que o teste de configuração falhe. Tente executar o nginx como root.

$ sudo nginx -t

ou

$ su - -c "nginx -t"

Dessa forma, o processo pai do Nginx terá a mesma permissão que seria quando executado pelo systemctl.

Se isso resolver o erro no teste, mas não quando executado a partir do systemctl, você pode querer verificar esta página investigando erros do systemd .

    
por 18.01.2014 / 23:20
0

Para mim, eu apenas mudei o selinux de enforcing para permissive e então eu pude iniciar o nginx sem nenhum erro.

    
por 18.03.2015 / 05:18