Estou tentando criar um script CGI (para nginx) que produza uma página html contendo as estatísticas de uso do meu servidor. Estou usando o goaccess 0.7.1 e o CentOS 5 x86.
Eu configurei o nginx para executar meu script bash ( stats.sh
) para solicitações na porta 8080.
O script bash é assim:
#!/bin/bash
cat /var/log/nginx/mydomain.access.log | goaccess -a > stats.html
echo Content-Type: text/html
echo Content-Length: $(stat -c%s stats.html)
echo
cat stats.html
Quando executo ./stats.sh
, tudo funciona bem. Ele imprime um monte de código html na janela do console, e se eu abrir stats.html, vejo um monte de código html.
O PROBLEMA É , quando tento acessar http://www.mydomain.com:8080/
, acabo de receber uma página em branco. Agora, quando abro o stats.html no servidor, está completamente vazio.
Confirmei as seguintes permissões:
-
stats.sh
: -rwxr-xr-x
-
stats.html
: -rw-rw-rw-
-
goaccess
: -rwxr-xr-x
Eu também sei que o CGI está funcionando corretamente porque se eu modificar o stats.sh
para gerar somente o conteúdo de stats.html
(sem gravar no arquivo), ele funcionará bem quando eu atingir http://www.mydomain.com:8080/
; apenas envia os dados que estavam em stats.html
de antes. Então, algo está errado ao chamar o goaccess em um script CGI. Alguém sabe por quê?
UPDATE
Eu também tentei isso:
echo "<!DOCTYPE hmtl><html><body>TEST</body></html>" > stats.html
e funciona bem quando eu clico em http://www.mydomain.com:8080/
, então algo está errado ao executar goaccess
do FastCGI.
Eu também tentei especificar o caminho completo para goaccess
( /usr/local/bin/goaccess
):
/var/log/nginx/mydomain.access.log | /usr/local/bin/goaccess -a >stats.html 2>stats.err
mas isso também não funcionou.