Centos 7 上的 Apache 故障无法启动

Centos 7 上的 Apache 故障无法启动

大家好,

我有一个问题,我无法独自解决,所以我需要你的帮助。

我在 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 的堆栈回溯。您可以使用pstackgbd来实现这一点,或者您可能需要使用mod_backtrace。查看更多信息这里在下面确定 Apache 进程挂起的原因确定 Apache 进程崩溃的原因

相关内容