httpd无法启动运行centos 7的服务器之一,因为/ run / httpd丢失,这意味着httpd无法创build/run/httpd/httpd.pid,从而无法启动。
我的问题是,为什么/ run / httpd被删除。 我不删除目录。
从基本CentOS仓库运行httpd-2.4.6-18.el7.centos.x86_64
我也有类似的问题,结果是一个systemd问题…不像systemd的问题,但在我不明白如何使用它。
所以, /run曾经是在/var/run ,它曾经是或多或less持久(如果我理解正确)。 现在,它通常在fstmp文件系统中,所以重新启动会删除/run中的所有内容。 这可以通过告诉systemd这个服务需要一个/run dir来纠正:
我的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安装脚本看到用户和组时,它并没有创build本地用户和组。 但是,在启动时运行systemd-tmpfiles-setup.service服务时,ldap用户和组有时不可用(networking速度慢?)。 该服务是一个不同的方式来创build运行时目录…所以我们强制一个本地apache用户和组(与ldap中列出的相同的uid / gid),一切都是黄金。
我绝不是这方面的专家,我主要logging我们的高级人员在尝试使用Puppet编排apache / tomcat应用程序时发现的内容。 我希望这可以帮助别人。
还有一个和这个有关的post: Apache的PidFile目录在每次启动时都被删除