错误:启动后PID文件/run/httpd/httpd.pid不可读(还没有?)。(Apache)

4

有没有人知道什么原因会在Apache的错误日志中引起这个错误(特别是在Arch Linux上):

PID file /run/httpd/httpd.pid not readable (yet?) after start.

错误并没有阻止Apache正常运行(一旦它启动),但可能会显著减慢我的服务重新启动时间。任何指导将不胜感激。

(1) /run/httpd 存在吗(并且您想把 pid 文件放在那里吗?) (2) 对于 Apache 运行的任何用户,它是否可写? - Wrikken
/run/httpd 存在。Apache 正在以用户组 http:http 运行,但 pid 文件的模式是 root:root。为什么 systemd 会将 pid 文件创建为 root:root?有没有办法更改这个设置? - Charlie
很可能,父进程正在以root身份运行(除非您实际上将Apache作为HTTP用户而不是作为root启动,也可以参见此处有关User指令的注释)。一种选择是使用更理想的umask(使pid文件可读,但不可写入http)。 - Wrikken
父进程正在以root身份运行,但这些行位于我的httpd.conf文件中:<IfModule !mpm_netware_module> <IfModule !mpm_winnt_module> User http Group http </IfModule> </IfModule> - Charlie
我不运行archlinux(在Debian中,我会将其放在envvars中),但是这个问题似乎涉及到它(尽管建议编辑rd.d脚本是我通常想避免的)。顺便问一下,你确定它会减慢启动速度吗?我认为它只会延迟/阻止启动的检测,但Apache仍然可以运行。 - Wrikken
我不再认为它会拖慢启动过程。但这仍然是一个我想要解决的错误。 - Charlie
3个回答

2

我今天运行了一个更新,结果它也停止工作了。另一方面,在恢复到“root”之后,启动时间不再无限延长。真是让人费解。 - The Mighty Rubber Duck

1
我的看法是这个bug其实是一个特性:无论我怎么做都无法将其去掉(尝试了这里提到的以及其他一些方法),但是软件运行得很好。因此,我将其视为略微写错的成功信息——我已经开始了!

0
我遇到了这个问题:

在启动后,PID文件*.pid无法读取(尚未?)

最近几天,我的Apache服务器正在从包发行版本进行编译httpd-2.4.12.tar.gz。以下是我的httpd.service内容,按照此方式解决了我的问题。希望这可以帮助任何遇到类似问题的人。
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/apache/bin/apachectl start -DFOREGROUND
PIDFile=/run/apache/apache.pid
ExecReload=/usr/local/apache/bin/apachectl restart
ExecStop=/user/local/apache/bin/apachectl stop
PrivateTmp=True

[Install]
WantedBy=multi-user.target

1
当您在前台启动进程时,应使用Type=simple。此外,不需要PIDFile - rumpelsepp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接