随着网络技术的普及、应用和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. 在GitHub上分享自己的项目

    GitHub主要是用作基于Git的分布式版本管理系统的库,可以保存和管理自己的代码,而且主要用作代码的合作开发. 注册GitHub后你就会有0.3G的免费空间,不过只能创建公开项目,这也满足代码分享的 ...

  2. Node学习(二) --使用http和fs模块实现一个简单的服务器

    1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...

  3. Job for network.service failed because the control process exited with error code问题

    Job for network.service failed because the control process exited with error code问题 因为是克隆的,所以需要重新修改静 ...

  4. 我去,你写的 switch 语句也太老土了吧

    昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意.但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:& ...

  5. Dubbo源码解析之SPI(一):扩展类的加载过程

    Dubbo是一款开源的.高性能且轻量级的Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用.智能容错和负载均衡,以及服务自动注册和发现. Dubbo最早是阿里公司内部的RPC框架,于 ...

  6. Spring事务Transactional和动态代理(三)-事务失效的场景

    系列文章索引: Spring事务Transactional和动态代理(一)-JDK代理实现 Spring事务Transactional和动态代理(二)-cglib动态代理 Spring事务Transa ...

  7. 前端每日实战:149# 视频演示如何用纯 CSS 创作一个宝路薄荷糖的动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oagrvz 可交互视频 此视频是可 ...

  8. 使用CSS实现折叠面板总结

    任务目的 深入理解html中radio的特性 深入理解CSS选择器以及伪元素的使用 任务描述 使用input的radio单选框特性结合CSS中的伪元素实现bootstrap中折叠面板(点击查看样例), ...

  9. RNN学习笔记(一):长短时记忆网络(LSTM)

    一.前言 在图像处理领域,卷积神经网络(Convolution Nerual Network,CNN)凭借其强大的性能取得了广泛的应用.作为一种前馈网络,CNN中各输入之间是相互独立的,每层神经元的信 ...

  10. jquery 的animate 的transform

    $(function(){ var t = 1000; $("#id").animate( {borderSpacing:180}, //180 指旋转度数 { step: fun ...