Intereting Posts
сомнения относительно использования split в awk В чем главная проблема, с которой сталкивается кто-то, мигрирующий из bash в zsh? Преобразование xlsx в xls в сценарии оболочки Linux Могу ли я использовать 2 WAN на DD-WRT? Как удалить перенос строк из команд DNF и YUM? Есть ли способ узнать, когда будет запускаться системный таймер? Вытащить файл из контейнера Docker? cp –no-target-directory объяснен Убивать процесс, когда ПИД постоянно меняется Отключить пароль паролей root … но могу ли я SUDO с помощью программы SFTP GUI? Предотвращение расширения определенного пространства в переменной Git – удаляет каждое разделенное пробелами слово, изначально введенное конкретным автором в историю проекта. Как создать службу для сценария оболочки, чтобы я мог начать и остановить ее, как демон? почему бы нагрузка равна 5, если в runq есть нулевые процессы? Как открыть локальный URL (веб-страницу) в командной строке

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 

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

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 .