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에 만들었기 때문에 루트가 아닌 사용자는 읽을 수 없는 것 같습니다. 옮겨놨는데 /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.

관련 정보