如何在Linux上的bootime中启动Apache?


32

我已经在Linux机器上从源代码安装了Apache 2。apachectl -k start工作正常,但是如何在启动时启动Apache?

这是在Red Hat Linux发行版上:

Linux <主机名> 2.6.9-55.ELsmp#1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux


1
哪个分配?
2009年

Answers:


46

您要将其初始化脚本添加到适当的运行级别。通常/etc/init.d/apache2,您可以手动运行init脚本/etc/init.d/apache2 start来启动它。

在Gentoo上,您应该写:

rc-update add apache2 default

在Ubuntu / Debian上,这有效:

sudo update-rc.d apache2 defaults

在Red Hat Linux / Fedora / CentOS上,进行了一些谷歌搜索:

chkconfig --add httpd

从分发到分发,它略有不同,但是想法通常是相同的。基本上,所有这些命令都从中建立/etc/init.d/到相应运行级文件夹的符号链接/etc/


1
感谢您的回答,它使我指出了正确的方向。我总结了下面的内容。
悲伤

如果您是从源代码构建的apache,则不会有任何初始化脚本,一旦您在/etc/init.d/中正确设置了初始化脚本,您所涉及的部分就只是配置即服务。 T确实记录了有关Apache 2的信息
Jaime Hablutzel 2012年

26

这是最终为我工作的东西。这假设您是root用户。

  1. vi /etc/init.d/apache2(如下所示进行编辑)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig-添加apache2
  4. chkconfig --list apache2(以验证它是否有效)

/etc/init.d/apache2的内容:

#!/ bin / bash
#
#apache2 Apache HTTP Server的启动脚本
#
#chkconfig:3 85 15
#说明:Apache是​​一个万维网服务器。用于服务
#HTML文件和CGI。

/ usr / local / apache2 / bin / apachectl $ @

您可以通过运行/ sbin / runlevel来获取运行级别,在我的情况下为3。当然,您需要调用apachectl的版本,在我的情况下为/ usr / local / apache2 / bin / apachectl

由于以下原因:


我真的很讨厌接受自己的答案,但这是行得通的。
悲伤

这正是我所需要的!(必须在/ usr / local / apache2中重新编译并安装一个2.2.27 Apache)。非常感谢。
Christophe Muller 2014年

这行“ / usr / local / apache2 / bin / apachectl $ @”是否实际上启动了httpd?您是否需要发出:sudo chkconfig apache2 start或sudo chkconfig apache2 on?
奥拉拉

8

检查目录中是否有httpd初始化脚本/etc/rc.d。如果是,那么您只需运行以下命令即可使httpd服务在启动时启动。

chkconfig --level 345 httpd on

如果您没有init脚本,则只需将/etc/rc.local文件附加apachectl -k start(启动Apache的命令)。


4

由于已按源安装,因此/etc/init.d/目录中不会安装初始化脚本。apachectl二进制文件旨在与标准的初始化脚本选项兼容,因此您很可能可以简单地对其进行符号链接,而无需创建包装器脚本(例如ln -s / usr / local / sbin / apachectl /etc/init.d/ apache)

然后,您可以按照其他文章中概述的过程添加链接,以在正确的运行级别调用init脚本。

引用:Apache文档http://httpd.apache.org/docs/2.2/invoking.html

在启动时开始

如果希望服务器在系统重新引导后继续运行,则应将对apachectl的调用添加到系统启动文件(通常是rc.local或rc.N目录中的文件)。这将以root身份启动Apache。在执行此操作之前,请确保已正确配置服务器的安全性和访问限制。

apachectl脚本旨在像标准的SysV初始化脚本一样工作。它可以接受,启动,重新启动和停止参数,并将其转换为相应的信号到httpd。因此,您通常可以简单地将apachectl链接到适当的init目录中。但是请务必检查系统的确切要求。


感谢您的回答,它使我指出了正确的方向。我总结了下面的内容。
悲伤

1

chkconfig-级别345 httpd

将在运行级别3、4、5中启动httpd。

chkconfig --list将显示所有服务及其当前的启动运行级别。345是网络服务的典型代表。


1
这在CentOS 6上对我产生了以下错误:“ chkconfig查询只能指定一个运行级别”。但是,在命令末尾添加“ on”(“ chkconfig --levels 345 httpd on”)是一种魅力。
akame

1

在Red Hat Linux上,有一个有用的实用程序ntsysv,它使您可以选择要在当前运行级别启动的服务。使用时,您还调用来指定要编辑的运行级别--level

向下滚动到httpd,然后按,Space以便在左框中出现一个星号。然后Tab确定。按Return保存并返回外壳。

我发现默认情况下它几乎可以安装。我从来没有到过没有安装的位置。

您可能需要先安装服务,尽管将服务脚本复制到/etc/init.d然后运行:

chkconfig --add <script name>

1

这取决于您的Linux风格。假设已创建文件/etc/init.d/apache2,请尝试:

chkconfig -a apache2

要么

update-rc.d apache2 defaults

其中之一应该起作用。


1
chkconfig答案适用于Red-Hat类系统(即CentOS),而update-rc.d适用于Debian类系统(即Ubuntu)
Kyle Brandt
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.