在 Debian 上调试 Apache,错误日志在哪里?

在 Debian 上调试 Apache,错误日志在哪里?

我正在使用已经成功运行 Apache、mod_wsgi 和一堆虚拟主机的 Debian 服务器。

我安装了论坛应用程序(Django 的 OSQA)并遵循OSQA 说明然后,我创建了一个 Apache 配置文件,将其指定ServerName为新的子域。我还为该应用程序创建了一个 .wsgi 文件,并指向WSGIScriptAlias它。然后我重新启动了 Apache。

但是,当我转到新的子域时,出现 404 错误消息。

我是否遗漏了上述步骤?或者只需创建一个新的 Apache 配置文件就sites-available足以告知 Apache 有关新的子域的信息?

如果还有其他问题,我该如何调试?配置文件中指定的ErrorLogCustomLog都是空白的。apache2.conf我猜是 Apache 范围的配置,指定了ErrorLog /var/log/apache2/error.log,但这又是另一个空白文件。

答案1

Apache 的在线资源很多。您是否尝试过自己搜索 Google 来寻找答案?

几个月前,当我用谷歌搜索时,我发现了以下信息:

ErrorLog     /var/log/apache2/error.log
AccessLog    /var/log/apache2/access.log

start/stop   /etc/init.d/apache2 (start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean) 

答案2

第一篇文章并不适用于 Debian 上的所有情况。这取决于您如何安装软件包,是通过 apt 还是通过源代码编译。

要找出日志的位置,根据 Apache 指示生成日志的方式,您需要运行以下命令:

/usr/sbin/apachectl -V

一些 Linux 发行版会创建一个名为 /usr/sbin/apacheVERctl 的符号链接,其中 VER 是 2 或 1.3 或其他。Debian 将实际文件放在 /usr/sbin/ 中,因此请尝试上述命令,您将看到类似以下内容:

/usr/sbin/apachectl -V
Server version: Apache/2.2.3

<removed for brevity>

 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log" <<=== default log files stored in "logs/" which is relative to /usr/local/apache<VER>/logs on this server==>
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

如您所见,我的日志位于 /usr/local/apache2/error_log 中。根据服务器的编译方式,--prefix 标志可能指向其他地方。最好的办法是运行该命令并使用 find 查找 error_log。

find / -iname name_of_error_log_file_that_apachectl_spit_out

您可能需要执行 find / -inameapachectl 或各种排列组合来查找二进制文件的位置。有时它被称为 /usr/sbin/httpd。只要确保您知道 find 命令,您就会找到答案。

Google 搜索并不总能给您正确的答案,因此阅读服务文档至关重要。

此外,在查看文档之后,如果您浏览了整个文档,您已经为 /nimda 路径配置了日志记录,因此 nimda 的日志转到此处:

    <cut above config lines>

        CustomLog /var/log/httpd/OSQA/access_log common
        ErrorLog /var/log/httpd/OSQA/error_log
    </VirtualHost>

对于 SSL,日志似乎到达同一个地方:

(可选)在 https ServerAdmin 下运行管理界面[电子邮件保护] DocumentRoot /path/to/osqa-site ServerName example.com SSLEngine on SSLCertificateFile /path/to/ssl-certificate/server.crt SSLCertificateKeyFile /path/to/ssl-certificate/server.key WSGIScriptAlias / /path/to/osqa-site/osqa.wsgi CustomLog /var/log/httpd/OSQA/access_log common ErrorLog /var/log/httpd/OSQA/error_log DirectoryIndex index.html

请检查

/usr/local/apache<VER>/logs 

在服务器上甚至

/usr/local/httpd/*, /var/log/httpd or /var/log/apache<ver>. 

不同的 Linux 发行版存储日志的地方不同。

日志并不总是在 /var/log/apache/* 或 /var/log/httpd 中

有时它们位于 /var/log/httpd/ 中,有时人们从源代码编译 Apache,并且 apache 变量 DEFAULT_ERRORLOG 的设置不同,因此错误日志位于一个位置,而 access_log 位于另一个位置。有时文件的名称也不同。有时人们配置不同的虚拟主机以将日志存储在不同位置,因为他们拥有许多域,并且他们不希望机器上的所有其他客户看到其他域的日志,因为这可能会暴露关键信息。第一篇文章并不适用于所有情况。

谷歌无法回答所有的问题,而且用这么多话告诉别人“谷歌一下”并不总是最好的答案。

某人可能会使用 Redhat,当从 Redhat 分布式 RPM 安装时,它会将日志放在不同的位置。

相关内容