Как регистрировать запросы страниц с помощью Apache? - PullRequest
6 голосов
/ 14 марта 2011

Я размещаю некоторые документы на своем локальном компьютере, используя Apache для моей группы. Я скопировал / связал документы под /var/www/html.

Есть ли способ регистрировать запросы с отметками времени для каждого запроса?

Ответы [ 4 ]

9 голосов
/ 14 марта 2011

Ведение журнала уже должно быть включено из коробки, и ведение журнала в файл с именем access_log. Я никогда не видел установку, где она еще не была включена.

Обычно директива для входа в систему задается в файле с именем httpd.conf. В большинстве случаев файл находится в /var/log/apache2.

5 голосов

Если ваш сервер apache запущен и у вас есть доступ к оболочке:

сделать это:

genja ~ # ps aux |grep apache|tail -n1 
root     23605  0.0  0.2 248636 10684 ?        Ss   Jun08   0:06 /usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D LANGUAGE -D MANUAL -D SSL -D SSL_DEFAULT_VHOST -D PHP5 -D PERL -D PROXY -D SCGI -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start

.. это процесс Apache Daemon. Вы ищете "-f /etc/apache2/http.conf". Если вашему серверу apache не было сказано (с помощью сценариев дистрибутива init), где взять файл конфигурации, он будет выглядеть в расположении по умолчанию, которое может находиться в: / etc / apache2 / или / etc / httpd / (или где-то еще, правда, но эти два наиболее распространены). В этой папке вы найдете файл с именем apache2.conf или httpd.conf
, просто попробуйте это:

find /etc/ -iname httpd.conf -o -iname apache2.conf

После того, как вы нашли файл конфигурации для сервера apache, найдите строку, в которой они содержат конфигурации модулей. В моей системе это выглядит так:

Include /etc/apache2/modules.d/*.conf

Теперь вам нужно выяснить, где находится файл журнала:

genja modules.d # grep CustomLog /etc/apache2/modules.d/*
00_mod_log_config.conf:# a CustomLog directive (see below).
00_mod_log_config.conf:CustomLog /var/log/apache2/access_log common
00_mod_log_config.conf:#CustomLog /var/log/apache2/referer_log referer
00_mod_log_config.conf:#CustomLog /var/log/apache2/agent_logs agent
00_mod_log_config.conf:#CustomLog /var/log/apache2/access_log combined

Вы ищете: CustomLog / var / log / apache2 / access_log common.
Обратите внимание, что эта директива CustomLog может быть и в главном файле apache2.conf.
Теперь у вас есть местоположение файла журнала. Наиболее вероятная вещь, которая будет мешать вашему серверу регистрироваться сейчас, это права доступа к файлам. Убедитесь, что каталог, указанный в CustomLog, существует и что сервер apache может записать в него:

как root:

mkdir -p /var/log/apache2
touch /var/log/apache2/access_log
chown -R APACHEUSER /var/log/apache2
chmod 755 /var/log/apache2
chmod 644 /var/apache2/access_log

где APACHEUSER может быть apache или www или даже httpd. Вы можете понять это, запустив:

genja ~ # ps aux |grep apache |awk '{print $1}'
apache
(...)
apache
root

Таким образом, пользователь, использующий сервер apache в моей системе, на самом деле называется apache. Это не рут. Или, по крайней мере, не должно быть.

перезагрузите сервер после изменения разрешения этого файла. Я не знаю, как ваш дистрибутив это делает. Я думаю, что в Ubuntu есть команда service [s]. Но вы всегда можете запустить скрипт инициализации напрямую:

/ etc / init.d / apache restart (они могут находиться в другом месте вашего дистрибутива), просто перезагрузите весь компьютер, если вы не можете понять, как перезапустить сервер apache.

Если файл access_log пуст после перезапуска сервера, измените APACHEUSER на root в приведенной выше команде.

после всего этого просто используйте ваш любимый пейджер или текстовый редактор, чтобы посмотреть журнал. Или даже tail -f для мониторинга в реальном времени. Надеюсь, это поможет. глобигерина

1 голос
/ 15 июня 2011

Я могу представить, что вы настроили виртуальный хост (так называемый vhost) для вашего / var / www / html корневого каталога документов. Таким образом, вы можете просто добавить требования к настройке журналов в этот конкретный vhost, так что вы получите конкретный файл журнала.

Как в этом примере:

<VirtualHost *:80>

    DocumentRoot /var/www/html
    ServerName www.yourdomain.org
    ServerAdmin webmaster@domain.de

    <Directory "/var/www/html">
            Options FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            Allow from all
            # if you need some users basic authentication
            # AuthType Basic
            # AuthName "MY DOMAIN AUTHENTICATION"
            # AuthUserFile ${APACHE_BASEDIR}/conf.d/special_users
            # Require user foobar
    </Directory>

    # your log specific requirements
    # LOGS (overwriting previous conf See /etc/apache2/apache2.conf)
    # Possible values for LogLevel : debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel info
    ErrorLog /var/log/apache2/my_special_error.log
    # Option 1 (recommended): you merge these specific logs with the overall log file name and format
    # CustomLog /var/log/apache2/access.log combined
    # Or, Option 2: you set up a specific log file for that domain
    LogFormat "%h %l %u %t \"%r\" %>s %b" my_special_access.log
    CustomLog /var/log/apache2/my_special_access.log
</VirtualHost>

Вы найдете способ форматирования журналов в основном файле конфигурации Apache, например, / etc / apache2 / apache2.conf в дистрибутивах, подобных Debian. Или вы берете их такими, какие они есть, или перезаписываете их в конфигурации вашего виртуального хоста. Если вы не работаете с виртуальными хостами, это не сильно изменит эти принципы.

Затем вы можете манипулировать файлом access.log , чтобы извлекать, анализировать, копировать или делать все, что вы хотите с этим. Вы можете сделать это либо в сценариях оболочки Bash (или Perl или даже Python или C или ...). Я бы порекомендовал bash, который вы можете легко автоматизировать как cronjob.

0 голосов
/ 08 июня 2011
LogFormat "%h %l %u %t \"%r\" %>s %b" mylog
CustomLog logs/doc_root_access_log mylog

, который будет выводиться, как показано ниже (временная метка), в файл журналамодификатор.

...