httpd 无法在我的一台运行 centos 7 的服务器上启动,因为缺少 /run/httpd,这意味着 httpd 无法创建 /run/httpd/httpd.pid 并因此无法启动。
我的问题是,为什么 /run/httpd 被删除。我没有删除目录。
从基本 CentOS 存储库运行 httpd-2.4.6-18.el7.centos.x86_64
httpd 无法在我的一台运行 centos 7 的服务器上启动,因为缺少 /run/httpd,这意味着 httpd 无法创建 /run/httpd/httpd.pid 并因此无法启动。
我的问题是,为什么 /run/httpd 被删除。我没有删除目录。
从基本 CentOS 存储库运行 httpd-2.4.6-18.el7.centos.x86_64
我有一个类似的问题,结果证明是一个 systemd 问题......不像 systemd 的问题,而是因为我不了解如何使用它。
所以,
/run
曾经在/var/run
,它曾经或多或少是持久的(如果我理解正确的话)。现在,它通常位于 fstmp 文件系统中,因此重新启动会删除/run
. 这可以通过告诉 systemd 服务需要一个/run
目录来纠正:我的
tomcat.service
文件在这样的时候失败了:它在这样的时候起作用:
我只需要执行上述操作,因为我们“推出了自己的”tomcat 以获得更新版本的tomcat。
但是,有时我们在使用 apache 时也会遇到同样的错误,但原因不同:显然,问题归结为我们在安装 httpd 之前绑定到 ldap 服务器,而 ldap 服务器有一个 apache 用户和组。当 apache 安装脚本看到用户和组时,它没有创建本地用户和组。
systemd-tmpfiles-setup.service
但是,当服务在引导时运行时,ldap 用户和组有时不可用(网络速度慢?) 。该服务是创建运行时目录的另一种方式......所以我们强制使用本地 apache 用户和组(具有与 ldap 中列出的相同的 uid/gid),一切都很好。我绝不是这方面的专家,我主要是在记录我们的高级人员在尝试使用 Puppet 编排 apache/tomcat 应用程序时发现的内容。我希望这可以帮助别人。
还有其他与此相关的帖子: Apache's PidFile directory are removed every boot