Я установил AWStats на свой VPS, чтобы получить больше информации о трафике, поступающем на мой сайт. Так как проинструктирован Я запустил ручную сборку / обновление, и все прошло нормально:
sudo -u www-data ./awstats.pl -config=example.com
Create/Update database for config "/etc/awstats/awstats.example.com.conf" by AWStats version 6.9 (build 1.925)
From data in log file "/usr/share/doc/awstats/examples/logresolvemerge.pl /var/www/example.com/logs/*-access.log |"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Warning: awstats has detected that some hosts names were already resolved in your logfile /usr/share/doc/awstats/examples/logresolvemerge.pl /var/www/example.com/logs/*-access.log |.
If DNS lookup was already made by the logger (web server), you should change your setup DNSLookup=1 into DNSLookup=0 to increase awstats speed.
Jumped lines in file: 0
Parsed lines in file: 814
Found 0 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 814 new qualified records.
Он также создал файл в DatDir: /var/lib/awstats/awstats052010.example.com.txt, который содержит то, что я ожидал.
НО когда я захожу на сайт example.com/awstats/awstats.pl, он сообщает мне
Last Update: Never updated (See 'Build/Update' on awstats_setup.html page)
а остальная часть страницы пуста. Я почти уверен, что настроил его правильно, но теперь я не могу понять, почему это происходит. Надеюсь, кто-нибудь умнее меня сможет мне помочь.
Две возможности.
Либо права доступа к файлу, созданному при запуске awstats, не позволяют вашему веб-серверу читать файлы, то есть они принадлежат пользователю, отличному от www-data, и имеют разрешения 640.
или
Регулярное выражение настроено так, что имя хоста ожидает, что URL-адрес будет domain.com, и вы посещаете www.domain.com (что менее вероятно из-за того, что ваш метод sudo -u www-data работал)
Для меня это была проблема с Selinux.
grep awstats.pl /var/log/audit.log
показал отказано заявления для getattr, читать, открыто и ioctl операции для команды awstats.pl выпущенный httpd_t контекст.
чтобы разрешить эти операции, я пропускаю эти строки через audit2allow как это:
audit2allow -m 'httpd_awstats' <<EOF
<paste the regarding lines from /var/log/audit/audit.log here>
EOF
создает политику selinux
semodule -i httpd_awstats.pp
активирует эту политику
если вы используете centos 7 /var/log/audit/audit.log заменяется на журнал. чтобы получить журналы оттуда, используйте следующую команду
journalctl -xln 50 --no-pager | grep awstats.pl
то 50 это количество последних строк для выборки из журнала
Сначала попробуйте найти каталог awstats / tools и выполнить скрипт update all.
/usr/share/awstats/tools/awstats_updateall.pl now
Он четко сообщит вам, существует ли какая-либо проблема с разрешениями для любого из этих файлов: файл журнала сервера, файлы конфигурации awstats, каталог awstats для записи данных.
В противном случае, если он выполняется правильно, он обновит информацию «Последнее обновление» в веб-интерфейсе статистики.
И лучше запланировать задание cron для регулярного обновления базы данных AWSats с использованием вновь созданных записей журнала.