I'm trying to make a CGI script (for nginx) that outputs an html page containing the usage statistics for my server. I'm using goaccess 0.7.1 and CentOS 5 x86.
I've configured nginx to run my bash script (stats.sh) for requests on port 8080.
The bash script looks like this:
#!/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
When I run ./stats.sh, everything works fine. It prints a bunch of html code in the console window, and if I open stats.html, I see a bunch of html code.
THE PROBLEM IS, when I try to access http://www.mydomain.com:8080/, I just get a blank page. Now when I open stats.html on the server, it's completely empty.
I've confirmed the following permissions:
stats.sh:-rwxr-xr-xstats.html:-rw-rw-rw-goaccess:-rwxr-xr-x
I also know that CGI is working properly because if I modify stats.sh to only output the contents of stats.html (without writing to the file), it works fine when I hit http://www.mydomain.com:8080/; it just sends whatever data was in stats.html from before. So something is going wrong with calling goaccess in a CGI script. Does anyone know why?
UPDATE
I also tried this:
echo "<!DOCTYPE hmtl><html><body>TEST</body></html>" > stats.html
and it works fine when I hit http://www.mydomain.com:8080/, so something is going wrong when running goaccess from FastCGI.
I also tried specifying the full path to goaccess (/usr/local/bin/goaccess):
/var/log/nginx/mydomain.access.log | /usr/local/bin/goaccess -a >stats.html 2>stats.err
but this also did not work.