apache httpd服务 错误排除方法

一、检查配置文件的错误

        Apache服务器的设置文件位于/etc/httpd/conf/目录下,传统上使用三个配置文件httpd.conf,access.conf和srm.conf,来配置Apache服务器的行为。在新版本的Apache中,所有的设置都被放在了httpd.conf中,因此只需要调整这个文件中的设置,其中99% Apache服务器错误是配置文件有误引起

如果配置文件有错误,可以使用apachectl configtest命令,apachectl configtest命令可以检查出所有语法错误和逻辑错误。
实例1
下面是一个配置文件样例片断:    

<Location /server-status> 
    SetHandler server-status 
    Order deny,allow 
    Deny from all 
    Allow from 192.168.149. 
</Location>

如错误写成了“<Location /server-status”少写了一个 >。 apachectl configtest命令会检查到这个问题,输出如下:


apachectl configtest
 Syntax error on line 918 of /etc/httpd/conf/httpd.conf: 
<Location> directive missing closing '>' 

二、 学会使用错误日志

        错误日志是最重要的日志文件,其文件名和位置取决于ErrorLog指令。Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。

1、错误日志格式
Apache 默认的错误日志配置如下:
ErrorLog logs/error_log   #默认是当前文件夹下的./logs/error_log 文件
LogLevel warn
配置错误日志相对简单,只要说明日志文件的存放路径和日志记录等级即可。格式为:
日期和时间 错误等级 错误消息

2、日志记录等级
下面着重说说日志记录等级,包括八个级别。
1 级 英文名称 emerg ,出现紧急情况使得该系统不可用,如系统宕机等
2 级 英文名称 alert ,需要立即引起注意的情况
3 级 英文名称 crit ,危险情况的警告
4 级 英文名称 error ,除了emerg 、alert、crit 的其他错误
5 级 英文名称 warn。 警告信息
6 级 英文名称 notice ,需要引起注意的情况,但不如error、warn 重要
7 级 英文名称 info ,值得报告的一般消息
8 级 英文名称 debug, 由运行于debug 模式的程序所产生的消息

3、错误日志文件举例
错误日志的格式相对灵活,并可以附加文字描述。某些信息会出现在绝大多数记录中,一个典型的例子是:
[Wed Oct 11 14:32:52 2007]    [error]     [client 127.0.0.1]    client denied by server configuration: /export/home/live/ap/htdocs/test
第一项是错误发生的日期和时间;

第二项是错误的严重性,LogLevel指令使只有高于指定严重性级别的错误才会被记录;

第三项是导致错误的IP地址;

第四项是信息本身

在此例中,服务器拒绝了这个客户的访问。服务器在记录被访问文件时,用的是文件系统路径,而不是Web路径。错误日志中会包含类似上述例子的多种类型的信息。此外,CGI脚本中任何输出到stderr的信息会作为调试信息原封不动地记录到错误日志中。用户可以增加或删除错误日志的项。但是对某些特殊请求,在访问日志(access log)中也会有相应的记录,比如上述例子在访问日志中也会有相应的记录,其状态码是403,因为访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。

4 检查Apache服务器模块问题
      如果Apache服务器可以启动,但是某些功能无法实现,比如前面介绍的Webdav 功能,通常是提供这个功能的模块没有加载,此时可以使用命令:“httpd -M”查看模块加载情况。

     它会输出一个已经启用的模块列表,包括静态编译在服务器中的模块和作为DSO动态加载的模块。也可以使用浏览器访问http://192.168.1.12/server-info/?list 获取如图

5、查看Apache 2.x 的相关信息

(1)查看编译配置参数
使用httpd -V 命令,

  
  
