如何使用Apache记录页面请求?

Laz*_*zer 7 html apache logging timestamp http

我在我的本地计算机上使用Apache为我的组托管了一些文档.我已经复制/链接了文件/var/www/html.

有没有办法记录每个请求的时间戳请求?

Lyn*_*ing 11

应该已经开箱即用日志记录,并记录到名为access_log的文件.我从来没有见过它尚未开启的安装.

通常,在哪里登录的指令设置在名为httpd.conf的文件中.大多数情况下,该文件位于/ var/log/apache2中.


Яро*_*лин 5

假设您的apache服务器正在运行并且您具有shell访问权限:

做这个:

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
Run Code Online (Sandbox Code Playgroud)

..那是一个Apache守护进程。您正在寻找“ -f /etc/apache2/http.conf”。如果您的apache服务器没有(通过distro init脚本告知)要从何处获取配置文件,它将在默认位置查找,该位置可能在以下位置:/ etc / apache2 // etc / httpd /(或其他任何位置,但是这两个是最常见的)。在该文件夹中,您将找到一个名为apache2.confhttpd.conf的文件,
只需尝试以下操作:

find /etc/ -iname httpd.conf -o -iname apache2.conf
Run Code Online (Sandbox Code Playgroud)

找到apache服务器的配置文件后,查找其中包含模块配置的行。在我的系统上,它看起来像这样:

Include /etc/apache2/modules.d/*.conf
Run Code Online (Sandbox Code Playgroud)

现在,您需要确定日志文件在哪里:

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
Run Code Online (Sandbox Code Playgroud)

您正在寻找:CustomLog / var / log / apache2 / access_log通用。
请注意,此CustomLog指令也可以位于主apache2.conf文件中。
现在,您有了日志文件的位置。立即停止服务器登录的最有可能的事情是文件权限。确保在CustomLog下给定的目录存在,并且apache服务器可以写入该目录:

作为根:

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
Run Code Online (Sandbox Code Playgroud)

APACHEUSER可能是apache或www甚至httpd的地方。您可以运行以下命令找出答案:

genja ~ # ps aux |grep apache |awk '{print $1}'
apache
(...)
apache
root
Run Code Online (Sandbox Code Playgroud)

因此,在我的系统上运行apache服务器的用户实际上称为apache。它不是根。或至少不应该如此。

更改该文件的权限后,重新启动服务器。我不知道您的发行版是如何做到的。我认为在ubuntu上有一个服务命​​令。但是您始终可以直接运行init脚本:

/etc/init.d/apache restart(ir可能在发行版中的其他位置)重新启动整个计算机,如果您不知道如何重新启动apache服务器。

如果重新启动服务器后access_log文件为空,则在上述命令中将APACHEUSER更改为root。

毕竟,只需使用您喜欢的寻呼机或文本编辑器查看日志即可。甚至连tail -f都可以实时监视它。我希望这有帮助。gl。