写在前面:

本机环境2008R2、tomcat8

网上搜了很多JSP的IIS部署,内容大部分是相近的,这些文章最早出现在2012的样子。大概的原理就是通过ISAPI方式对IIS进行扩展(这个扩展是tomcat官方的,是官方comcat-connectors项目的IIS子集),让IIS将JSP提交给tomcat进行处理。官网有英文版本的详细介绍http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html 另外csdn上down了一个文档,指出了官网原文有不正确的地方。两者是我参考的主要文献。
PS:所谓指出官方文档有不正确的地方就是64位的2008R2在使用ISAPI这个扩展文件时是否使用64位,如果是64位则参考官方文档,如果不是则参考网上的文档。在具体部署这一步骤的时候我详细记录了。

其他参考文档

http://blog.sina.com.cn/s/blog_68b0cad1010168hf.html
http://www.it165.net/os/html/201402/7156.html

一、部署jre

我下载的是1.8.0.45 x64,放到D盘Server目录下

配置环境变量

Path:               %JAVA_HOME%\bin;
JAVA_HOME: D:\Server\Java\jre1.8.0_84
CLASSPATH: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

二、部署tomcat

我下载的是apache-tomcat-8.0.23 8.0.23 用的是安装版,安装版本自动匹配64

安装到D:\Server目录下。好了直接访问8080端口可以发现tomcat已经OK了

三、配置Tomcat Connectors

1.下载Tomcat Connectors JK 1.2。说的好听,就是ISAPI扩展文件,官网直接放出源码。我下载的是“tomcat-connectors-1.2.40-windows-x86_64-iis.zip”。http://apache.fayea.com/tomcat/tomcat-connectors/jk/binaries/windows/

2.拷贝isapi_redirect.dll文件到Server\Tomcat8\bin\win32\x86_64文件夹下。

3.注册isapi_redirect.dll,我直接弄reg文件并没有完全导入成功,后面两项我是手动添加上去的。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"extension_uri"="/jakarta/isapi_redirect.dll"
"log_file"="D:\Server\Tomcat8\logs\isapi.log"
"log_level"="debug"
"worker_file"="D:\Server\Tomcat8\conf\workers.properties"
"worker_mount_file"="D:\Server\Tomcat8\conf\uriworkermap.properties"

PS:

a.extension_uri:tomcat这个isapi工作原理,是通过iis的虚拟目录调用tomcat的,在这里也就是site下面有个虚目录jakarta,jakart指向了存放dll的目录。通过调用这个虚目录在调用tomcat。
b.worker_file与worker_mount_file者两个文件是配置的是iis调用tomcat后,tomcat自己的工作方式及站点挂载方式。

c.在2008R2中如你想使用32位的isapi接口文件,也是可以的。只需要将isapi换成32位的dll文件。然后在IIS里面将允许jsp的site对应的应程序的高级设置里将 将启用32位程序设置为true(官方的介绍就是讲应用程序模式改为WOW64模式),注册表注册项目路径改为HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector\1.0 也就在wow64模式下注册。

4.在tomcat安装目录下conf文件夹下建立两个文件

文件1:workers.properties 其中worker1代表一个应用标签

#这里的worker1是worker们的名字。worker相当于一个tomcat运行实例,可以允许多个,就在此定义命名,命名规则为大小写字母数字与下划线减号
worker.list=worker1
#指定运行实例的工作类型,分为ajp12(一个旧的协议,为了兼容而保留,不赞成使用的),ajp13(常用的),lb(负载均衡方式工作的)
worker.worker1.type=ajp13 worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.lbfactor=1
worker.worker1.connection_pool_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=60 ##官方的例子 Define 3 workers, 2 real workers using ajp12, ajp13, the last one being a loadbalancing worker
#worker.list=worker1, worker2, worker3
# Set properties for worker1 (ajp12)
##worker.worker1.type=ajp12
#worker.worker1.host=localhost
#worker.worker1.port=8007
#worker.worker1.lbfactor=1
## Set properties for worker2 (ajp13)
#worker.worker2.type=ajp13
#worker.worker2.host=localhost
#worker.worker2.port=8009
#worker.worker2.lbfactor=1
#worker.worker2.connection_pool_timeout=600
#worker.worker2.socket_keepalive=1
#worker.worker2.socket_timeout=60
## Set properties for worker3 (lb) which use worker1 and worker2
#worker.worker3.balance_workers=worker1,worker2

