一.准备Apache
1.下载Apache
本次使用的是ApacheHaus 2.4.10-x64版本,因为官方暂未提供2.4.10 for windows下载。
下载地址:http://httpd.apache.org/docs/2.4/platform/windows.html
2.装载Apache服务
2.1管理员运行CMD后执行“Apache路径”\bin\httpd.exe -k install命令,执行后在服务中或ApacheMonitor中启动Apache,启动后访问 http://localhost,若显示Apache页面则安装成功。
2.2如果安装时遇到下列异常
error on line 39
修改httpd.conf
Define SRVROOT "/Apache24"
ServerRoot "${SRVROOT}"
修改为
Define SRVROOT "D:/Apache24" --此处为Apache绝对路径
ServerRoot "D:/Apache24" --此处为Apache绝对路径
若安装有问题可使用“Apache路径”\bin\httpd.exe -k uninstall命令卸载服务。
二.准备Tomcat
本次使用的是7.0.57版本,此项很常用,不再多做阐述。
三.配置Apache下httpd.conf
因为Apache2.1版本后已经支持mod_proxy_ajp,无需下载其他文件。
1.修改httpd.conf
打开Apache的conf/httpd.conf文件,将以下项目注释放开
#LoadModule buffer_module modules/mod_buffer.so --选配
以上模块提供了缓冲的输入和输出栈的功能
LoadModule cache_module modules/mod_cache.so --选配
LoadModule cache_disk_module modules/mod_cache_disk.so --选配
以上两个模块为mod_cache提供基于磁盘的缓存管理,推荐加载
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
以下为mod_proxy权限
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2.修改下列选项
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
修改为
<IfModule dir_module>
DirectoryIndex index.html index.jsp --如果index页面为jsp的话
</IfModule>
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
修改为
DocumentRoot "D:\Tomcat7\apache-tomcat-7.0.57\webapps\ROOT"
<Directory "D:\Tomcat7\apache-tomcat-7.0.57\webapps\ROOT">
3.在文件最后增加下列选项
<proxy balancer://cluster/>
BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9010 loadfactor=1 route=jvm2
</proxy>
注意:此处有几个Tomcat做均衡负载就添加几个BalancerMember,而此处的8010端口是指Tomcat中server.xml中
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />中的port
多个Tomcat记得首先修改此端口,以免端口冲突。
三.配置Apache下httpd-vhosts.conf
1.修改下列选项
<VirtualHost _default_:80>
DocumentRoot "${SRVROOT}/htdocs"
#ServerName www.example.com:80
</VirtualHost>
改为
#<VirtualHost _default_:80>
#DocumentRoot "${SRVROOT}/htdocs"
#ServerName www.example.com:80
#</VirtualHost>
此选项是将默认的配置全部注释掉
2.添加下列选项
<VirtualHost *:80>
ServerAdmin xxxxxx@xx.com --可以不填写
ServerName 127.0.0.1 --注意修改
ServerAlias localhost --注意修改
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
ErrorLog "logs/proxyTest-error.log"
CustomLog "logs/lbtest-access.log" common
</VirtualHost>
四.配置Tomcat的server.xml
1.修改下列选项
<Engine name="Catalina" defaultHost="localhost">
为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
此处jvm1与Apache的httpd.conf中BalancerMember配置中的route值相同
现在全部配置已经结束,重启Apache与Tomcat后,访问http://localhost如果能访问到Tomcat欢迎界面则配置成功。
五.运行后发现异常
(OS 64)指定的网络名不再可用: AH00341: winnt_accept: Asynchronous AcceptEx failed.
AcceptEx的错误原因:一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。
Apache2.4版本后对此做了解决措施:修改httpd.conf如下
AcceptFilter http none
AcceptFilter https none
EnableSendfile Off --使用操作系统内核的sendfile支持来将文件发送到客户端
EnableMMAP off --递送中使用内存映射来读取文件
然后调整windows配置
1.网上邻居-;本地连接-;属性-;internet协议(TCP/IP)-;属性-;高级-;wins标签;去掉启用LMhosts查询前的勾.
2.控制面版-;windows防火墙-;高级标签-;本地连接设置-;服务的标签里勾选安全Web服务器(HTTPS)。