Apahce 无法启动
一、 现象描述
启动apache 的时候,竟然报了下面的错误,之前一直是可以正常运行的。错误截图如下:
二、 利用事件查看器定位问题
1. 定位问题
面对错误,查看apache 日志,进入目录“../Apache2.2.17/logs ”,从这里的日志中看不出任何信息,而且日志的最后记录时间也比当前时间要早,所以通过这里的日志解决不了问题。
通过日志解决不了问题,但是我们可以尝试用其他方式来解决。既然apache 是作为windows 服务运行的,那么apache 的一些启动信息肯定会记录在“事件查看器”中。进入“控制面板”-> “管理工具”-> “事件查看器”,点击左侧导航“事件查看器”-> “Windows 日志”-> “应用程序”,见下图:
蓝色框中的四个错误都是apache 的日志信息,注意这四个信息的时间,是在同一个时间( 见红色下划线 ) 产生的,这四个信息记录了apache 启动失败触发的4 个不同事件。再看看下面红框中的内容,表示80 端口不可用。
2. 确定80 端口是否正在被使用
80 既然不可以,是不是因为80 端口正在被占用呢?在Cmd 窗口中,利用命令确定80 端口是否正在被占用,具体命令见下表:
C:/Users/Administrator>netstat -ano|find "80" TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:1027 0.0.0.0:0 LISTENING 980 TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING 480 TCP 0.0.0.0:8038 0.0.0.0:0 LISTENING 7076 TCP 0.0.0.0:8067 0.0.0.0:0 LISTENING 7076 TCP 127.0.0.1:1433 127.0.0.1:1128 ESTABLISHED 480 |
通过红色记录,我们可以看到80 端口正在被进程号Id 为4 的进程占用。
3. 根据进程Id 定位都具体的进程
打开任务管理器,点击“PID ”,按照PID 进行排序(如果没有显示PID ,则点击“查看”-> “选择列”,勾选上PID 即可),见下图:
从这里可以看到, ID 为 4 的进程名为“ NT Kernel & System ”,这是 windows 的内核进程,但是为什么会占用 80 端口呢。到这里,想到了 windows 的自身的 IIS 服务器,因为今天测试ASP.NET 的程序,把 IIS 开启了。
4. 关闭IIS ,Apache 启动成功
进入 IIS 服务器,关闭 IIS 服务,启动 apache 成功。当然也不一定非要关闭 IIS 服务,可以修改 IIS 服务或者 apache 的监听端口,只要两者的监听端口不冲突,就可以同时运行这两个软件。