文件2:uriworkermap.properties

/examples/* = worker1
/TZCGS/*=worker1

PS:

a.worker_file一般指向一个tomcat的工作实例类似iis的site.

b.worker_mount_file类似iis里面的虚目录配置文件。这里就是如果请求uri是hostlocal/examples和hostlocal/TZCGS 就用worker1实例来解析,其他还有iis来判断如何执行。其中的*是转义字符代表匹配任意后缀,也可以配置相关规则具体可详见官网说明。如果直接说/*=worker1那整个整个站点都有worker1实例来执行。

c.如何让IIS的一个site同时使用jsp,php,.net jsp的配置重点就是这里,你得告诉iis什么uri规则让tomcat执行。

四.配置IIS

1)在IIS的根节点即计算机节点中选择“ISAPI和CGI限制”里面增加isapi_redirect.dll扩展,参考如下

PS:这里的的描述可以自己设置,我建议可以为jakarta也可以为jsp

2)在iis增加一个site用来跑jsp程序,配置可以参考如下

3)在该站点的ISAPI筛选器中添加isapi筛选模块。名称自定义可以参考如下。

4)建立映射jsp执行的虚目录,此虚目录不做实际的虚目录使用,只是跟注册表中注册的extension_uri配合指向tomcat。所以这个虚目录的名称一定要对应注册表中extension_uri的值。在这里就是jakarta。然后其物理路径一定要指向isapi_redirect.dll的目录,在这里是D:\Server\Tomcat8\bin\win32\x86_64

5)配置虚目录的“应用程序映射”,编辑功能权限,将“执行”打勾,配置参考如下

ps:在这一步,有网文说需要添加一个*.jsp的映射指向到isapi的dll,在2008r2环境中本人实测根本不需要。

五.添加php程序,我这里是一个dz3.2的论坛。因为我直接配置了phpmanager且使用FASTCGI模式,只要在IIS的根节点配置成功,添加PHP程序就像添加.NET程序一样简单根本不需要配置任何东西。

PHP的IIS配置参考我之前的文章。

2)添加执行PHP程序的虚目录。即可

至此,根据我上文的配置,localhost/examples 就是访问tomcat 下webapps\examples中的jsp程序 ,访问localhost/bbs就是访问此虚目录指向的php dz程序。

六、32位的isapi_redirect.dll的总结

32配置的注册表文件

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"extension_uri"="/jakarta/isapi_redirect.dll"
"log_level"="debug"
"worker_file"="D:\\Server\\Tomcat8\\conf\\workers.properties"
"worker_mount_file"="D:\\Server\\Tomcat8\\conf\\uriworkermap.properties"
"log_file"="D:\\Server\\Tomcat8\\logs\\isapi.log"

32位在IIS中需要单独配置的地方,正因为32程序是基于WOW64模式,所以注册表才会要在相应的目录下配置

关于Eclipse使用tomcat自身配置文件,运行tomcat服务。

怎么有这个问题的。主要是因为,要在测试服务器上使用Eclipse开发环境调试程序。Eclipse的server窗口里面的web服务,默认Eclipse自己建立一个独立的tomcat服务,这个服务在配置文件在%workspace_dir%\.metadata\.plugins\org.eclipse.wst.server.core\tempX目录下。也就是上面的IIS+tomcat的方法,无法让IIS调用tomcat安装目录下的配置的。解决途径有两种:
一种是把IIS的配置操作用于workspace目录下。
一种是把Eclipse调试用的tomcat服务,直接使用tomcat安装目录下的配置文件生产。

我选择的是后者。Eclipse的server一旦建立,里面是无法修改的。解决方法在server窗口中删除那个server直接重建,选择use tomcat installation 即可。

打通版微社区(4):微信第三方服务部署——JSP的IIS部署的更多相关文章

  1. 打通版微社区(3):在Web服务器上部署memcache For DZ3.2

    写在前面:首先这个数据库加速程序的原理,是将数据库内容缓存到Web服务器的内存上,也就是内存换速度.我本次微社区的应用其实应该用不了这个,只是看到好多DZ论坛部署的都安装了这个,我就练手一下以便不时之 ...

  2. 打通版微社区(6):部署微信插件及开通QQ云服务

    写在前面: 此文是我最后写的.其实实际部署的时候,我是先安装了论坛并试图开通微信的微社区.发现微社区需要在微信公众平台的开发者中心里配置 "网页账号,网页授权获取用户基本信息"为论 ...

  3. 打通版微社区(1):PHP环境部署 for DZX3.2

    写在前面:本文参考了http://blog.sina.com.cn/s/blog_513be2630101linz.html非常感谢博主此文对我此次操作帮助很大.PHP的windows部署方案主要分为 ...

  4. 打通版微社区(5):部署DZ3.2

    参考官方帖子http://www.discuz.net/thread-3258186-1-1.html  这是第三方的帖子http://www.discuz.net/thread-3199850-1- ...

  5. 打通版微社区(2):服务器部署MySql数据库 For DZ3.2

    写在前面:单独写部署MySql原因是,我这边的应用数据库都是独立存在的,数据与应用分别部署在不同的服务器.另外我也没有实际部署MySql的经验,特意写一篇日志,张记性.安装MySql参考了http:/ ...

  6. Python Django对接企业微信第三方服务回调验证的一些坑

    今天公司老总,叫我把公司的企业微信,服务商管理后台中的本地应用进行回调验证. 听起来一脸懵逼,没搞过企业微信对接情况.一头雾水,不知道如何下手. 先讲解一下,企业微信情况. 登录到企业微信后,右上角服 ...

  7. 解决微信浏览器缓存站点入口文件(IIS部署Vue项目)

    最近开发的微信公众号项目中(项目采用Vue + Vux 构建,站点部署在IIS8.5上),遇到个非常奇葩的问题,发布站点内容后,通过微信打开网址发现是空白页面(后来验证是微信浏览器缓存了入口文件-in ...

  8. 《小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户管理CRM+微信支付》

    <小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户管理CRM+微信支付> 之前发布了不少微赢的多用户微信网站源码,今天为我的小伙伴们准备的是功能非常强悍, ...

  9. 《pigcms v6.2最新完美至尊版无任何限制,小猪微信源码多用户微信营销服务平台系统》

    <pigcms v6.2最新完美至尊版无任何限制,小猪微信源码多用户微信营销服务平台系统> 前两天分享了套小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户 ...

随机推荐

  1. Java网络编程(一)

    Java网络编程: 1.1: 网络编程:对于我这个“研究不深”的网络菜鸟来说,我觉得网络编程就是实现计算机与计算机之间通信的编程.写些能够实现计算机与计算机之间的通信就行了(目前来说). 1.2:一台 ...

  2. redis中save和bgsave区别

    转自:redis中save和bgsave区别 SAVE 和 BGSAVE 两个命令都会调用 rdbSave 函数,但它们调用的方式各有不同: SAVE 直接调用 rdbSave ,阻塞 Redis 主 ...

  3. latex排版(CTeX winEdit输出“系统找不到指定的文件”的终极解决办法)

    WinEdit的菜单栏中:Options->Execution Modes 弹出的界面见下面的图: 看上图中“1”所示位置,后面3项出现了“?”号(出现“系统找不到指定的文件”的错误时,所有项后 ...

  4. JVM执行篇:使用HSDIS插件分析JVM代码执行细节--转

    http://www.kuqin.com/java/20111031/314144.html 在<Java虚拟机规范>之中,详细描述了虚拟机指令集中每条指令的执行过程.执行前后对操作数栈. ...

  5. vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制

    一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...

  6. PHP OOP面向对象部分方法归总(代码实例子)

    <?php//对象名存在栈内存中,数据存在堆内存中class leyangjun{    var $name;  //定义变量    var $age;    var $sex;         ...

  7. vue-pdf的3.3.1版本build后多生成168个js文件

    当同事使用vue-pdf来浏览pdf之后,就发现build之后一堆散乱的js文件,真可怕! 果然google之后是它的原因.参考:Vue-pdf create 168 excess bundles i ...

  8. JavaScript插入节点小结

    JS原生API插入节点的方式大致有innerHTML.outerHTML.appendChild.insertBefore.insertAdjacentHTML.applyElement这6种. 这里 ...

  9. [SQL Server] 无法连接到本地数据库

    打开SQL Server配置管理器 启用下图两个协议 打开SQL Server服务 这一步可能出现这种情况: 故障原因是,安装Visual Studio 2012的时候,自动安装“Microsoft ...

  10. ubuntu16.04 安装 nginx 服务器

    在线安装 apt-get install nginx 说明 启动程序文件在/usr/sbin/nginx 日志放在了/var/log/nginx中,分别是access.log和error.log 并已 ...