CentOS6下httpd重启失败提示NameVirtualHost等相关错误求助
CentOS 6 系统 httpd 启动异常问题修复
本次执行重启操作后,虽然最终输出显示启动成功,但存在3项非致命告警,不修正的话后续大概率会出现访问异常:
apr_socketaddr_info_get() failed for centos6:主机名centos6无法正常解析到对应IP,是Apache底层依赖的运行库抛出的解析报错Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName:httpd全局配置未显式声明合法的ServerName,服务启动时只能临时回退使用127.0.0.1作为默认值NameVirtualHost *:80 has no VirtualHosts:全局配置声明了80端口的名称虚拟主机规则,但全文件检索不到对应的虚拟主机配置块,属于有规则、无实际配置的无效声明
注意:CentOS 6 系统中Apache服务的正式服务名为
httpd,执行重启操作时建议使用标准命令service httpd restart,不要将服务名拼写为https,否则可能导致服务状态判断逻辑异常。
分步修复操作
- 修正主机名解析配置
编辑/etc/hosts文件,将服务器的实际静态IP与主机名centos6绑定到同一行,不要仅将主机名附加在回环地址的配置行中。修改完成后执行ping centos6验证,确认能正常解析到对应IP、可正常连通即可。 - 补充全局ServerName配置
在/etc/httpd/conf/httpd.conf的全局配置段中,添加如下配置项:
该配置可消除启动时的全限定域名识别告警,同时避免服务默认仅绑定回环地址,导致外部请求无法正常响应的问题。ServerName centos6:80 - 对齐虚拟主机配置逻辑
根据实际使用场景二选一调整,消除NameVirtualHost相关告警:- 若需要启用基于名称的虚拟主机:检查所有虚拟主机的配置声明格式,确保80端口的虚拟主机全部使用
<VirtualHost *:80>格式,与全局的NameVirtualHost *:80规则完全匹配,不要出现虚拟主机绑定其他IP、端口的不匹配情况。 - 若不需要启用虚拟主机功能:直接注释掉
httpd.conf中NameVirtualHost *:80的配置行,移除无实际逻辑支撑的无效配置声明。
- 若需要启用基于名称的虚拟主机:检查所有虚拟主机的配置声明格式,确保80端口的虚拟主机全部使用
- 校验站点目录权限
确认提前创建的站点目录及下属的index.html文件,对httpd运行用户(apache)开放可读、目录遍历权限,避免服务启动完成后,访问站点时触发403权限错误。
全部配置调整完成后,重新执行重启命令验证,正常情况下所有告警都会消失,服务可稳定对外提供服务。
内容的提问来源于stack exchange,提问作者Ahmed Bannour
相关产品推荐
相关产品推荐

