随着网络技术的普及、应用和Web技术的不断完善,Web服务已经成为互联网上重要的服务形式之一。原有的客户端/服务器模式正在逐渐被浏览器/服务器模式所取代。本文将重点Apache 服务器的故障排除的技巧。 http://www.poluoluo.com/jzxy/200809/45669.html

一、检查配置文件的错误

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

1 使用apachectl configtest命令

如果配置文件有错误,可以使用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 '>' 
2 使用服务管理工具

如果配置文件有错误,也可以使用GUI工具来查看。下面是实例1在GUI工具“服务配置“中的体现,如图1 。

图1 使用GUI工具检查错误 
二、 学会使用错误日志

错误日志是最重要的日志文件,其文件名和位置取决于ErrorLog指令。Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。错误日志是你的朋友。任何错误都会在错误日志中有所记载,所以你应该首先查看它。如果你的网站空间提供者不允许访问错误日志,那么你应该考虑换一个空间提供者。学会阅读错误日志,可以快速找出问题并快速解决。

1 错误日志格式

Apache 默认的错误日志配置如下: 
ErrorLog 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 模式的程序所产生的消息

错误日志文件举例

错误日志的格式相对灵活,并可以附加文字描述。某些信息会出现在绝大多数记录中,一个典型的例子是: 
[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 获取如图2 。

图2 模块加载情况

5查看Red Hat 发布的Apache 2.x 的相关信息

执行如下的步骤可以查看Red Hat 发布的Apache 2.2.3 的一些相关信息。

(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 
    说明:被编译的模块中包含mod_so.c,表示当前的Apache 支持Dynamic Shared Objects(DSO),即用户可以在不重新编译Apache 的情况下使用APache eXtenSion(apxs)编译Apache 的第三方模块。被编译的模块中包含prefork.c 表示Red Hat 发布的Apache 是使用预派生(Profork)MPM 模式运行的。

三 解决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

Apache服务器故障排除攻略的更多相关文章

  1. linux下安装apache与php;Apache+PHP+MySQL配置攻略

    1.apache   在如下页面下载apache的for Linux 的源码包    http://www.apache.org/dist/httpd/;   存至/home/xx目录,xx是自建文件 ...

  2. 服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

    我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots 规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(YisouSp ...

  3. tomcat 服务器故障排除

    故障现象 通过浏览器访问tomcat服务器发现服务器没有响应. 问题分析检查 登陆服务器发现,TOMCAT服务器并没有宕机,服务还在. 使用JPS命令查看了一下tomcat的进程ID,获取进程ID后, ...

  4. linux服务器安全配置攻略

    引言: 最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置,供大家参考. ...

  5. (转)linux服务器安全配置攻略

    引言: 最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置,供大家参考. ...

  6. IIS网站服务器性能优化攻略

    Windows Server自带的互联网信息服务器(Internet Information Server,IIS)是架设网站服务器的常用工具,它是一个既简单而又麻烦的东西,新手都可以使用IIS架设一 ...

  7. [CodeIgniter4]故障排除和本地开发服务器

    故障排除 以下是一些常见的安装问题,以及建议的解决方法. 我必须在我的URL中包含index.php 如果``/mypage/find/apple``类似的URL``/index.php/mypage ...

  8. 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记

    首先,这本书是Linux.CN赠送的,多谢啦~ http://linux.cn/thread-12733-1-1.html http://linux.cn/thread-12754-1-1.html ...

  9. 用友U8客户端连接不上服务器全攻略

    用友U8客户端连接不上服务器全攻略 http://www.enet.com.cn2009年09月23日09:26 来自论坛 [导读]:如果网络不通,就让用户查找网络原因 检查步骤: 1.网络是否通? ...

随机推荐

  1. Leetcode 20题 有效的括号(Valid Parentheses) Java语言求解

    题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空 ...

  2. JMeter-接口测试之数据驱动

    前言 之前我们的用例数据都是配置在Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢?我们可以将 ...

  3. XXE学习(二)——DTD基础

    一.DTD简介 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. 有了DTD文档后,xml就需按照DTD中的规范来书写 DTD 可被成行地声明于 XML ...

  4. 基于JS正则实现模板数据动态渲染

    最近业务上需要动态渲染模板数据: 一.业务需求: 1.前端后端定义好模板以及变量名,根据打印机类型转换成对应sdk需要的标签模板,保存数据库 2.订单数据是前端根据支付结果获取的,最终渲染完的数据模板 ...

  5. 峰哥说技术:07-SpringBoot 正好Thymeleaf视图

    Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 07  峰哥说技术:SpringBoot 正好Thymeleaf视图 Spring Boot视图介绍 虽然 ...

  6. Unity 相机平移、旋转、缩放

    内容不多,一个脚本,直接上代码 using System.Collections; using System.Collections.Generic; using UnityEngine; publi ...

  7. Java锁的理解

    目录: 1.为什么要使用锁? 2.锁的类型? 1.为什么要使用锁? 通俗的说就是多个线程,也可以说多个方法同时对一个资源进行访问时,如果不加锁会造成线程安全问题.举例:比如有两张票,但是有5个人进来买 ...

  8. 阿里云Tomcat配置

    阿里云Tomcat配置并开放 本文可对以下问题提供参考 服务器 如何配置 Tomcat 配置 端口在监听,但是外网无法访问怎么办 注意事项: 对于阿里云服务器相对较为特殊,因为阿里云服务器除了需要在系 ...

  9. 推荐一个学习python非常好的网站

    推荐一个入门python非常好的网站(也可以学习JAVA)非常适合入门,不说多易于理解,也是比较亲民的0基础学习教程,还免费…… 网址:https://www.liaoxuefeng.com/(廖雪峰 ...

  10. 事务特性,事务的隔离级别以及spring中定义的事务传播行为

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...