Apache 无法启动 - 表示 httpd 模块已加载但未运行

Posted

技术标签:

【中文标题】Apache 无法启动 - 表示 httpd 模块已加载但未运行【英文标题】:Apache won't start -- says httpd module is loaded but isn't running 【发布时间】:2013-02-09 07:48:11 【问题描述】:

所以我一直在使用 OS X 10.8.2 上的多个虚拟主机。我正在使用 Apache2 安装和 mysql 来运行基于名称的虚拟主机。直到昨晚,他们都工作得很好。突然,我所有的虚拟主机都重定向到“无法连接到”页面。

在摆弄并最终检查了错误日志之后,我得出的结论是 Apache 并没有真正运行。例如,ps aux | grep apache 只返回 grep 进程。但是,如果我尝试 sudo /usr/sbin/apachectl start 我会得到“org.apache.httpd:已加载”作为响应。

我检查了我的 httpd.conf 文件,它看起来非常好。我看不到它有任何变化。我还运行了语法检查命令(它在我的大脑中转瞬即逝),它返回了 OK。我在错误日志中发现的唯一一件事,最后一件事是昨天,2 月 21 日,它说:“[Thu Feb 21 21:46:02 2013] [notice] 捕获 SIGTERM,正在关闭”

从那时起,我的 Apache 错误日志就什么也没有了(因为它没有运行)。我已经重新启动,尝试重新启动 apache;我完全不知道为什么它认为它正在运行,即使它不是。

有什么想法吗?

当我尝试启动和重新启动 Apache 时,在 /var/logs/system.log 中:

Feb 23 09:27:00 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd[8766]): Exited with code: 1
Feb 23 09:27:00 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds
Feb 23 09:27:10 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd[8767]): Exited with code: 1
Feb 23 09:27:10 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds
Feb 23 09:27:16 Baileys-MacBook-Pro.local sudo[8769]:   bailey : TTY=ttys000 ; PWD=/private/var/log ; USER=root ; COMMAND=/usr/sbin/apachectl start
Feb 23 09:27:20 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd[8772]): Exited with code: 1
Feb 23 09:27:20 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds
Feb 23 09:27:20 Baileys-MacBook-Pro.local sudo[8773]:   bailey : TTY=ttys000 ; PWD=/private/var/log ; USER=root ; COMMAND=/usr/sbin/apachectl restart
Feb 23 09:27:20 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd[8777]): Exited with code: 1
Feb 23 09:27:20 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds
Feb 23 09:27:26 Baileys-MacBook-Pro.local sudo[8778]:   bailey : TTY=ttys000 ; PWD=/private/var/log ; USER=root ; COMMAND=/usr/bin/vi system.log

重新启动后此问题仍然存在。从前一天开始,它不会启动,但认为 httpd 模块已加载。

我正在尝试通过 Google 查找,但是 -- 有谁知道 Apache 如何检查它是否已加载?我知道很多要运行的服务锁定文件;尽管 Apache 当前没有运行,Apache 是否有可能在某处仍然锁定的锁定文件?

注意:我也在 ServerFault 上发布了这个——我也在这里发布这个,因为到目前为止我没有在 ServerFault 上得到任何东西,而且我一直在看 *** 上的 Apache 帖子,所以我假设Apache 问题适用于 Stack。

【问题讨论】:

【参考方案1】:

robertklep 的指针:

sudo /usr/sbin/httpd -k start -e Debug -E /dev/stdout

为我解决了一个相关问题。相同的症状,不同的原因,我想。 我使用 SSL 和自签名证书设置了一个测试虚拟主机。

我生成了一个带有密码的私钥。 所以 httpd 正在等待一个密码(我没有提供)。 当我开始使用调试选项时,我得到了提示,提供了密码并启动了 httpd。

所以,将在没有密码的情况下重做私钥...

【讨论】:

【参考方案2】:

不知道这是否相关,但由于我遇到了同样的问题并且我找到了替代解决方案,所以还是让我放入我的 2c。

当我遇到同样的问题时查看了这篇文章。原来 httpd.conf 文件是罪魁祸首。我已经改变它来安装一些东西。虽然我删除了安装程序文件,但我忘记将 httpd.conf 改回来。我希望你没有遇到同样的问题。

关于 80 端口的问题,我曾看到 Skype 占用该端口以及 443,(天知道是什么原因),我在关闭它后获得了更好的结果。确保您没有在端口 80 上运行 Skype。

【讨论】:

【参考方案3】:

就我而言,我得到了:

(2)No such file or directory: httpd: could not open error log file /private/var/log/apache2/error_log.无法打开日志

创建目录 apache2 使其运行。

【讨论】:

这对我有用,我的尝试在 /mnt/apache2 中查找,所以我在 mnt 中创建了一个“apache2”目录并且它有效!【参考方案4】:

当有另一个进程已经在侦听 Apache 想要绑定到的同一端口(通常是端口 80)时,我可以通过启动 Apache 来重现问题(有点)。因此,请检查是否有另一个进程正在侦听该端口:

sudo lsof -i tcp:80 | grep LISTEN

编辑:也许更简单:您可以在调试模式下手动启动 Apache,看看它无法启动的原因:

sudo /usr/sbin/httpd -k start -e Debug -E /dev/stdout

在我的情况下(已经在端口 80 上监听的东西),它将产生:

(48)Address already in use: make_sock: could not bind to address 0.0.0.0:80

【讨论】:

当我运行时输出什么都没有。 您的 Apache 监听端口 80?否则,您必须在tcp: 之后更改端口号。你是在运行内置的 Apache 2,还是安装了 MAMP 之类的? 我的 Apache 确实在 80 端口上运行,是的。它是 OS X 10.8.2 的内置 Apache 2。 我做到了——它没有输出并且仍然没有运行。我最终尝试重新安装 Mountain Lion,但它没有用。我想起了一个奇怪的时间,我重新启动,我的 MacBook Pro 无法加载 OS X,我不得不重新安装。老实说,我怀疑这是我的磁盘驱动器的某种硬件问题。 谢谢! sudo /usr/sbin/httpd -k start -e Debug -E /dev/stdout 是天赐之物。

以上是关于Apache 无法启动 - 表示 httpd 模块已加载但未运行的主要内容,如果未能解决你的问题,请参考以下文章

Apache (httpd) 无法启动,因为“无法打开错误日志”

如何在Centos上使用ansible模块启动httpd服务

Apache 无法启动,找不到编码

Windows 上的 Apache httpd 服务器无法启动

wamp下部署ssl,https,httpd.conf,Apache无法启动,不能启动

apache/2.4.48(win64) 服务无法启动原因? (操作系统:WINDOWS SERVER 2019 DATACENTER)