万能WEB服务器整合笔记一环境:Windows7/windowsserver2008Jdk(java_ee_sdk-6u1-jdk-windows.exe)Tomcat(apachetomcat6.0.18.ZIP)(免安装包,只需配置环境变量)Apache(httpd-2.2.17-win32-x86-no_ssl.msi)Jk(mod_jk-1.2.31-httpd-2.2.3.so)(同时下载相同jk版本的source文件)Jk的源文件(tomcat-connectors-1.2.31-src.zip)二首要工作1.安装JDK,并配置环境变量(path=%java_home%\bin;%java_home%\jre\bin;classpath=%java_home%\lib\dt.jar;%java_home%\lib\tools.jar)2.安装tomcat。解压apachetomcat6.0.18.ZIP到安装目录,配置环境变量(classpath=%tomcat_home%\bin;)3.安装apache安装完后分别测试,确保tomcat、apache都能正常运行。三JSP的整合一tomcat+jk+apache整合(以我的安装目录为例来讲。Apache:D:\Apache2.2Tomcat:D:\apache-tomcat-6.0.18)步骤:1.分别解压jk的安装包和资源包,将安装包下的xxx.so文件重命名为mod_jd.so并复制到D:\Apache2.2\manual文件夹中。将资源包下面conf文件夹下面的httpd-jk.conf、worker.properties文件复制到D:\Apache2.2\conf文件夹中。2.打开D:\Apache2.2\conf目录下的apache配置文件httpd.conf,在文件中找到Includeconf/extra/httpd-vhosts.conf代码,并将其前面的注释去掉(去掉#)。3.打开D:\Apache2.2\conf\extra目录下的httpd-vhosts.conf文件,在文件中找到NameVirtualHost*:80代码,然后在其上面一行添加代码:Includeconf/httpd-jk.conf(既把这个文件加载进去)。再在该文件的最后添加一个VirtualHost,代码如下:VirtualHost*:80ServerAdminwebmaster@dummy-host2.storm.com#可以随便写DocumentRootC:/工程目录ServerName访问站点的域名ServerAlias172.31.10.168#域名别名ErrorLoglogs/dummy-host2.storm.com-error.log#日志文件CustomLoglogs/dummy-host2.storm.com-access.logcommon#日志文件#Allrequestsgototomcat1bydefaultJkMount/*tomcat1#tomcat1是随后workers.properties文件中的一实例#JkMount/*tomcat1表示把所有请求都抛给tomcat1处理#Servehtml,jpgandgifusinghttpdJkUnMount/*.htmltomcat1#JkUnMount/*.html表示所有的.html都不抛给tomcat1,由Apache自己处理。JkUnMount/*.jpgtomcat1JkUnMount/*.giftomcat1DirectoryC:/打开D:\Apache2.2\conf中的workers.properyies文件,在第一行未注释的代码前面添加如下代码:worker.list=tomcat1worker.tomcat1.type=ajp13worker.tomcat1.host=localhostworker.tomcat1.port=80095.打开D:\apache-tomcat-6.0.18\conf目录下的server.xml文件,在/host后面再添加一个虚拟机:Hostname==zcglxtunpackWARs=trueautoDeploy=truexmlValidation=falsexmlNamespaceAware=falseContextpath=docBase=c:\=0reloadbale=true//Host6.修改主机映射文件:用文本编辑器打开C:\Windows\System32\drivers\etc中的hosts文件,添加映射:127.0.0.1(这样做就可以用域名来访问站点)7.在c:\目录下放一个web工程(至少包含一个.jsp和一个.html文件),分别用、:8080访问.jsp,.html页面。只启动apache时,只可以访问.html文件,访问.jsp文件时会报503错误,这是合理的的。同时启动apache和tomcat,所有文件都能访问,且用80端口和8080端口访问的页面显示的效果应该是一样的。注释及注意事项1:在配置过程中httpd-jk.conf文件没做任何修改,这是因为我们在把jk文件拷贝到D:\Apache2.2\manual文件中时把名字修改成了:mod_jk.conf.Httpd-jk.conf中的主要代码如下:LoadModulejk_modulemodules/mod_jk.so#加载mod_jk.soIfModulejk_moduleJkWorkersFileconf/workers.properties#加载workers.properties#OurJKerrorlog#Youcan(andshould)userotatelogshereJkLogFilelogs/mod_jk.log#添加日志文件,便于排错#OurJKloglevel(trace,debug,info,warn,error)JkLogLevelinfo#OurJKsharedmemoryfileJkShmFilelogs/mod_jk.shm/IfModulejk_module2.Workers.properties文件中的worker是用来连接tomcat和apache通信的中间件,上面配置了一个实例tomcat1:worker.list=tomcat1worker.tomcat1.type=ajp13worker.tomcat1.host=localhostworker.tomcat1.port=8009ajp是tomcat与apache通信的协议,13是版本号。localhost表示与本机的tomcat通信,可以设成具体的ip地址。8009是tomcat中ajp协议的默认端口。这个可以在tomcat的配置文件server.xml文件中看到。这两处的端口必须一致。3在配置tomcat中的虚拟机时,Contextpath=docBase=c:\=0reloadbale=true/中的path必须是path=””,而不能是path=”/”,否则会报错。4.配置apache中的虚拟机时,为了安全,官方建议先默认把所有请求都抛给tomcat,然后再用JkUnMount排除需要由apache助理的文件。其次在配置apache中的虚拟机时还必须配置DirectoryC:/这段是用于权限控制,如果不加,则会报403错:youdon’thavapermissiontoaccess/onthisserver。二.负载均衡(前提:apache与tomcat已整合成功)步骤:1.打开D:\Apache2.2\conf中的workers.properties文件,找到代码段:将8109改为8009,并且在后面再添加一行代码变为:worker.balancer.balance_workers=node1worker.node1.reference=worker.templateworker.node1.host=localhostworker.node1.port=8009worker.tomcat1.lbfactor=1继续往下找到node2代码段:worker.balancer.balance_workers=node2worker.node2.reference=worker.templateworker.node2.host=localhostworker.node2.port=8209并将其代码段改为:worker.balancer.balance_workers=node2worker.node2.reference=worker.templateworker.node2.host=172.31.8.58worker.node2.port=8009worker.node2.lbfactor=12.在apache中添加或者修改原有虚拟主机(tomcat中的虚拟机也要做相应修改或添加,这里略)VirtualHost*:80ServerAdminwebmaster@dummy-host2.storm.comDocumentRootC:/*balancer#balancer也是一个workers实例,但它的type不是ajb,而是lb。(别急下面会讲到。)#Servehtml,jpgandgifusinghttpdJkUnMount/*.htmlbalancerJkUnMount/*.jpgbalancerJkUnMount/*.gifbalancerDirectoryC:/同时启动本机的tomcat和173.31.8.58上的tomcat,用(需要在hosts中配置映射)访问站点,可以看到程序在本机tomcat和172.31.8.58上来回执行。注释及注意事项。在默认的worders.properties文件中已经实例化了一个worker(balancer)用来实现负载均衡。主要代码如下:worker.list=balancerworker.balancer.type=lb(类型为lb,)worker.balancer.balance_workers=node1(参与实现负载的成员node1)worker.node1.reference=worker.templateworker.node1.host=localhost(node1所在主机)worke