无法在 CentOS 上为 Apache 2.4.2 创建可用的 init.d

无法在 CentOS 上为 Apache 2.4.2 创建可用的 init.d

我在 CentOS 上从源代码构建了 apache 2.4.2,现在正尝试创建一个 init.d 脚本来配合它。一个朋友给了我一个脚本,但它从未输出成功或失败,我不喜欢它。我在 tar 中找到了一个 httpd.init 脚本文件。它只需要更改 apache 的位置,但除此之外,它似乎可以工作。但是,它无法停止 httpd。但是它会正常启动。以下是我在 /etc/init.d/httpd 中的当前脚本。我在另一个主题上找到了:在 RHEL 中重新启动 httpd 服务会返回“停止 httpd:[FAILED]” - 我该如何解决这个问题?检查 /var/run 目录中是否创建了 pid 文件,但即使直接使用 service httpd start 或 init.d 脚本启动,也不会在那里创建该文件。我对 Linux 还不太熟悉,所以请尽可能多地解释一下。我学得很快。

有人能帮我找出这个脚本的问题吗?我正在运行 CentOS 6.3 x86_x64。

http://pastebin.com/sucmvBF6

答案1

我不喜欢你的脚本(但我也在发行版提供的脚本中多次看到过这种情况)是因为 httpd-pid 文件的位置有点硬编码。

这可能是你的问题。如果该硬编码位置和文件名与 httpd 配置不匹配(PidFilehttpd配置文件)你的 killproc 将不会做任何智能的事情。

因此,您要么应该解析您的配置文件中的 PidFile 并返回到编译后的标准,要么使用apachectl(以您的配置文件作为参数)来停止 httpd。

我认为后者更好,并且还涵盖了 pid 文件消失的情况(意外)。

答案2

您是否尝试过针对最新 Fedora 软件包init.d编写脚本?httpd

http://koji.fedoraproject.org/koji/packageinfo?packageID=280

答案3

雷米httpd 2.4.2在他的 github repo 中,尽管他似乎还没有构建它(或者它还不能工作),因为我还没有看到它的 RPM。但你也许可以拿走他的东西并构建 RPM。

相关内容