Você está executando o Ubuntu versão 15.
Sim, você poderia se virar com logrotate
e com trechos de script como nas outras respostas. Mas você está executando a versão 15 do Ubuntu . Em seu sistema operacional, os serviços são executados em systemd, que por padrão captura suas saídas padrão de erro e syslog e manipula o registro em log. Não há necessidade de o nginx escrever para esse arquivo error.log
em primeiro lugar. Não há necessidade de logrotate
.
Outras respostas e os comentários abaixo deles podem fazer com que você veja /etc/init.d/nginx
. Não faça Esse arquivo é irrelevante. Você está executando o Ubuntu versão 15 . O arquivo relevante, como fornecido diretamente no pacote nginx-common do Ubuntu, é /lib/systemd/system/nginx.service
, que é o que o systemd estará usando, ignorando completamente o antigo arquivo /etc/init.d/nginx
, que é totalmente substituído por um arquivo de unidade de serviço systemd apropriado .
Outras respostas podem levar você a ver também /etc/logrotate.d/nginx
. Você pode ficar perplexo com a contradição entre o que você pode ver claramente , tentando executar o script antigo System 5 rc
com um subcomando não-padrão invoke-rc.d
e a afirmação de que não há uma sub-rotina postrotate
. Mas, novamente, simplesmente não. Não se concentre nessas estrofes de controle logrotate em primeiro lugar. Você está executando o Ubuntu versão 15 com um pacote que já tem uma unidade de sistema e não está usando scripts System 5 rc
em seu sistema operacional e um gerenciador de serviços que registra a saída do serviço.
Dois passos para fazer as coisas da maneira sistêmica:
Configure o nginx de forma mais adequada.
Seu serviço nginx
precisa ser informado para simplesmente gravar seu log em seu erro padrão. Como bônus, você pode enviar seu registro de acesso ao periódico via syslog, que também intercepta o systemd.
Isso é feito com as diretivas de configuração global nginx e as diretrizes do módulo http. Especificamente:
-
error_log stderr ;
-
access_log syslog:server=unix:/dev/log ;
Você pode alterar seu arquivo nginx.conf
para dizer essa pessoa , ou fazer o que Alexander Kuznecov fez aqui e alterou seu arquivo nginx.service
unit para passar diretivas (globais) no nginx
linha de comando:
Type=forking PIDFile=/run/nginx.pid ExecStart=/usr/bin/nginx -g 'daemon on; error_log stderr; master_process on;'
Esqueça logrotate
inteiramente.
systemd coloca a saída padrão e o erro padrão de todos os serviços em seu diário. Ele lida com a rotação dos próprios arquivos de diário. Não há sinais e nenhum recarregamento do serviço nginx envolvido. Você pode ler as últimas entradas no diário relacionadas ao serviço com (executar como superusuário ou como um usuário adm
)
systemctl status nginx.serviceVocê pode ler tudo no log desse serviço desde a última inicialização com
journalctl -u nginx.service -b