我在Linux机器上从源代码安装了Apache 2。 apachectl -k start
可以正常工作,但是如何让Apache在启动时启动呢?
这是在Red Hat Linux发行版上:
Linux <hostname> 2.6.9-55.ELsmp#1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux
您想要将其init脚本添加到适当的运行级别。 init脚本通常是/etc/init.d/apache2
,你可以手动运行/etc/init.d/apache2 start
来启动它。
在Gentoo上,你会写:
rc-update add apache2 default
在Ubuntu / Debian上这个工作:
sudo update-rc.d apache2 defaults
在Red Hat Linux / Fedora / CentOS上,一个小小的Google显示:
chkconfig --add httpd
从分配到分配有一点变化,但这个想法通常是一样的。 基本上,所有这些命令都会从/etc/init.d/
创build一个符号链接到/etc/
相应的运行级文件夹。
这是最后为我工作的。 这假定你是root用户。
/etc/init.d/apache2的内容:
#!/斌/庆典 # Apache HTTP服务器的#apache2启动脚本 # #chkconfig:3 85 15 #说明:Apache是一个万维网服务器。 它被用来服务\ #HTML文件和CGI。 / usr / local / apache2 / bin / apachectl $ @
你可以通过运行/ sbin / runlevel来得到运行级别,在我的情况下是3.当然你需要调用你的apachectl版本,在我的情况下是/ usr / local / apache2 / bin / apachectl
感谢以下内容:
检查/etc/rc.d
目录中是否有httpd
init脚本。 如果是的话,那么你可以运行下面的命令来启动httpd服务在启动时启动。
chkconfig --level 345 httpd on
如果您没有init脚本,那么只需在/etc/rc.local
文件中添加apachectl -k start
(启动Apache的命令)即可。
正如你已经安装的源代码那样,在/etc/init.d/目录下将不会安装init脚本。 apachectl二进制文件被devise为与标准的初始化脚本选项兼容,所以你可以简单地将其链接到它,而不是创build一个包装脚本(例如ln -s / usr / local / sbin / apachectl /etc/init.d/阿帕奇)
然后,您可以按照其他post中概述的步骤添加链接,以在正确的运行级别调用init脚本。
引用:Apache文档http://httpd.apache.org/docs/2.2/invoking.html
从启动时开始
如果您希望服务器在系统重新启动后继续运行,则应该将apachectl调用添加到系统启动文件(通常是rc.local或rc.N目录中的文件)。 这将以root身份启动Apache。 在执行此操作之前,请确保您的服务器正确configuration了安全和访问限制。
apachectl脚本被devise为像一个标准的SysV初始化脚本; 它可以将参数启动,重新启动并停止,并将它们转换成适当的信号给httpd。 所以你通常可以简单的把apachectl链接到相应的init目录下。 但一定要检查系统的确切要求。
chkconfig –levels 345 httpd
将在runlevels 3,4,5中启动httpd。
chkconfig –list将显示所有服务及其当前启动运行级别。 345是networking服务的典型代表。
在Red Hat Linux上有一个叫做ntsysv的有用的工具,它可以让你select你想在你的当前运行级别启动的服务。 您也可以使用--level
启动该实用程序时指定要编辑的运行级别。
向下滚动到httpd并按空格 ,左边的框中出现一个星号。 然后点击确定。 按Return键保存并返回到shell。
我发现它默认安装的非常多。 我从来没有处于没有安装的位置。
您需要首先安装服务,但将服务脚本复制到/etc/init.d,然后运行:
chkconfig --add <script name>
这取决于你的Linux的味道。 假设文件/etc/init.d/apache2已经创build,请尝试:
chkconfig -a apache2
要么
update-rc.d apache2 defaults
其中之一应该工作。