需求:客户的服务器由我及他自己的技术人员维护,服务器上有多个WEB在运营,ASP、PHP、JAVA的混合着都有,原先的WEB架构是Nginx+Apache+IIS+X*Tomcat,但客户的技术人员时常要对一些小站点[ASP、PHP]进行调整,如增删站点或做伪静态规则等处理,而此时问题出来了,客户技术员只对IIS配置熟悉,对配置Nginx、Apache这些很不熟悉,并且这些WEB站点也没什么访问量,所以基本上不用考虑性能这块。所以最终决定给全换成IIS+X*Tomcat,ASP、PHP全由IIS搞定。由于IIS配置与PHP的集成网上很多,所以这里我只记录IIS与JAVA服务器Tomcat的集成。
不知道我以这张图能不能说明我要表达的意思,一句话,把站点中URI请求以ejf后缀结尾的都转发给后端JAVA服务器tomcat来处理。好了,废话不多说了,准备实站开工。
1、第一步首先下载isapi_redirect.dll 文件,目前最新版本为1.2.31,下载地址为:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/ 注意下载的版本与你的OS关系,我的服务器是使用的WIN 2003 32位版本。所以应该下载win32版本。将下载下来的isapi_redirect-1.2.31.dll放在tomcat7根目录下的jakarta目录中,当然你也可以随意的放在其它目录。
2、在jakarta目录下同时建立三个文件:install.reg、uriworkermap.properties、workers.properties,千万别在这三个文件中的配置没有完全对的情况下就导入install.reg这个文件到注册表中。
Install.reg文件内容:
Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0] [HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0] "extension_uri"="/jakarta/isapi_redirect-1.2.31.dll" "log_file"="D:\\usr\\local\\lyService\\tomcat\\tomcat7\\jakarta\\logs\\isapi.log" "log_level"="error" "worker_file"="D:\\usr\\local\\lyService\\tomcat\\tomcat7\\jakarta\\workers.properties" "worker_mount_file"="D:\\usr\\local\\lyService\\tomcat\\tomcat7\\jakarta\\uriworkermap.properties"
同时注意文件中的"log_level"="error"这句。 如果你配置成debug模式来记录日志信息,则有可能你会发现当你访问动态页面时会很慢,但访问直接由IIS来处理的静态页面时速度又很快。原因就在于这里,一般来说我们只需记录错误日志即可。
uriworkermap.properties文件内容
#所有请求后缀为ejf的URI都拦截转发给对应的后端JAVA服务器来处理 #一个worker就代表一个JAVA服务器,这里则表白后端有两个JAVA服务器,如果你想两个域名或多个域名只指向一个JAVA服务器比如都指向worker1,则可以这样:/en.dgdy.cc/*.ejf=worker1 /cn.dgdy.cc/*.ejf=worker1 /en.dgdy.cc/*.ejf=worker1 /cn.dgdy.cc/*.ejf=worker2
workers.properties文件内容
#你的JDK安装目录 workers.java_home=D:\usr\local\lyService\java\jdk1.6.0_26 ps=\ worker.list=worker1,worker2 #tomcat6 ajp13工作端口,tomcat此端口默认为8009,由于我这里需要配置两个#TOMCAT所以tomcat6的ajp13端口我修改为了8008,tomcat7对应的ajp13端口我修#改为了8010 worker.worker1.port=8008 #Tomcat服务器的地址 worker.worker1.host=localhost #类型 worker.worker1.type=ajp13 #负载平衡因数 worker.worker1.lbfactor=1 #tomcat7的ajp13工作端口 worker.worker2.port=8010 worker.worker2.host=localhost worker.worker2.type=ajp13 worker.worker2.lbfactor=1
3、到这里,针对Tomcat的配置处理就配置完了,接下来就是需要在IIS中进行配置,首先在IIS中建立对应的两个WEB站点,对应的目录也应该指向到与你tomcat配置虚拟主机所指向的同一个文件夹下。这里在IIS中的建立WEB站点与建立其它站点完全没有区别。
4、接下来就是比较重要的配置了,分别为这两个站点建立一个虚拟目录
5、在IIS en.dgdy.cc站点上右键--->属性--->主目录,将执行权限设置为脚本和可执行文件。
再点击ISAPI筛选器打开如下窗口并进行配置,一定要注意可执行文件的引用位置一定要与上面的虚拟目录及注册表文件中配置的目录一致,切记切记。
6、添加一个新的WEB服务扩展
这里的扩展名不能随便乱改,要求的文件也一定要是对应目录下的那个dll文件,同时一定要把下面的“设置扩展状态为允许”勾上。切记切记。
7、好了,针对en.dgdy.cc 站点在IIS中的配置就完成了,同上步骤,把cn.dgdy.cc在IIS中的配置也配置上,并且把install.reg这个注册表文件导入到注册表中。这点千万也别忘了,如果配置完后再次分别打开这两个站点的属性面板切换到ISAPI筛选器选项卡面板中如果看到的都是绿色向上箭头则表示配置无误,反之如果是红色,则配置有问题或需要重启IIS服务器。如下图所示。
8、最后,如果都变成了绿色向上箭头,那么我们就来验证一下吧,如访问http://cn.dgdy.cc/html/callme.html?act=contact这个页面 如果页面中的留言验证码能出来,则表明配置成功。
最后的话:如果照着以上配置你确保一针一线都没有配错,但访问对应的动态页面还是不能转发给后端JAVA服务器来处理,则我能想的有可能你存在以下几点错误之一。
a)、服务器OS是64位,但你下载的是32位的dll类库文件,反之。。。。。。
b)、测试一下直接加上端口号连接你的tomcat服务器看是否能正常访问
c)、导入install.reg文件过早并且文件中的JDK或dll类库文件目录没有设置对
d)、请记住在站点上右键--->属性--->主目录,将执行权限设置为脚本和可执行文件。
e)、如果配置成功后访问动态请求很慢,请把日志记录级别改为error. "log_level"="error"
f)、RP问题。。。。。。