![CGI 스크립트에서 호출하면 goaccess가 실행되지 않습니다.](https://linux55.com/image/41426/CGI%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%ED%98%B8%EC%B6%9C%ED%95%98%EB%A9%B4%20goaccess%EA%B0%80%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내 서버의 사용 통계가 포함된 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
.