由于缺少 /run/httpd,httpd 无法启动

由于缺少 /run/httpd,httpd 无法启动

在我的其中一台运行 centos 7 的服务器上,httpd 无法启动,因为缺少 /run/httpd,这意味着 httpd 无法创建 /run/httpd/httpd.pid,因此无法启动。

我的问题是,为什么要删除 /run/httpd。我没有删除该目录。

从基础 CentOS 仓库运行 httpd-2.4.6-18.el7.centos.x86_64

答案1

我遇到过类似的问题,结果发现是 systemd 问题......不是 systemd 的问题,而是我不了解如何使用它。

因此,/run以前它位于 中/var/run,并且过去或多或少具有持久性(如果我理解正确的话)。现在,它通常位于 fstmp 文件系统中,因此重新启动会删除 中的所有内容/run。可以通过告诉 systemd 服务需要目录来更正此问题,/run如下所示:

我的tomcat.service文件出现以下错误:

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

Environment=CATALINA_PID=/run/tomcat/tomcat.pid
Environment=CATALINA_HOME=/usr/share/tomcat8/
Environment=CATALINA_BASE=/usr/share/tomcat8/
Environment='CATALINA_OPTS=-server -XX:+UseParallelGC -Dsun.net.inetaddr.ttl=30'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/usr/share/tomcat8/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
PIDFile=/run/tomcat/tomcat.pid
SuccessExitStatus=143

User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

像这样的时候它就起作用了:

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

Environment=CATALINA_PID=/run/tomcat/tomcat.pid
Environment=CATALINA_HOME=/usr/share/tomcat8/
Environment=CATALINA_BASE=/usr/share/tomcat8/
Environment='CATALINA_OPTS=-server -XX:+UseParallelGC -Dsun.net.inetaddr.ttl=30'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

RuntimeDirectory=tomcat
RuntimeDirectoryMode=775
ExecStart=/usr/share/tomcat8/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
PIDFile=/run/tomcat/tomcat.pid
SuccessExitStatus=143

User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

我只需要做上述操作,因为我们“推出了我们自己的” tomcat 以获得它的较新版本。

然而,我们有时使用 apache 时也遇到了同样的错误,但原因不同:显然,问题归结于我们在安装 httpd 之前绑定到 ldap 服务器,而 ldap 服务器有一个 apache 用户和组。当 apache 安装脚本看到用户和组时,它不会创建本地用户和组。但是,当服务在systemd-tmpfiles-setup.service启动时运行时,ldap 用户和组有时不可用(网络速度慢?)。该服务是创建运行时目录的另一种方式...因此,我们强制使用本地 apache 用户和组(具有与 ldap 中列出的相同的 uid/gid),一切正常。

我绝不是这方面的专家,我主要记录我们的高级人员在尝试使用 Puppet 编排 apache/tomcat 应用程序时发现的内容。我希望这对某些人有所帮助。

还有其他与此相关的帖子: Apache 的 PidFile 目录每次启动时都会被删除

相关内容