大家好,
我有一个问题,我无法独自解决,所以我需要你的帮助。
我在 centos 7 apache 上安装了,当我询问服务状态(systemctl status httpd)时,出现了如下错误:
- 启动 Apache HTTP 服务器...
- httpd.service 操作超时。终止 httpd.service 停止超时 (2)。正在终止
- 无法启动 Apache HTTP 服务器
- 单元 httpd.server 进入失败状态
我查看了我的 error_log 文件(var/log/httpd/error_log/)并得到了这个
- SELinux 策略已启用:httpd 作为上下文 system_u:system_r:httpd_t:s0 运行
- suEXEC 机制已启用(包装:/usr/sbin/suexec)
- 摘要认证的生成秘密
- 没有来自 mod_heartmonitor 的 slotmen
- pid 文件 /run/httpd/httpd.pid 被覆盖 —— 不干净关闭之前的 Apache 运行?
- Apache/2.4.6 (CentOS) PHP/5.4.16.已配置--恢复正常操作
- 命令行:'/usr/sbin/httpd -D FOREGROUND'
是的,我已经完成了这项工作并输入了这些错误语句,所以我没有在[]中写下日期和信息。我希望这对于解决这个问题不是那么重要。
我已经尝试过了:
重新启动 systemctl --failed (确认失败)
我没有任何想法。有人能给我一些启发吗?启动后,我尝试安装 icingaweb2,但现在两者都不起作用了。
非常感谢。mira
答案1
您不需要修改 systemd 配置。这更可能是 Apache 配置错误。
您可能需要为 apache 加载 systemd 模块。在 CentOS 7 的默认 httpd 配置中,有一个文件 00-systemd.conf,该文件使用包含此信息的模块包含行拉入 apache 配置中。我敢打赌,如果您加载它,您会发现问题已经解决。
$ cat conf.modules.d/00-systemd.conf
# This file configures systemd module:
LoadModule systemd_module modules/mod_systemd.so
这种情况通常会在您从另一个不使用 systemd 的系统复制配置或从 Apache 2.2 升级到 Apache 2.4 时发生,而模块包含指令不在 httpd.conf 中。
答案2
我遇到了同样的错误([core:warn] [pid 10391] AH00098: pid file /var/run/httpd/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
),我刚刚通过用以下内容替换文件内容解决了它/usr/lib/systemd/system/httpd.service
:
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -k start
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/usr/sbin/httpd $OPTIONS -k graceful-stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
我不知道这是否与这个错误,但我从那里得到了答案。
答案3
1)尝试像这样启动apache:
/usr/sbin/httpd -DFOREGROUND -e debug
并寻找阻止它的原因。
2) 尝试查看 Apache 的堆栈回溯。您可以使用pstack
或gbd
来实现这一点,或者您可能需要使用mod_backtrace
。查看更多信息这里在下面确定 Apache 进程挂起的原因和确定 Apache 进程崩溃的原因。