Apache服务器无法自动启动

作为在我的笔记本电脑上设置开发环境的一部分,我在很长一段时间内安装了Apache。

但是,自从几个月前我停止了它,它不再在启动时自动启动。 我在家里和笔记本电脑上的笔记本电脑上都有这个问题。

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

但是,手动启动/重新启动它

sudo service apache2 start/restart 

工作良好。 在这两种情况下,我都会让它升级到11.04之后,因为我希望新版本可以解决它。 但事实并非如此! 如果有人能告诉我如何让Apache再次自动启动,我将不胜感激。

试着跑

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

作为根。

您可能有兴趣阅读

 man update-rc.d 

我根据最近遇到的相同症状的问题添加了这个答案。

首先是一些背景数据:

  • Ubuntu使用/etc/init.d/文件夹中的脚本来启动/停止服务。
  • Ubuntu对存储在/etc/rc#.d/文件夹中的/etc/init.d/脚本使用符号链接,以根据“运行级别”启动/停止服务。
  • 以“S”开头的符号链接表示应该启动该服务。
  • 以“K”开头的符号链接表示应该停止(杀死)服务。
  • 运行级别1执行/etc/rc1.d/中/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. 

在这种情况下,我发现了Apache无法启动的原因。 我在启动日志中找不到这一点,只有在启动时打印到屏幕的输出中。

但是你走了:脚本/etc/apache2/apache2.conf的最后一行失败了。

为什么?

它说:

Include sites-enabled/

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

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

解?

我创建了一个名为“disable_sites”的小脚本,并将其/etc/rc0.d链接到/etc/rc0.d/etc/rc6.d和reboot):

 #!/bin/bash /usr/sbin/a2dissite vvsshop /usr/sbin/a2dissite neoflex /etc/init.d/apache2 reload exit 0 

我还制作了一个脚本,每当我登录时重新启用这些站点,并将其作为启动程序添加到我的系统设置中。 所以现在它有效!

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

对于其他寻找(谷歌搜索)此问题的人,请检查您是否运行:

 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 Server的Chkconfig替代方案? )

我有同样的问题,我在本地Vagrant设置上运行Ubuntu 14。 我删除了/etc/apache2/sites-enabled目录,并添加了一个指向我的主目录的链接,当然根据Vagrant配置将其挂载到我的本地驱动器。

原来apache没有看到该目录,因为资源尚未安装。 我在Vagrant上重写了我的配置,只是复制sites-enabled目录而不是添加符号链接。

我也按照Karl Wilbur建议做了sudo update-rc.d apache2 enable ,以确保启用了apache init。