httpd, не запускающийся, потому что/run/httpd отсутствует

httpd не удается запустить на одном из моих серверов рабочие песни 7, потому что/run/httpd отсутствует, что означает, что httpd не может создать/run/httpd/httpd.pid и таким образом не удается запуститься.

Мой вопрос, почему/run/httpd удаляет. Я не удаляю dir.

Выполнение httpd-2.4.6-18.el7.centos.x86_64 от основного CentOS repo

2
задан 18 November 2014 в 10:27
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, но с другой причиной: по всей видимости, проблема сводилась к тому, что мы связались с сервером ldap перед установкой httpd, а ldap На сервере есть пользователь и группа apache. Когда сценарии установки apache видели пользователя и группу, они не создавали локального пользователя и группу. Однако пользователь и группа ldap иногда были бы недоступны (медленная сеть?), Когда служба systemd-tmpfiles-setup.service запускается во время загрузки. Эта служба - другой способ создания каталога времени выполнения ... Итак, мы принудительно создали локального пользователя и группу apache (с тем же uid / gid, что указаны в ldap), и все стало золотым.

Я никоим образом не являюсь экспертом в этом вопросе, я в основном документирую то, что наш старший парень обнаружил при попытке организовать приложения apache / tomcat с помощью Puppet. Я надеюсь, что это поможет кому-то.

Есть и другие сообщения, связанные с этим: Каталог Apache PidFile удаляется при каждой загрузке

3
ответ дан 3 December 2019 в 10:44

Теги

Похожие вопросы