在 Ubuntu 16.04 上启动 Apache:服务不起作用,但 apache2ctl 起作用

在 Ubuntu 16.04 上启动 Apache:服务不起作用,但 apache2ctl 起作用

我正在运行具有相当自定义配置的 Apache。

我注意到了这一点,service apache2 start虽然systemctl start apache2.service它不起作用,但是却能apache2ctl start正常工作。

错误消息是systemctl status apache2.service“apache2 实例未在 20 秒内启动。”但我确信使用 apache2ctl 时它会启动。奇怪的是,Apache 进程在错误发生后启动,网站运行正常。我只是无法再次使用命令来停止或重新加载...

我该如何调试为什么前两个不起作用?它们如何确定 Apache 是否已启动?

答案1

我的 apache2.conf 有一行

PidFile /var/run/httpd2.pid

但 Ubuntu 16.04 希望 pid 文件显示为/var/run/apache2/apache2.pid

/etc/init.d/apache2因此我的 Apache 启动正常,但是其中所使用的apache_wait_start() 函数service apache2 start从未看到 pid 文件并认为该进程未启动。

apache2ctl显然没有检查是否存在 pid 文件(或者可能读取它所在的 apache2.conf)。

修复文件名后,现在一切运行正常。

相关内容