window 2008 r2 搭建apache服务器详解

1、进入apache官网,点右侧菜单中的download,进入下载页面。


2、点击最新的稳定发布版本最下方的windows版本连接。


3、进入下载页面后,根据页面的介绍知道:Apache本身不提供该项目(Apache本身就是用Java语言实现的一个项目)的完整编译版安装包,仅提供源码。有一些贡献者提供了一个便捷的二进制安装包,但这并不是真正的可交付运行版本。如果你确实无法自行编译Apache HTTP 服务器项目,那么你也可以从互联网上巨量的二进制发布版本找一个(来进行安装)。目前在windows上部署Apache httpd服务或者也可能同时包含PHP和MYSQL的比较流行的安装版本有:ApacheHaus、Apache Lounge、BitNami WAMP Stack、XAMPP等。

4、找一个你感兴趣的安装包链接进行点击。因为我只需要安装Apache服务器,不希望附带其它的内容,因此选择:ApacheHaus。新页面中给了一些相关说明,然后给出了一堆下载链接。


5、那么我们该下载哪一个呢?分析一下哈:首先分成Apache、Apache Modules、OpenSSL Updates以及Redistributable。然后这每一种又分成了VC14和VC11两个版本。其中Apache代表的是完整的Apache部署包、Apache Modules是一些备选的功能模块,OpenSSL Updates是OpenSSL协议的更新和最后一个是VS C++的需要的运行时库文件。然后V14和V11分别对应不同的操作系统版本:VC9是合适xp与2003系统的,VC11是合适Win7与win8系统的,VC14是合适win10系统的。版本可降低,但不可升高。我的是Win2008,所以用不了V14 ,因此选择V11。点击后注意根据操作系统的位数选择对应的包,我选的x64的,因为我是64位操作系统。


6、点击Download下载后解压到你想放置的位置(注意:目录中最好不要包含中文)。然后windows-》开始-》运行-》输入cmd回车-》打开的命令行中进入解压后目录的bin文件夹,运行httpd -k install.


7、从截图中可以看出来Apache安装已经成功了(is successfully installed),但是安装完后遇到了错误,导致服务启动有问题,启动不了(Errors reported here must be conrrected before the service can be started)。具体的错误发生在httpd.conf文件的第39行(Syntax error on line 39 of E:/test/Apache24/conf/httpd.conf:ServerRoot must be valid directory)。那就打开文件看看到底是什么错误吧。


可以看到第39行引用了第38行定义的一个变量SRVROOT,这个变量的值是"/Apache24"。这个代表的是某个系统盘下的Apache24目录,很遗憾我的目录并不是直接在磁盘根目录下的(为了给大家看到这个错误,我故意的,嘿嘿),而是在test目录下,那么要怎么改呢?很简单,两种方式:1、写成绝对路径,比如我的是 E:\test\Apache24 2、写除去磁盘名之外的相对路径,那么我这里就是 /test/Apache24。我用的是第二种方式。


保存后,cmd窗口中bin目录下输入 httpd -k start尝试启动服务试试,正常情况下,到这里基本就可以启动成功了。但是很遗憾,我启动又失败了,报错是:


啥意思???很明显,因为443端口被占用导致无法启动。那么问题来了,Apache跟443端口有什么关系?难道监听的是443端口,默认不是80端口么?咱们安装之后也没有修改监听端口啊,怎么会用到443端口呢?原来443端口是Apache使用的SSL扩展需要用的端口。要解决这个问题,又是两种思路:1、kill掉占用443端口的进程,并且让那个进程的服务不要自动启动以免后患

2、修改SSL扩展的监听端口,换成另外一个不常用的端口。下面我们先来试试第一种:

1)cmd中用netstat -ano命令找到占用443端口的进程PID

2)打开windows任务管理器,根据PID找到对应的进程,进行结束


3)、根据任务管理器中进程的描述发现是VMWare软件的相关服务造成的,进入window服务管理,将相关的服务启动变成手动的


4)、cmd进入Apache的bin目录,输入httpd -k start,恩,没有消息就是最好的消息。没有报错,好了,成功了。


好,下面来试试第二种方式,先把VMWare相关服务起来,恢复环境么。然后httpd -k stop停止Apache服务,因为一会要启动查看结果啊。用netstat -ano命令确定443端口被占用。(经确认是VMWare WorkStation Server这个服务用的443端口^-^,实际启动这一个服务就ok了)


接下来修改SSL服务监听的端口,从443变成其它的。首先打开百度里很多人都说的“openssl.cnf”文件,查找“443”.word天哪,什么情况,根本没有443好吗。怎么办??继续,最后在/conf/extra文件夹下找到了2个有443端口的文件:httpd-ahssl.conf和httpd-ssl.conf文件。那么两个都要改么?nonono,经实测,只需要修改httpd-ahssl.conf,将所有的443端口统一变成另外一个不常用的端口就ok了。

实际上还有另外一种方式可以解决这个问题,但是思路跟前面两种方式方向完全不一样。大家想想,是什么???

对了,就是禁用Apache的OpenSSL模块。具体做法就是将httpd.conf文件中的加载OpenSSL模块这句给注释掉。如下图:


这种方式相当简单粗暴,但是不提倡!不提倡!不提倡!

当然Apache安装过程中还有可能遇到80端口被占用而无法启动服务的情况,解决方式也是两种:1、修改httpd.conf文件的Listen 80后的80改为其它未被占用的端口 2、让别的进程释放80端口,具体不再操作,大家可以自行尝试。