我当初搭建自己的小网站,图个方便,就想着用Apache,结果尼玛,这玩意儿启动老是给我报错,搞得我一头大汗。第一次碰到这情况,我真是摸不着头脑,网上搜了一堆,看得我眼花缭乱,全是些看不懂的专业术语。我才发现,这玩意儿启动失败,十有八九就是那几个关键的配置没搞对。
我这过程就是不断试错,然后记录下来。一开始我只是随便下了个安装包,双击运行,然后就等着它启动。结果命令行窗口一闪而过,再看日志文件,一堆红字,看得我心都凉了。
我发现,很多人跟我一样,默认都是想用80端口跑Apache。可问题是,如果你电脑上装了IIS,或者某些杀毒软件、或者其他Web服务器,它可能已经把80端口占了。
netstat -ano findstr ":80" 查了一下。Listen 80 这一行,我把它改成 Listen 8080 或者其他没被占用的端口,比如8888。
这第二个坑,我差点就忽略了。Apache启动的时候,它需要知道自己叫在哪儿跑。如果你只是默认安装,这个 ServerName 可能会被注释掉,或者干脆没写。

#ServerName *:80 这一行。localhost:8080(如果我改了端口的话)。127.0.0.1:80 就行,但我发现写成本地IP和端口更稳妥一些,反正能让它知道自己在哪儿跑。
Apache这玩意儿模块特别多,什么SSL、Rewrite这些。如果你在配置文件里加载了一个根本没编译进去或者文件路径写错的模块,它启动的时候就会直接懵圈。
LoadModule 指令。LoadModule 全都注释掉了。SSLCertificateFile 这些,指向的文件是真实存在的。
网站文件放在哪儿,Apache得知道,这就是 DocumentRoot。更重要的是,它得有权限访问那个文件夹。
DocumentRoot "/usr/local/apache2/htdocs" 这一行,确保这个路径是存在的。 段落,确保里面的 Require all granted 选项是打开的,而不是 Require local 或者其他限制。chmod 权限设置,虽然在Windows下少见,但权限不足是常见问题。
我把这几样东西检查完,保存配置,再试着启动,这回命令行窗口稳稳当当地弹出来了,没有立刻关闭,然后我打开浏览器输入 http://localhost:8080,终于看到了那个熟悉的“It works!”页面。搞了老半天,原来就是这些基础配置没搞定。以后再碰到启动失败,我就按这个清单一步步排查,效率高多了。
