我正在使用已经成功运行 Apache、mod_wsgi 和一堆虚拟主机的 Debian 服务器。
我安装了论坛应用程序(Django 的 OSQA)并遵循OSQA 说明然后,我创建了一个 Apache 配置文件,将其指定ServerName
为新的子域。我还为该应用程序创建了一个 .wsgi 文件,并指向WSGIScriptAlias
它。然后我重新启动了 Apache。
但是,当我转到新的子域时,出现 404 错误消息。
我是否遗漏了上述步骤?或者只需创建一个新的 Apache 配置文件就sites-available
足以告知 Apache 有关新的子域的信息?
如果还有其他问题,我该如何调试?配置文件中指定的ErrorLog
和CustomLog
都是空白的。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 安装时,它会将日志放在不同的位置。