Car*_*ger 11 server 11.04 apache2
作为在笔记本电脑上设置开发环境的一部分,我安装了 Apache 很长时间。
但是,由于几个月前我停止了它,它不再在启动时自动启动。我在家里的笔记本电脑和工作中的笔记本电脑上都有这个问题。
我在这两种情况下,几个月前我在 Ubuntu 10.10 中安装了 Apache,使用它几个星期没有出现故障,但有一天我停止了它,现在它不再自动启动。我尝试手动运行更新 rc,但被告知 init 脚本已在使用中。
但是,手动启动/重新启动它
sudo service apache2 start/restart
Run Code Online (Sandbox Code Playgroud)
工作正常。两种情况,我都是等到升级到11.04之后,因为我希望新版本能解决这个问题。但事实并非如此!如果有人能告诉我如何让 Apache 再次自动启动,我将不胜感激。
小智 11
尝试运行
update-rc.d apache2 enable [list of run levels]
Run Code Online (Sandbox Code Playgroud)
作为根。
你可能有兴趣阅读
man update-rc.d
Run Code Online (Sandbox Code Playgroud)
Kar*_*bur 10
我根据最近遇到的相同症状的问题添加了这个答案。
首先是一些背景数据:
/etc/init.d/文件夹中的脚本来启动/停止服务。/etc/init.d/脚本的符号链接,存储在/etc/rc#.d/文件夹中,根据“运行级别”启动/停止服务。/etc/rc1.d/,运行级别 2 使用/etc/rc2.d/,依此类推。sudo update-rc.d apache2 defaults会在/etc/rc#.d/文件夹中创建适当的符号链接。因此,似乎在我的服务器上,某些东西或某个人在某个时候运行sudo update-rc.d apache2 disable了删除所有“S”符号链接并用“K”符号链接替换它们。因此在初始化任何运行级别时杀死或只是不启动 Apache。
我的解决方案只是重新启用 Apache:
sudo update-rc.d apache2 enable
Run Code Online (Sandbox Code Playgroud)
现在 Apache 在启动或切换运行级别时按预期启动/停止。
注意:
值得注意的是,仅仅sudo update-rc.d apache2 defaults再次运行是不够的,因为它看到符号链接存在并认为它们是想要的。它只是回应:
System start/stop links for /etc/init.d/apache2 already exist.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我找到了 Apache 无法启动的原因。我在启动日志中找不到任何痕迹,只能在启动时打印到屏幕上的输出中找到。
但你会发现:脚本中的最后一行/etc/apache2/apache2.conf失败了。
为什么?
它说:
Include sites-enabled/
然而,我设置的两个站点位于我自己的主目录中 - 这是加密的!
因此,在启动时(Apache 启动期间)这些站点不存在,并且 Apache 失败并拒绝运行。
解决方案?
我创建了一个名为“disable_sites”的小脚本,并将其符号链接到/etc/rc0.dand /etc/rc6.d(关闭和重新启动):
#!/bin/bash
/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload
exit 0
Run Code Online (Sandbox Code Playgroud)
我还制作了一个脚本,以便在登录时重新启用站点,并将其添加为系统设置中的启动程序。所以现在可以了!
所以,我想这里的教训是,当 Apache 在启动过程中莫名其妙地无法加载并且您在日志中找不到任何错误时,或者在手动启动服务器时,请检查它所需的所有目录是否可用。这或许也可以通过其他方式解决。