私のサーバーの使用統計を含むHTMLページを出力するCGIスクリプト(nginx用)を作成しようとしています。私はgoaccess 0.7.1とCentOS 5 x86を使用しています。
stats.sh
ポート8080からの要求に対してbashスクリプト()を実行するようにnginxを設定しました。
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-x
stats.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
しかし、それも動作しません。
答え1
mydomain いよいよ動作するようになりました!最大の問題は私の.goaccessrc
ファイルです。私は愚かなことに、このファイルを/root
.soに作成したため、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
。