httpd - V Server version: Apache / 2.2 . 3 Server built: Nov 29 2006 06 : 33 : 19 Server ' s Module Magic Number: 20051115:3 Server loaded: APR 1.2 . 7 , APR - Util 1.2 . 7 Compiled using : APR 1.2 . 7 , APR - Util 1.2 . 7 Architecture: 32 - bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with.... - D APACHE_MPM_DIR = " server/mpm/prefork " - D APR_HAS_SENDFILE - D APR_HAS_MMAP - D APR_HAVE_IPV6 (IPv4 - mapped addresses enabled) - D APR_USE_SYSVSEM_SERIALIZE - D APR_USE_PTHREAD_SERIALIZE - D SINGLE_LISTEN_UNSERIALIZED_ACCEPT - D APR_HAS_OTHER_CHILD - D AP_HAVE_RELIABLE_PIPED_LOGS - D DYNAMIC_MODULE_LIMIT = 128 - D HTTPD_ROOT = " /etc/httpd " - D SUEXEC_BIN = " /usr/sbin/suexec " - D DEFAULT_PIDLOG = " logs/httpd.pid " - D DEFAULT_SCOREBOARD = " logs/apache_runtime_status " - D DEFAULT_LOCKFILE = " logs/accept.lock " - D DEFAULT_ERRORLOG = " logs/error_log " - D AP_TYPES_CONFIG_FILE = " conf/mime.types " - D SERVER_CONFIG_FILE = " conf/httpd.conf "

从以上的输出可以了解Apache 服务器版本和编译的参数。

(2)查看已经被编译的模块

使用httpd -l命令,

  
  
httpd - l Compiled in modules: core.c prefork.c http_core.c mod_so.c
   

三、解决Apache 服务器故障的步骤

1 检查错误日志!
 
    Apache服务器在遇到问题时会尽力做到对你有所帮助。在许多情况下,它会通过在错误日志中写入一条或多条消息来提供一些细节。有时这已经足够让你自己诊断和解决问题了(比如文件权限或类似的问题)。错误日志的默认位置在/usr/local/apache2/logs/error_log ,但是最后还是看看配置文件中的ErrorLog指令以确认错误日志在你服务器上的确切位置。

2 再一次检查语法

    Apache 配置文件是httpd.conf 长度通常在80-990行,几乎99%Apache 故障是语法错误引起的。可以手工检查/etc/httpd/conf/httpd.conf,也可以通过浏览器输入:http://192.168.1.12/server-info?config 获取当前配置文件,如图3 。


图3 当前Apache服务器配置文件

说明:此时系统会自动添加行号。

3 察看Apache的FAQ!

    最新版本的Apache常见问题列表总是可以从Apache主站点得到,http://httpd.apache.org/docs/2.2/faq/

4 察看Apache bug数据库

    大多数报告给Apache项目组的问题都记录在bug数据库中。在你添加一个新bug之前,请务必检查已有的报告(打开的和关闭的)。如果你发现你的问题已经被报告了,请不要添加一个"我也是"那样的报告。如果原始报告还没有关闭,我们建议你经常周期性地来看看它。你也可以考虑与最初的提交者接触,因为有可能会在邮件交流中发现没有记录在数据库中的问题。

5 在某个用户论坛中提问

    Apache拥有一个活跃的、愿意共享知识的用户社区。参与这个社区通常是获得解答的最快最好的办法。
    Apache用户邮件列表:http://httpd.apache.org/userslist.html

