Существует такая система статистики, как webalizer, которая умеет анализировать логи апача и генерировать html-файлы отчетов.
Однако есть маленькое "но". Webalizer использует текущий системный язык для создания отчетов, что не всегда есть "хорошо" из-за того, что по-умолчанию нормально работать с русским он не умеет. Так, например, он генерирует кракозябры в рисунках графиков, а также не устанавливает по-умолчанию кодировку (т.е. пишет в, например, KOI8-R, но при этом браузеру не сообщает - в какой кодировке ему понимать страницы сайта статистики).
Конечно, проблемы нет, когда ОС использует английский в качестве языкового пакета. А вот если Вам приходится пользовать русский, например, KOI8-R, в качестве основного языка в операционной системе - webalizer без каких-либо вопросов и настроек будет пытаться писать отчеты на русском (ну вот такой он странный).
Самое простое решение (английский то на минимальном уровне мы все знаем - там строчки то все понятные) - заставить webalizer выводить текст не на русском, а на английском.
Меняем язык на английскийИтак, чтобы webalizer писал на английском - нам надо поменять системную локаль на английский или C (т.е. без локализации вообще). Делать это надо научиться автоматичски, ибо скрипт webalizer может стоять в cron и оттуда запускать генерацию отчетов.
Пойдем следующим путем. Создадим shell-файл скрипта, который будет менять язык, выполнять webalizer и менять язык обратно.
Вот листинг этого файла:
#!/bin/sh
oldlang=`echo $LANG`
newlang="C"
export LANG=$newlang
webalizer
export LANG=$oldlang
Здесь мы запоминаем текущие настройки языка (oldlang), меняем язык системы на "без локализации" (C), выполняем webalizer, который нам сгенерирует отчет по текущему месяцу в английском языке, после чего меняем язык обратно на запомненный.
Прошу обратить внимание! Отчет будет сгенерирован с новым языком только по ТЕКУЩЕМУ месяцу... для остальных месяцев язык останется прежним.
Итак, сохраняем этот файл, например, в /etc/webalizer/webalizer_run.sh и делаем запускаемым:
# chmod +x /etc/webalizer/webalizer_run.sh
Теперь запускать webalizer нужно будет с помощью только этого файла, его же нужно указать в crontab (/etc/crontab) для исполнения вместо просто webalizer.
КодировкаНу, по какой-то причине нам все-же нужно, чтобы webalizer передавал в браузер информацию о кодировке. На примере KOI8-R я покажу где в конфиге это прописать.
Итак, открываем конфиг-файл webalizer.conf (для Debian, например, он лежит в /etc/webalizer). Ищем внутри опцию:
HTMLHead
И приводим ее в следующий вид (не забудте раскоментировать):
HTMLHead <META content="text/html; charset=koi8-r" http-equiv="content-type" />
После чего запускаем webalizer для того, чтобы он сгенерировал отчет за текущий месяц заново.
Актуально для: Webalizer на Linux
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)