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

Mis*_* R2 5 apache macos configuration virtualhost

所以我一直在使用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 2月21日21:46:02] [通知]抓住了SIGTERM,关闭了"

从那时起,我的Apache错误日志不包含任何内容(因为它没有运行).我重新启动,尝试重启apache; 我完全不知道为什么它认为它正在运行,即使它没有.

有任何想法吗?

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

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

重新启动后此问题仍然存在.从那天起,它将无法启动,但相信httpd模块已加载.

我试图通过谷歌找到,但是 - 有没有人知道Apache如何检查它是否已加载?我知道很多服务锁文件要运行; 是否有可能Apache有一个锁定文件仍然锁定,尽管Apache目前没有运行?



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

rob*_*lep 19

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

sudo lsof -i tcp:80 | grep LISTEN
Run Code Online (Sandbox Code Playgroud)

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

sudo /usr/sbin/httpd -k start -e Debug -E /dev/stdout
Run Code Online (Sandbox Code Playgroud)

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

(48)Address already in use: make_sock: could not bind to address 0.0.0.0:80
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!`sudo/usr/sbin/httpd -k start -e Debug -E/dev/stdout`是天赐之物. (6认同)