6 提交问题报告到bug数据库

    如果做了以上几个合适的步骤而没有得到解答,那么请务必让httpd的开发者了解这个问题,到这里(http://httpd.apache.org/bug_report.html )提交bug报告。

7 获取商业支持

    可以从下面的网址获取商业网站服务商的技术支持:http://www.apache.org/info/support.cgi

8 了解Apache服务器的网络资源的相关文档

    Apache 服务器是使用最广泛的web服务器,它的版本很多。从以下的网络资源中可以获取大量有用的提示可以帮助您快速解决故障和建立web服务。
通用Apache文档:http://httpd.apache.org/docs-2.0
Apache FAQ:http://www.apache.org/foundation/faq.html
1.3 版本FAQ:http://httpd.apache.org/docs/misc/FAQ.html
邮件列表:http://httpd.apache.org/userslist.html
红帽企业版 Linux 5 部署指南:
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/zh-CN/Deployment_Guide
/index.html


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CentOS 7上启动httpd服务失败可能有多种原因,以下是一些常见的解决方法: 1. 检查httpd配置文件是否正确:可以使用命令`httpd -t`检查httpd配置文件是否正确,如果有错误,需要修改配置文件。 2. 检查端口是否被占用:可以使用命令`netstat -tlnp`查看端口是否被占用,如果被占用需要释放端口或修改httpd配置文件中的端口号。 3. 检查httpd服务是否安装:可以使用命令`rpm -qa | grep httpd`查看httpd服务是否安装,如果没有安装需要先安装httpd服务。 4. 检查httpd服务是否启动:可以使用命令`systemctl status httpd`查看httpd服务是否启动,如果没有启动需要使用命令`systemctl start httpd`启动httpd服务。 5. 检查SELinux是否开启:如果SELinux开启,可能会导致httpd服务启动失败,需要使用命令`setenforce 0`关闭SELinux,或者修改SELinux策略。 以上是一些常见的解决方法,如果以上方法都无法解决问题,可以查看httpd服务日志文件,找到具体的错误信息,然后根据错误信息进行解决。 ### 回答2: CentOS 7上的httpd服务启动失败可能有多种原因。以下列出了一些常见问题和解决方法: 1. 端口被占用 当httpd试图占用已被其他程序占用的端口时会启动失败。此时可以通过使用`netstat -tunlp`命令检查端口占用情况,然后杀死占用该端口的进程及时释放端口。或者修改httpd的配置文件,将端口修改为未被占用的端口。 2. 配置文件错误 有时httpd服务配置文件中可能出现错误,例如语法错误或路径错误等等。在启动httpd服务之前,可以使用`apachectl configtest`命令进行检查,如果输出“Syntax OK”,则表示配置文件没有错误。如果出现错误,则需要根据错误提示进行相应修改。 3. 依赖关系问题 如果httpd依赖的其他程序或库缺失,也会导致启动失败。可以通过使用`systemctl status httpd.service`命令来查看httpd服务状态,如果输出“Failed to start”或“Loaded: failed”,则需要检查依赖关系是否完整。 4. SELinux问题 当SELinux启用时,有时会导致httpd服务启动失败。在这种情况下,可以在SELinux上禁用httpd服务,或者修改httpd配置文件解决SELinux相关的问题。 5. 用户权限问题 httpd服务的启动可能需要特定的用户权限。如果使用的用户权限不够,则无法启动。可以尝试使用root用户启动httpd服务,或者根据需要修改相应的用户权限。 ### 回答3: CentOS 7中的Apache HTTP服务器httpd)是一个常见的Web服务器,如果遇到httpd服务启动失败的情况,可能会影响服务器正常的工作和对外服务的稳定性。本文将提供一些可能会导致httpd服务启动失败的原因,并给出相应的解决方法。 1. 端口被占用 如果端口被其他进程占用,httpd服务就无法启动。可以通过 netstat -tulpn 命令查看端口占用情况,并杀死占用该端口的进程。如果端口被 httpd 服务自身占用,可以通过 systemctl restart httpd 命令重启 httpd 服务;如果是其他进程占用了端口,可以通过 kill 命令杀死该进程或更改 httpd.conf 文件配置,将 httpd 服务的端口改为其他空闲端口,重新启动。 2. 配置文件错误 httpd 服务配置文件通常是 /etc/httpd/conf/httpd.conf,如果其中存在语法错误、权限问题或者其它配置错误,可能会导致 httpd 服务启动出错。可以通过将 httpd.conf 文件备份后删掉,重新执行 yum install httpd 命令安装 httpd 服务,然后手动修改 httpd.conf 文件,逐个检查每个配置项是否正确,确认无误后重启 httpd 服务。 3. SELinux 问题 SELinux 是 CentOS 7中提供的一种安全模块,它可以对系统文件和应用程序进行安全管控。如果 SELinux 配置不正确,可能会阻止 httpd 服务正常启动。可以通过修改 /etc/selinux/config 文件中 SELINUX=disabled 来暂时关闭 SELinux,然后重新启动 httpd 服务;或者一个更优的方式是,根据日志确定问题原因,使用命令 semanage 或者 setsebool 等工具将相关目录或者配置加入到 SELinux 许可列表中,重新启动 httpd 服务,以恢复服务正常工作。 4. 防火墙问题 如果你的 CentOs 7 服务器启用了防火墙,有可能会导致 httpd 服务启动失败。可以通过检查防火墙相关配置来确定问题原因解决方案是修改防火墙规则,将端口 80 或者 443 等 httpd 服务需要的端口放行,重新启动 httpd 服务。 总之,当遇到 httpd 服务启动失败时,不要慌张,可以先通过日志或者执行命令查看错误信息,找到错误原因,然后根据错误原因一步一步解决问题。在解决问题过程中注意备份原始配置文件,以免造成不必要的损失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值