Eu defini um error_log personalizado para um servidor virtual dentro de seu diretório da seguinte forma:
server {
listen 80;
server_name www.example.com;
root /home/www.example.com;
error_log /home/www.example.com/error.log;
}
este é o meu nginx.conf:
user nginx;
pid /run/nginx.pid;
worker_processes 1;
O Nginx começa como root com seus comandos sem problemas:
nginx -t
nginx
Mas quando eu tento iniciá-lo usando o systemctl, ele não inicia e o status mostra isso:
nginx: [emerg] open() "/home/www.example.com/error.log" failed (13: Permission denied)
Este é o meu nginx.service:
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Eu quase tentei algo como mudar o usuário: grupo do diretório web para nginx: nginx. Mesmo se eu remover o error_log, ele começará a usar o systemctl, mas não poderá acessar o diretório da web, embora esteja sendo executado sob o mesmo usuário.
Não consigo descobrir por que o nginx não pode acessar esse diretório quando é iniciado com o systemctl enquanto ele tem acesso quando é iniciado diretamente.
Eu estou no centos 7.