CGIスクリプトから呼び出すと、goaccessは実行されません。

CGIスクリプトから呼び出すと、goaccessは実行されません。

私のサーバーの使用統計を含む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

関連情報