goaccess не будет запускаться при вызове из скрипта CGI

Я пытаюсь создать CGI-скрипт (для nginx), который выводит html-страницу, содержащую статистику использования моего сервера. Я использую goaccess 0.7.1 и CentOS 5 x86.

Я настроил nginx для запуска моего сценария bash ( stats.sh ) для запросов на порт 8080.

Сценарий 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 из ранее. Так что что-то не так с вызовом goaccess в скрипте CGI. Кто-нибудь знает, почему?

ОБНОВИТЬ

Я также пробовал:

 echo "<!DOCTYPE hmtl><html><body>TEST</body></html>" > stats.html 

и он отлично работает, когда я ударяю http://www.mydomain.com:8080/ , так что что-то происходит неправильно при запуске goaccess из FastCGI.

Я также попытался указать полный путь к goaccess ( /usr/local/bin/goaccess ):

 /var/log/nginx/mydomain.access.log | /usr/local/bin/goaccess -a >stats.html 2>stats.err 

но это тоже не сработало.

One Solution collect form web for “goaccess не будет запускаться при вызове из скрипта CGI”

mydomainI, наконец, получил его на работу! Основной проблемой был мой файл .goaccessrc . Я глупо создал этот файл в /root , поэтому очевидно, что пользователи, не являющиеся 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 .

  • Запуск NGINX в качестве обратного прокси на Docker?
  • Fail2ban для nginx post flood игнорирует временные интервалы
  • Nginx не работает, не имеет прав доступа и не может найти какой-либо каталог
  • Разрешения на файлы журнала nginx
  • Анализ журнала ошибок nginx
  • Как обновить программное обеспечение, которое было создано из источника?
  • PID-файл недоступен после обновления nginx
  • компиляция оболочки nginx не выполняется
  • Nginx - не удается получить доступ к веб-сайту вообще
  • Настройка прокси-сервера Nginx
  • Ошибка Nginx nginx: не удалось создать server_names_hash с zimbra
  • Linux и Unix - лучшая ОС в мире.