我在 Amazon Linux AMI 版本 2012.03 上安装了 apache2。我能够手动启动它,没有任何错误/etc/init.d/httpd start
。但是,它在机器启动时不会自动启动。
看来我的 rc*.d 目录中的所有内容都已正确配置。结果如下find /etc/rc.d -name "*httpd*" | xargs ls -l
:
-rwxr-xr-x 1 root root 3371 Feb 16 2012 /etc/rc.d/init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc0.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc1.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc2.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc3.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc4.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc5.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc6.d/K15httpd -> ../init.d/httpd
我知道我可以将/etc/init.d/httpd start
命令放入/etc/rc.local
,但这不是一种解决方法吗?为什么它没有自动启动?rc*.d 目录中的其他内容在启动时启动正常(mongod、postfix 等)。谢谢!
答案1
使用 chkconfig 来管理您希望此服务启动的运行级别。
通常chkconfig httpd on完成工作。
答案2
您没有任何“S”链接。所有“K”都仅关闭。添加同名的链接,只需将 K 替换为 S 即可。
“通常,系统会启动以字母“S”开头的命令并停止以字母“K”开头的命令。以字母“K”开头的命令仅在系统将运行级别从较高级别更改为较低级别时运行。以字母“S”开头的命令在所有情况下都会运行。”
如果使用 chkconfig,请参阅“man chkconfig”。对于您的情况:
chkconfig --level 2345 httpd on
应该做。