• apache服务崩溃捉虫记


    公元2010年8月31日15点10分54秒,我的Apache服务罢工了。

    哥很郁闷……

    当时哥正埋头测试网页,没有任何征兆,网页就不解析了,然后写着大大的 forbidden字样,我当时第一反应就是权限,把权限设置成777,可转头就纠结了,心想我又不是linux,哪来的权限777 啊,二来我又没有装IIS!?!?

    然后尝试重启Apache服务,这下彻底傻眼了,服务一停就再也启动不开了,Apache浩浩荡荡的带领所有网页举着牌子罢工了!

    然后,我开始彻底的憎恨 Zend Studio,因为就是安装了它之后服务崩溃的,心想,不会是它改了啥配置,导致Apache们罢工的吧!!

    一不做二不休,开始百度一样,有问题,百度一下。

    第一次尝试:

    捉虫地点:windows系统

    参考解决案例:重启

    最最简单的解决方案,各种简单小毛病,突发状况,重启屡试不爽啊,结果这次还真“不爽”了,无效!

    第二次尝试:

    捉虫地点:httpd.conf文件

    参考解决案例:加载的dll文件错误

    人家高手是这么说的:这个问题我测试了好长时间,终于发现问题所在,就是由于apache版本的不同,

    LoadModule php5_module modules/php5apache2.dll

    这段代码的配置略有细微处的不同,错误就在这段代码上,应该把
    这一句中的php5apache2.dll修改成php5apache2_2.dll,

    因为你使用的apache是2.2版本的,然后加上绝对路径名,例如:

    LoadModule php5_module "c:/php/php5apache2_2.dll"

    我睁大眼睛好好看了下,我就是这么写的啊,惆怅了半天,嗯,看来事出另有原因,虫不在这!

    第三次尝试:

    捉虫地点:本机端口

    参考解决案例:80端口被占用

    打开cmd 窗口,输入“netstat -ano”,查看了所有端口情况,一开始还心想,刚刚开启了下迅雷,下载zend studio的汉化文件,(恨,又是zend studio)不会是被迅雷占用了端口吧,可是又想Apache服务是一整天都开着的呀,纠结,结果查看端口情况消除了我的顾虑,80端口无人侵占!

    第四次尝试:

    捉虫地点:本机网络

    参考解决案例:winsock的修复

    可能的原因是服务运行久了,有些缓存垃圾啥的,同样还是在cmd命令行里输入:netsh winsock reset
    一会儿cmd提示重启,不理会(因为重启没有必要的帮助),不过,还是不行。

    第五次尝试:

    捉虫地点:命令行启动

    参考解决案例:命令行启动httpd服务

    其实可以用命令行模式启动apache,并带上参数,apache会提示你哪句有误,然后就可以针对性的解决!

    很好,打开cmd,输入命令: httpd.exe -w -n "Apache2" -k start

    报错,提示没有“Apache2”这个服务名,打开本机服务列表,找到Apache服务,一看,原来名字是“ Apache2.2”,

    OK,重试:httpd.exe -w -n "Apache2.2" -k start

    报错,没有权限,哭。。。

    因为我是win7系统,在它健壮有力的安全保卫措施下,我不得不深入cmd的老巢,也就是“C:/windows/system32”,然后找到cmd.exe右击管理员身份运行,然后输入上面的命令,

    报错。。。

    虽然又是报错,不过这次是多么的有用啊,因为它提示我是在 httd.conf 这个配置文件的 179 行出了问题!

    然后,立马找了带有显示行号功能的 notepad2,找到第179行,豁然开朗了!

    原来,事情是这样子的,我今天尝试用的zend studio,以前都是用Eclipse for php,为了防止冲突,把它的 workspace 路径移到了另一个地方,然后把根路径改了名字,以前叫“F:/ webpro/ htdocs”,现在叫 “F:/ web/ htdocs”,(没办法,这就叫手贱,就像无聊的IT工作者把文件从c盘移到D盘,然后再移到E盘,某天再移到F盘,过了几天又移回C盘一样,手贱!不过,有人不满了,这叫ITer独有的享受生活方式,好吧!)改回来,(注意,吸取了教训,搜一下该配置表上所有路径的相关的都改过来)一切OK了!

    TIPS,如果各位没有notepad2 这样的显示行号软件,完全可以用系统自带的记事本,然后“查看”,勾选“状态栏”,只要光标移动,状态栏就会显示行号,列号了。很实用,注意,要显示状态栏,必须去掉 自动换行功能!

    第六次尝试:

    总结 

    其实总结以上各个过程,其实,我们完全可以通过翻看 Apache自带的错误日志,就可以解决问题,在安装目录下的logs文件夹下有个error.log 的文件,记录了整个过程!

    捉到了虫,我使劲的踩!我踩!我踩!我踩!我踩!我踩!我踩!我踩踩踩!

    不过回忆一下,虫子不正是我自己放进来的么,呃。。。

    通过以上捉虫的经历,又增长了很多经验呀!!嘿嘿

  • 相关阅读:
    简单爬虫爬取知乎日报并保存日报网页到本地
    从0开始学爬虫6比价工具开发2之图书信息汇总
    从0开始学爬虫6比价工具开发1之爬取当当、京东的数据
    从0开始学爬虫5之优雅的使用字符串
    从0开始学爬虫4之requests基础知识
    从0开始学爬虫3之xpath的介绍和使用
    从0开始学爬虫2之json的介绍和使用
    从0开始学爬虫1之环境搭建篇
    jenkins结合supervisor进行python程序发布后的自动重启
    ansible常用的方法小结
  • 原文地址:https://www.cnblogs.com/lechie/p/2383222.html
Copyright © 2020-2023  润新知