Apache 错误:启动后PID文件/run/httpd/httpd.PID不可读(尚未?)。(阿帕奇)
有人知道Apache的错误日志(特别是在Arch Linux中)中出现此错误的原因吗 该错误并没有阻止Apache正常运行(一旦启动),但可能会显著降低我的服务重启时间Apache 错误:启动后PID文件/run/httpd/httpd.PID不可读(尚未?)。(阿帕奇),apache,archlinux,Apache,Archlinux,有人知道Apache的错误日志(特别是在Arch Linux中)中出现此错误的原因吗 该错误并没有阻止Apache正常运行(一旦启动),但可能会显著降低我的服务重启时间 任何指导都将不胜感激。解决方案是调整文件/usr/lib/tmpfiles.d/apache.conf。默认值是错误的。你必须改变这个 d /run/httpd 0755 root root - 到 重新启动apache后,将使用chown http:http而不是chown root:root创建PID文件 资源:
任何指导都将不胜感激。解决方案是调整文件
/usr/lib/tmpfiles.d/apache.conf
。默认值是错误的。你必须改变这个
d /run/httpd 0755 root root -
到
重新启动apache后,将使用chown http:http
而不是chown root:root
创建PID文件
资源:
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)
/run/httpd
是否存在(您想将pid文件放在哪里?(2)apache作为任何用户运行都可以写吗?/run/httpd
确实存在。apache是在user:group http:http下运行的,但是pid文件的模式是root:root。为什么systemd要将pid文件创建为root:root?是否有任何方法可以更改此设置?可能,父进程是以root
的身份运行的(除非您实际以HTTP用户而不是root用户的身份启动apache,另请参见)。一个选项是使用更理想的umask(使pid文件可读,但不能通过HTTP
写入)。父进程以root用户的身份运行,但这些行位于我的httpd.conf文件中:用户HTTP组HTTP
我不运行archlinux(在Debian中,我把它放在envvars
),但是(尽管建议编辑rd.d
脚本是我通常希望避免的事情)。顺便说一句,你确定它会减慢启动速度吗?我认为它只会延迟/阻止启动检测,但apache仍在运行。我今天运行了一个更新,它也停止了工作。另一方面,在还原到根目录后,它停止了永远的启动。如图所示。当你在前台启动一个进程时,你应该使用Type=simple
。此外,不需要使用PIDFile
。
d /run/httpd 0755 http http -
[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