我正在运行具有相当自定义配置的 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)。
修复文件名后,现在一切运行正常。