httpd не удается запустить на одном из моих серверов рабочие песни 7, потому что/run/httpd отсутствует, что означает, что httpd не может создать/run/httpd/httpd.pid и таким образом не удается запуститься.
Мой вопрос, почему/run/httpd удаляет. Я не удаляю dir.
Выполнение httpd-2.4.6-18.el7.centos.x86_64 от основного CentOS repo
У меня была аналогичная проблема, и она оказалась проблемой 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 удаляется при каждой загрузке