apache故障排除全攻略
- 格式:docx
- 大小:26.22 KB
- 文档页数:9
Red Hat Linux enterprise 5start httpd faildlinux httpd: httpd 启动 failed我在虚拟机里面遇到此问题,试了很多方法都没法启动,后来发现,问题出在/etc/httpd/conf/目录里面有一个叫httpd.conf的文件。
在同一目录下还有另外一个叫httpd.conf.bak,只要把httpd.conf.bak的内容复制httpd.conf文件中,覆盖原来的内容就能启动了,到shell里运行service httpd start,惊喜发现,start httpd ok。
启动httpd 确定。
用service httpd status可以看到httpd正运行中。
心情舒服啊。
虽然只是个很菜的新手问题,嘿嘿,但我还是写下来,或许哪个新手也遇到此问题能帮上忙。
后来我又详细排查了一下是什么问题导至的。
结果是意料之外啊。
原来是使用了 [系统]-[管理]-[服务器设置]-[HTTP]工具进行设置,然后保存之后导至。
用了这个工具后里面的设置内容有比较多的地方跟初始设置是不一样的。
我发现修改/etc/httpd/conf/httpd.conf文件可以解决问题:1.将ServerName这行注释掉,即行最前面加个#号。
2.将ServerAdmin 这行要写完整。
如:ServerAdmin admin@3.将Lockfile 的文件路径弄正确,或都干脆注释掉(行首加#)4.将Loadmodule .........Loadmodule..................#这里很多行。
省略!其实这些都是错误的,应该是HTTP本身代码问题导致。
我们用初始文件替换。
Loadmodule..... Chinaz^com用/etc/httpd/conf/httpd.conf.bak里面的相应内容替换掉内容如下:OK,这样应该可以启动httpd服务了,请在shell里使用命令service httpd start来启动服务另外需要注意的是,这些只改了一小部分内容,很多选项已经跟初始httdp.conf不一样了,请大家详细看看相关功能的开启状态,按需要更改即可。
圆嘟嘟选择的主机搭配是Windows 2003 Server+Apache+PHP+Mysql,当网站初步上线测试后,我在主机运维方面遇到了很多问题,这里先说一个比较罕见,而且也让我头疼好几天的问题,就是APACHE在运行一段不定时的时间后,就自动停止了,Windows系统日志显示是:Apache2 服务因 1 (0x1) 服务性错误而停止。
而APACHE的error日志里最后的内容如下:[Thu Mar 21 01:08:09.187500 2013] [mpm_winnt:notice] [pid 2988:tid 1696] AH00358: Child: Process exiting because it reached MaxConnectionsPerChild. Signaling the parent to restart a new child process.[Thu Mar 21 01:08:09.203125 2013] [mpm_winnt:notice] [pid 2992:tid 436] AH00424: Parent: Received restart signal -- Restarting the server.[Thu Mar 21 01:08:11.000000 2013] [ssl:warn] [pid 2992:tid 436] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache][Thu Mar 21 01:08:11.187500 2013] [mpm_winnt:notice] [pid 2988:tid 1696] AH00364: Child: All worker threads have exited.别的内容似乎都正常,除了SSL的警告外,一开始是搞不清楚状况,以为是SSL 配置有问题,就对SSL进行了配置,但配置完以后,是不提示“Session Cache is not configured”了,但故障依然,我又继续从APACHE的错误日志中寻找线索,这次我用到的关键字是“MaxConnectionsPerChild”,这个配置可能很多人也不知道是什么,这是APACHE2.4才改成这样的,原来叫MaxRequestsPerChild,意思是指子进程的最大连接数,当达到设置值以后,APACHE就会结束当前的子进程,释放内存,再开启新的子进程,这个设置是在httpd-mpm.conf里面的,因为是运行在Windows环境下,所以对就的是WinNT MPM,原来的设置是:ThreadsPerChild 250MaxConnectionsPerChild 10000都说为了防止内存溢出,MaxConnectionsPerChild不要设成0,但可以考虑设成小的数值,于是我设成500,继续测试,但不管我改成多少,APACHE还是依然不定时就挂了,依照网上有关的方法我全试了个遍,终究没有解决这个问题,我都动了重置系统再来的念头了...在解决这个问题的过程中,我发现系统运行的非常非常慢,打开任务管理器一看,内存居然占了3G多,才发现其实APACHE其实并没有结束掉子进程,内存一直占用着并没有得到翻译,我好像得到点启发了,看来这压根跟MaxConnectionsPerChild的设置没多大的联系,而是在达到子进程限定的线程数后,当APACHE尝试关闭当前子进程再重新开启新的子进程时发生了什么事情让它这么做失败了呢?我又打开了Windows的日志查看器,终于在应用程序日志里找到一条跟APACHE出错同时产生的日志,内容是“事件 ID ( 487 )的描述(在资源( Zend Optimizer+ )中)无法找到。
常见错误汇总1.防盗链及地址重写1.1让Apache支持rewrite模块在编译源码安装apache时,加入选项–enable-rewrite1.2找到mod_rewrite.c文件进入apache源码目录下找到mod_rewrite.c文件【Http-2.2版本一般在/modules/mappers/】[root@localhost ~]# cd httpd-2.2.7/modules/mappers/1.3编译mod_rewrite.c文件说明:/usr/local/apache/为apache安装路径,apxs必须为绝对路径。
[root@localhost mappers]# /usr/local/apache/bin/apxs -c mod_rewrite.c[root@localhost mappers]# /usr/local/apache/bin/apxs -i -a -n mod_rewrite mod_1.4查看是否生成mod_rewrite.so[root@localhost mappers]# ls /usr/local/apache/modules如果有mod_rewrite.so,说明编译成功。
1.5修改httpd.conf加入加载mod_rewrite模块。
LoadModule rewrite_module modules/mod_rewrite.so###################################################如果出现这个错误:Syntax error on line 329 of /usr/local/apache2/conf/httpd.conf:Can`t loacte API module staructure `mod_rewrite_module` in file/usr/local/apache2/modules/mod_rewrite.so:/usr/local/apache2/lib/libapr-0.so.0:undefined symbol:mod_rewrite_module修改http.conf原来:httpd.conf里面写的mod_rewrite_module改成rewrite_module如果重启apache出现这个错误module rewrite_module is built-in and can`t be loaded表示模块是内建的,不用再调入,注释掉#LoadModule rewrite_module modules/mod_rewrite.so#####################################################1.6加入防盗链及重写规则说明:为测试的网站域名,改成自己的网站域名即可。
APACHE服务器500错误解决⽅法APACHE服务器500错误解决⽅法与强制跳转遇到500问题可以如下解决1.APACHE没开启rewrite模块。
解决办法:编辑apache的http.conf⽂件,找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前⾯的#,重启APACHE.2 .htaccess⽂件有错误。
通常是因为写⼊了不合语法的规则。
解决办法:删除该⽬录中的.htaccess即可。
如果还是不⾏,再删除上级⽬录的.htacess,如此反复。
3,权限问题,同时查看/var/log/apache2/error.log⽇志。
于是我找到了这么⼀个东西1在httpd.conf⽂件⾥使下⾯模块⽣效LoadModule rewrite_module modules/mod_rewrite.so2httpd.conf配置⽂件或者是在httpd-vhost.conf⽂件⾥修改<Directory "C:/Apache2.2/docs/">Options Indexes FollowSymLinksAllowOverride All//上⾯是http-https时需要添加的语句Order allow,denyAllow from all</Directory>3在⽹站根⽬录下⾯添加该⽂件“.htaccess” ⽬录访问控制⽂件,并添加如下内容:RewriteEngine on #开启重定向引擎RewriteBase / #可以不设置RewriteCond %{SERVER_PORT} !^443$ #⾮443端⼝的数据全部进⾏重定向RewriteEngine on #开启重定向引擎RewriteBase / #可以不设置RewriteCond %{SERVER_PORT} !^443(或者其他端⼝)$ #⾮443端⼝的数据全部进⾏重定向该 .htaccess 需要放置在⽹站的根⽬录下⾯才可以⽣效5、查看⼀下httpd.conf,如果以下⼏项给注释掉了,就打开这些选项:LoadModule rewrite_module libexec/mod_rewrite.soAddModule mod_rewrite.cg纠结了半天,才发现问题的症结:原来的PHP 关闭了错误的显⽰。
Apache启动不了的解决方法(2)Apache启动不了的解决方法3.可以看到有个error.log的文件.4.打开该文件,到文件最后,可以详细了解到启动失败的原因。
5.针对不同的失败原因,寻求解决之策。
解决案例1.在xampp控制面板启动apache不成功2.进入error.log查看,显示”make_sock: could not bind to address 0.0.0.0:80no listening sockets available, shutting down”3.可以看出,这是在侦听80端口时出错,可能80端口已经被其它应用程序占用了。
apache启动不成功绝大部分都是因为端口问题。
4.打开c:\xampp\apache\conf\目录5.目录下有一个f文件,用记事本打开,将里面的”80″全部修改为其它端口,例如”8082″,修改之后,保存退出。
6.重新在xampp控制面板,启动apache,成功,状态为running.注意:因为浏览器的默认端口是80,所以修改了apache的侦听端口之后,在浏览器中浏览时,需要localhost后加上端口。
如http://localhost:8082/代替修改前的http://localhost/,当然localhost = 127.0.0.1,用同样。
APACHE启动不了的解决方法2017-03-22 10:52 | #2楼昨天在电脑上安装dede的本地测试环境,想跑几个php程序玩玩。
安装过程中一切正常,安装完毕,启动apache,却怎么也启动不了。
总是启动了,又莫名其妙的自动停止了。
我在开始-->运行-->输入services.msc进入“服务(本地)”,在这里手动启动,还是没有成功,给出个警告框。
提示说:本地计算机上的apache2.2服务启动后又停止了。
一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报”服务。
【原创】Apache服务器500错误失去响应的问题解决某⽣产⽹站部署在Apache上,使⽤tomcat集群,偶尔⽹站失去响应,查看⾸页发现⽆法打开,页⾯假死,出现过多次,查看apache的⽇志,发现经常出现以下提⽰:[Fri Dec 2713:48:152013] [warn] (OS 64)指定的⽹络名不再可⽤。
: winnt_accept: Asynchronous AcceptEx failed.[Fri Dec 2713:48:152013] [warn] (OS 64)指定的⽹络名不再可⽤。
: winnt_accept: Asynchronous AcceptEx failed.[Fri Dec 2713:48:152013] [warn] (OS 64)指定的⽹络名不再可⽤。
: winnt_accept: Asynchronous AcceptEx failed.[Fri Dec 2713:48:152013] [warn] (OS 64)指定的⽹络名不再可⽤。
: winnt_accept: Asynchronous AcceptEx failed.[Fri Dec 2713:48:152013] [warn] (OS 64)指定的⽹络名不再可⽤。
: winnt_accept: Asynchronous AcceptEx failed.[Fri Dec 2713:48:152013] [warn] (OS 64)指定的⽹络名不再可⽤。
: winnt_accept: Asynchronous AcceptEx failed.[Fri Dec 2713:48:152013] [warn] (OS 64)指定的⽹络名不再可⽤。
: winnt_accept: Asynchronous AcceptEx failed.[Fri Dec 2713:48:152013] [warn] (OS 64)指定的⽹络名不再可⽤。
如何解决 Apache 服务器无法启动的问题Apache服务器是目前世界上最流行的Web服务器之一,但在日常使用中,我们有时会遇到Apache服务器无法启动的问题,这给我们带来了不少麻烦。
本文将介绍如何解决Apache服务器无法启动的问题。
一、检查日志文件在解决Apache服务器无法启动的问题时,我们首先需要检查日志文件。
在Linux系统中,Apache服务器的日志文件通常是/var/log/httpd/error_log或/var/log/apache2/error_log。
我们可以使用tail命令查看最新的日志信息。
如果是Windows系统,则日志文件通常位于Apache服务器的安装目录下的logs文件夹中,可以使用记事本或其他文本编辑器打开查看。
在日志文件中,我们可以找到有关Apache服务器无法启动的错误信息,比如端口被占用、配置文件错误、模块加载失败等,这些信息可以帮助我们理解问题的本质。
二、检查配置文件Apache服务器的配置文件位于安装目录的conf文件夹中。
在解决无法启动问题时,我们需要检查配置文件是否正确。
常见的配置文件包括httpd.conf和ssl.conf等。
首先,我们需要检查配置文件是否存在语法错误。
我们可以使用httpd -t命令检查配置文件的语法是否正确。
如果有语法错误,我们需要及时修复。
另外,我们还需要检查配置文件中的端口、虚拟主机、目录等设置是否正确。
这些设置如果不正确,也会导致Apache服务器无法启动。
三、检查服务状态在Windows系统中,我们可以使用服务管理器来检查Apache 服务器的状态。
在运行cmd命令窗口后,可以输入命令“services.msc”来打开服务管理器。
我们可以在服务列表中找到Apache服务,然后查看其状态是否为“正在运行”。
如果状态不是正在运行,我们可以尝试重新启动服务。
在Linux系统中,我们可以使用命令“systemctl status httpd”来查看Apache服务器的状态。
apache服务启动不了问题主要错误:1、80端口问题很大一部分都来自端口问题,但是一般没装IIS的,则不会出现这个问题2、配置文件httpd.conf问题配置文件中的则是拼写问题了,建议每次更改前都对httpd.conf 文件备份。
主要检查LoadModule php5_module "" 的路径。
包括有无中文字符,空格。
以及ErrorLog 路径无效等3、第三就网上流传最广的解答办法了,直接copy了这一般是netbios解析失败造成的。
解决的办法很简单,步骤如下:一、在"网上邻居"上点右键,菜单上选"属性(R)"。
出来"网络连接"窗口,在"本地连接"上点右键,菜单中点"属性(R)"。
出来"本地连接属性"面板,在"此链接使用下列项目"中找到:"Internet 协议(TCP/IP)",并点击它。
在弹出的"Internet 协议(TCP/IP) 属性"面板上,点击"高级(V)..."按钮。
"高级TCP/IP 设置"面板上点"WINS"选项标签,去掉"启用LMHOSTS 查询(L)"前面的勾,点"确定"按钮。
二、打开"控制面板",点击"Windows 防火墙",点击"高级"选项标签,选择"本地连接",并点击旁边的"设置(T)..."按钮。
在服务选项中找到"安全Web 服务器(HTTPS)",并把它勾选上,点"确定"按钮。
4、第四相关软件影响。
迅雷开启时,apache是启动不了的。
Apache服务器故障排除全攻略分类:服务器技术2007-09-28 17:25 1093人阅读评论(0) 收藏举报apache服务器serv erweb服务cgiurl随着网络技术的普及、应用和Web技术的不断完善,Web服务已经成为互联网上重要的服务形式之一。
原有的客户端/服务器模式正在逐渐被浏览器/服务器模式所取代。
本文将重点Apache 服务器的故障排除的技巧。
一、检查配置文件的错误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 allAllow 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_logLogLevel 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,因为访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。
了解错误代码和错误提示常用的错误响应代码如下:λ301 :告知用户请求的URL 已经永久的移动到新的URL,用户可以记住新的URL,以便日后直接使用新的URL 进行访问。
302 :告知用户请求的URL 临时的移动到新的URL,用户无需记住新的URL,如果省略错误响应代码,默认就是此值。
303 :告知用户页面已经被替换,用户应该记住新的URL。
401 :授权失败,即密码错误。
403 :Access denied 存取错误,即不可以读取该文件。
404 :File not found 找不到文件。
410 :告知用户请求的页面已经不再存在,使用此代码时不应该使用重定向的URL 参数。
500 :服务器内部错误,可能是Web服务器本身存在问题,也可能是编写的程序出错。
错误消息提示说明λ“Invalid argument: core_output_filter: writing data to the network” 消息Apache在可能的平台上使用系统调用sendfile来加速响应的发送。
不幸的是,在某些系统上,Apache会在编译时检测sendfile的存在,即使它不能正常工作。
这经常发生在使用网络或其他非标准文件系统时。
这个问题的表现症状包括上述信息出现在错误日志里及对于非零长度文件请求发送零长度的响应。
一般这个问题只发生在静态文件上,因为动态文件通常用不到sendfile 。
要修正这个问题,可用EnableSendfile指令关闭服务器所有部分对sendfile的使用即可。
同时参看EnableMMAP指令,对相似的问题有帮助。
“Premature end of script headers” 消息大多数导致这个错误的CGI脚本问题将会向浏览器发送一个"Internal Server Error"错误信息。
“Permission denied” 消息error_log中的"Permission denied"错误伴随一个发送到客户端的"Forbidden"信息通常表明违反了文件系统的权限,而不是Apache HTTP的配置文件出了错误。
检查并确认用于运行子进程的User和Group有访问导致问题的文件的足够权限。
同时检查一下导致问题的文件所在的目录及其所有父目录是否具有执行(搜索)权限(也就是 chmod +x)。
最近发行的 Fedora Core 和其它Linux发行版使用了SELinux进行额外的访问控制,违反这些限制也会导致"Permission denied"消息。
"POST Method Not Allowed"消息这说明Apache没有被正确配置以执行CGI程序,重新阅读配置Apache看看遗漏了什么。
"Internal Server Error"消息查阅Apache错误日志,可以找到CGI程序产生的出错消息"Premature end of script headers"。
对此,需要检查下列各项,以找出不能产生正确HTTP头的原因。
3 持续监视错误日志可以使用命令“tail -f error_log” 对任何问题持续监视。
要了解服务器上发生了什么,就必须检查日志文件。
虽然日志文件只是记录已经发生的事件,但是它会让你知道服务器遭受的攻击,并帮助你判断是否提达到了必要的安全等级。
一些例子:grep -c "/jsp/source.j s p?/jsp/ /j s p/source.jsp??" access_log grep "client denied" error_log | tail -n 10上例会列出试图使用Apache Tomcat Source.JSP Malformed Request Information Disclosure Vulnerability的攻击次数。
下例会列出最后十个被拒绝的客户端:[Thu Jul 1117:18:392002] [error] [client ] client denied by server configuration: /usr/local/apache/htdocs/.htpasswd可见,日志文件只是记录已经发生的事件,所以,如果客户端可以访问.htpasswd文件,而且在访问日志中发现类似如下的记录: -- [12/Jul/2002:01:59:13+0200] "GET /.htpasswd HTTP/1.1"这可能表示服务器配置文件中的下列指令已经被注解了:<Files ~"^/.ht">Order allow,deny Deny from all</Files>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.3Server built: Nov 29200606:33:19Server's Module Magic Number: 20051115:3 Server loaded: AP R 1.2.7, APR-Util 1.2.7 Compiled using: AP R 1.2.7, APR-Util 1.2.7Architecture: 32-bit Server MPM: P refork threaded: no forked: yes (variable process count)Server compiled w ith....-DAP ACHE_MPM_DIR="server/mpm/prefork"-D APR_HAS_SE NDFILE-D AP R_HAS_MMA P-DAP R_HAVE_IP V6 (IP v4-mapped addresses enabled)-D AP R_USE_SYSVSE M_SERIALIZE-DAP R_USE_P THRE AD_SERIALIZE-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT-DAP R_HAS_OTHER_CHILD-D AP_HAVE_RE LIABLE_PIPED_LOGS-DDYNAMIC_MODULE_LIMIT=128-D HTTPD_ROOT="/etc/httpd"-D SUEXE C_BIN="/usr/sbin/suexec"-D DEFAULT_PIDLOG="logs/httpd.pid"-D DEFAULT_SCORE BOARD="logs/apache_runtime_status"-D DEFAULT_LOCKFILE="logs/accept.lock"-D DEFAULT_ERRORLOG="logs/error_log"-DAP_TYPE S_CONFIG_FILE="conf/mime.types"-D SERVER_CONFIG_FILE="conf/httpd.conf"从以上的输出可以了解Apache 服务器版本和编译的参数。