apache 错误和访问日志丢失,可能是什么原因造成的,我该如何重新创建它们?

apache 错误和访问日志丢失,可能是什么原因造成的,我该如何重新创建它们?

我被分配了一项任务,以了解为什么运行 apache 2.2.3 的 2 个 CentOS Web 服务器在特定情况下会遇到非常高的负载。我首先检查的是,/var/log/messages但后来我意识到 rsyslog 由于某种原因被关闭了,所以我启动了它并使用 将其打开chkconfig。然后,我想检查 apache 错误和访问日志,因此我浏览到/var/log/httpd但发现文件夹是空的。我检查/etc/httpd/conf/httpd.conf后看到以下几行:

ErrorLog logs/error_log
CustomLog logs/access_log combined

据我所知,它指的是,/var/log/httpd/但如前所述,文件夹是空的。在写这个问题时,我在服务器上查找了 httpd 版本并运行,httpd -v这是我得到的响应:

[root@domU-IP httpd]# httpd -v
Server version: Apache/2.2.3
Server built:   May  4 2011 06:51:15
Unable to open logs

我的问题是:

  1. 什么原因会导致日志消失?(有可能它们根本没有被创建过)
  2. 我如何重新创建日志并确保数据已写入其中?
  3. 应设置哪些权限/var/log/httpd?当前权限为:drwx------ 2 root root

提前致谢

答案1

当 Apache 配置中的路径引用不是绝对路径(即不以 开头/)时,它们与指令中设置的目录相关ServerRoot。 的常见默认设置ServerRoot/etc/httpd创建/etc/httpd/logs日志目录。

/etc/httpd/logs大多数打包的 Apache 版本都会创建从到 的符号链接/var/log/httpd。 /etc/httpd 中的实际目录缺失(或根文件系统已满)或您的设置中可能缺少符号链接。

Apache 由 root 启动,并在放弃权限之前以 root 身份打开日志文件,因此 /var/log/httpd 上的目录权限看起来是正确的。

答案2

我的问题是没有用于访问日志的 Log 指令。我按照此处的说明进行操作https://ubuntuforums.org/showthread.php?t=1704686基本上是说:

在 ubuntu 上,您应该有一个名为/etc/apache2/conf.d/other-vhosts-access-log以下内​​容的文件:

# Define an access log for VirtualHosts that don't define their own logfile
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined

我忽略了这一点,这就是我没有收到日志的原因。

相关内容