goaccess não será executado quando chamado do script CGI

1

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.

    
por AJ Richardson 08.08.2014 / 02:30

1 resposta

1

mydomainI finalmente conseguiu dar certo! O problema principal era meu arquivo .goaccessrc . Eu criei este arquivo de modo insensato em /root , então obviamente usuários não-root não puderam lê-lo. Eu mudei para /etc e funciona bem agora. Aqui está o código final para o meu arquivo bash:

#!/bin/bash

cat /var/log/nginx/mydomain.access.log | /usr/local/bin/goaccess -a -p /etc/.goaccessrc >stats.html 2>stats.err

echo Content-Type: text/html
echo Content-Length: $(stat -c%s stats.html)
echo
cat stats.html

Certifique-se de executar chmod 666 stats.err .

    
por 26.08.2014 / 05:21