Назад | Перейти на главную страницу

httpd не запускается из-за отсутствия / run / httpd

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 удаляется при каждой загрузке