我正在尝试创建一个CGI脚本(用于nginx),该脚本输出包含服务器使用统计信息的html页面。我使用的是goaccess 0.7.1和CentOS 5 x86。
我已经将nginx配置为对端口8080上的请求运行bash脚本(stats.sh)。
bash脚本如下所示:
#!/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当我运行./stats.sh时,一切都很好。它在控制台窗口中打印一堆html代码,如果我打开stats.html,我会看到一堆html代码。
问题是,当我尝试访问http://www.mydomain.com:8080/时,我只得到一个空白页。现在,当我在服务器上打开stats.html时,它完全是空的。
我确认了以下权限:
stats.sh:-rwxr-xr-xstats.html:-rw-rw-rw-goaccess:-rwxr-xr-x我还知道CGI工作正常,因为如果我修改stats.sh只输出stats.html的内容(而不写入文件),那么当我点击http://www.mydomain.com:8080/时,它就能正常工作;它只发送以前stats.html中的任何数据。所以在CGI脚本中调用goaccess出现了问题。有人知道为什么吗?
我也试过这个:
echo "<!DOCTYPE hmtl><html><body>TEST</body></html>" > stats.html当我点击http://www.mydomain.com:8080/时,它工作得很好,所以在从FastCGI运行goaccess时出现了一些问题。
我还尝试指定goaccess (/usr/local/bin/goaccess)的完整路径:
/var/log/nginx/mydomain.access.log | /usr/local/bin/goaccess -a >stats.html 2>stats.err但这也不起作用。
发布于 2014-08-26 03:21:24
mydomainI终于让它开始工作了!主要问题是我的.goaccessrc文件。我在/root中愚蠢地创建了这个文件,所以显然非根用户无法读取它。我把它移到了/etc,现在它运行得很好。下面是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确保运行chmod 666 stats.err。
https://unix.stackexchange.com/questions/149133
复制相似问题