Apache服务器不会自动启动


11

在笔记本电脑上设置开发环境的过程中,我长期安装了Apache。

但是,由于几个月前我停止了它,它不再在启动时自动启动。我在家中的笔记本电脑上和工作中的笔记本电脑上都有此问题。

两种情况下,我几个月前都在Ubuntu 10.10中安装了Apache,使用了数周却没有出现故障,但是有一天我停止了它,现在它不再自动启动。我尝试手动运行更新rc,但被告知初始化脚本已在使用中。

但是,使用以下命令手动启动/重新启动它

sudo service apache2 start/restart

工作正常。在这两种情况下,我都希望等到升级到11.04之后,因为我希望新版本可以解决它。但这不是!如果有人可以告诉我如何让Apache重新自动启动,我将不胜感激。

Answers:


10

尝试跑步

update-rc.d apache2 enable [list of run levels]

作为根。

您可能有兴趣阅读

man update-rc.d

1
非常感谢,我运行了该命令(没有运行级别列表,只有默认值),它似乎可以运行。您知道为什么它似乎停止工作了吗?我没有摆弄初始化脚本,我想我只是从命令行停止了Apache-但我无意永久停止它。:-)
卡斯滕·阿格

我没有任何意见,为什么它停止工作:)也许更新后开始工作不正确。
伊尼亚尔2011年

谢谢,但这无济于事。无论我如何将update-rc.d称为apache2 enable,apache都会再次自动停止运行。我总是必须手动启动它。似乎没有实际问题,因为在我手动执行时它始终可以正确启动。
卡斯滕·阿格

9

我正在基于遇到相同症状的最新问题添加此答案。

首先是一些背景数据:

  • Ubuntu使用/etc/init.d/文件夹中的脚本来启动/停止服务。
  • Ubuntu使用指向/etc/init.d/存储在/etc/rc#.d/文件夹中的这些脚本的符号链接来启动/停止基于“运行级别”的服务。
  • 以“ S”开头的符号链接表示应启动该服务。
  • 以“ K”开头的符号链接表示该服务应停止(终止)。
  • 运行级别1执行符号链接的脚本/etc/rc1.d/,运行级别2使用/etc/rc2.d/等等。
  • Ubuntu的默认运行级别是2。
  • 本质上,Apache的安装sudo update-rc.d apache2 defaults会在/etc/rc#.d/文件夹中创建适当的符号链接。

因此,似乎在我的服务器上某个时刻某人或某人运行sudo update-rc.d apache2 disable,删除了所有“ S”符号链接,并用“ K”符号链接替换了它们。因此,在初始化任何运行级别时都会杀死Apache或只是不启动Apache。

我的解决方案是重新启用Apache:

sudo update-rc.d apache2 enable

现在,Apache在启动或切换运行级别时按预期方式启动/停止。

注意:

值得注意的是,仅sudo update-rc.d apache2 defaults再次运行是不够的,因为它会看到符号链接并认为它们是所需的。它只是回应:

System start/stop links for /etc/init.d/apache2 already exist.

1
谢谢!这对于排除我的配置故障非常有价值。
2016年

1
我遇到了这个问题,但是此解决方案出奇地没起作用。当我运行时,sudo update-rc.d apache2 enable defaults它删除了我拥有的东西,然后又将其放回原处。我K09apache2在rc0、1和6中,我S91apache2在rc2,rc3,rc4,rc5中。service apache2 start可以正常工作,但是每次重新启动后我都必须这样做,因为它不会自动启动。另一方面,mysql总是可以正常启动。
Buttle Butkus

1
那些看起来不错。你可能会想打开新的问题与您的特定问题的详细信息,并确保包括您的相关线路/var/log/syslog/var/log/apache2/error.log。给我发送问题链接,我会帮忙的。
Karl Wilbur

3

在这种情况下,我发现了为什么Apache无法启动的原因。我在启动日志中找不到此痕迹,只能在启动时打印到屏幕上的输出中找到。

但是,您可以执行以下操作:脚本的最后一行/etc/apache2/apache2.conf失败了。

为什么?

它说:

Include sites-enabled/

但是,我设置的两个站点位于我自己的主目录中-该目录已加密!

因此,在启动时(Apache启动期间),这些站点不存在,并且Apache失败并拒绝运行。

解?

我创建了一个名为“ disable_sites”的小脚本,并将其符号链接到/etc/rc0.d/etc/rc6.d(关闭并重新启动):

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

我还制作了一个脚本,以在每次登录时重新启用站点,并将其作为启动程序添加到“系统设置”中。所以现在可以了!

因此,我想这里的教训是,当Apache在启动过程中莫名其妙地无法加载并且您在日志中找不到任何错误或手动启动服务器时,请检查其所需的所有目录是否可用。这可能也可以通过其他方式解决。


我很惊讶您没有在日志中找到任何错误。过去,我发现某些Apache启动错误不在我期望的日志文件中,而是在我的一个虚拟主机的日志文件中。可能是这样吗?
Marius Gedminas

apachectl configtest当以守护程序运行时,会通知您有关缺少文件访问权限的信息。
阿努加

1

对于正在寻找此问题的其他人,请检查是否运行:

chkconfig |grep httpd

你得到

httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

否则做:

chkconfig httpd on

(抱歉,ubuntu chkconfig等效于update-rc.d,请参见Ubuntu服务器的Chkconfig替代品?


0

我遇到了同样的问题,并且在本地Vagrant设置上运行Ubuntu 14。我删除了/etc/apache2/sites-enabled目录,并添加了指向我的主目录的链接,该链接当然是根据Vagrant配置安装到本地驱动器的。

原来apache找不到目录,因为尚未安装资源。我在Vagrant上重写了条款,只复制sites-enabled目录而不添加符号链接。

我还sudo update-rc.d apache2 enable按照建议执行了Karl Wilbur确保apache init启用的操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.