httpd не запускается на одном из моих серверов под управлением centos 7 из-за отсутствия / run / httpd, что означает, что httpd не может создать /run/httpd/httpd.pid и, следовательно, не запускается.
У меня вопрос, почему удаляется / run / httpd. Я не удаляю каталог.
Запуск httpd-2.4.6-18.el7.centos.x86_64 из базового репозитория CentOS
У меня была аналогичная проблема, и она оказалась проблемой systemd ... не как проблема с systemd, а как то, что я не понимаю, как с ней работать.
Так, /run
раньше был в /var/run
, а раньше было более-менее настойчиво (если я правильно понимаю). Теперь он часто находится в файловой системе 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
Мне нужно было сделать вышеупомянутое только потому, что мы «накатили нашего собственного» кота, чтобы получить его более новую версию.
Однако мы иногда была такая же ошибка с apache, но с другой причиной: по всей видимости, проблема сводилась к тому, что мы связались с сервером ldap до установки httpd, а на сервере ldap есть пользователь и группа apache. Когда сценарии установки apache видели пользователя и группу, они не создавали локального пользователя и группу. Однако пользователь и группа ldap иногда были бы недоступны (медленная сеть?), Когда systemd-tmpfiles-setup.service
служба запускается во время загрузки. Эта служба - другой способ создания каталога времени выполнения ... Итак, мы принудительно создали локального пользователя и группу apache (с тем же uid / gid, что указаны в ldap), и все стало золотым.
Я никоим образом не являюсь экспертом в этом вопросе, я в основном документирую то, что наш старший парень обнаружил, пытаясь организовать приложения apache / tomcat с помощью Puppet. Я надеюсь, что это поможет кому-то.
Есть и другой пост, связанный с этим: Каталог Apache PidFile удаляется при каждой загрузке