64位Windows2008系统下IIS7和Tomcat7整合共用80端口如何解决

 加一点自己的东西:

从没有接触过服务器的小白在几天之内要完成windows服务器与linux服务器的配置,当时真的非常紧张。我们的服务器上面有其他的项目占用了80端口,如果需要绑定域名能够让在微信中访问不提示危险网站必须使用80端口(访问80端口是不需要输入端口号的 比如一般测试是使用的8080端口访问时需要输入 http://域名:8080/项目名 使用80端口则为http://域名/项目名  具体的项目和写法看自己的设定 此处只说明端口的问题)。更让人无语的是服务器上另一个项目不是java web项目 是.net的项目。我们使用的是javaweb项目和 tomcat。如果按照常规的说法应该是修改tomcat下的server.xml配置文件的信息,绑定域名和设计端口。当这样设置以后还是不能够访问到项目每次都会报服务器的错误。 最后找寻资料说要使用iis映射到tomcat才行。找了很多的资料经过了一个通宵,成功地解决了问题。下面是比较全面的教程(注意:配置过程一定要慢慢来 不然忘了一下或者随便弄很可能会浪费更多的时间)。在完成配置和使用一段时间后服务器就变得不那么神秘了。

IIS7已经正确安装(80端口)

一、安装软件JRE7,安装路径为D:\java\Jre6。

二、安装软件Tomcat7,安装路径为D:\Tomcat7。并启动TOMCAT,测试http://localhost:8080能否访问。

(提示:以上2个软件安装路径最好不要有空格,这两步确保没有问题,tomcat能够正常访问之后再进行整合)

三、导入注册表文件

新建tomcat_IIS.reg文件,打开写入下面内容(D://tomcat7服务器Tomcat安装路径):

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_file"="D://tomcat7//logs"
"log_level"="debug"
"tomcat_start"="D://tomcat7//bin//tomcat.bat start"
"tomcat_stop"="D://tomcat7//bin//tomcat.bat stop"
"worker_file"="D://tomcat7//conf//workers.properties"
"worker_mount_file"="D://tomcat7//conf//uriworkermap.properties"

注意:

1,导入注册表后一定要使用regedit打开注册表,查看是否导入成功。注册表中是否包含上述的项和字符串值。

2,网上很多教程导入注册表位置为[HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Jakarta Isapi Redirector/1.0]
这是个错误的位置,会导致isapi_redirect.dll无法加载从而在IIS下添加Isapi筛选器之后访问放在文件(JSP或者PHP文件都出现错误)出现500错误。

64位操作系统的正确位置是[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector\1.0]

四、在tomcat安装目录下conf文件夹下建立两个文件

文件1:workers.properties

workers.tomcat_home=D:\Tomcat7\
workers.java_home=D:\java\Jre6
ps=\
worker.list=zouyi615  #zouyi615为访问Tomcat服务器的一个标签,可以选择多个,用逗号隔开
worker.zouyi615 .port=8009
worker.zouyi615 .host=localhost
worker.zouyi615 .type=ajp13
worker.zouyi615 .lbfactor=1

文件2:uriworkermap.properties

/*.jsp=zouyi615  #该域名下的所有.jsp文件转给Tomcat服务器处理
/system/=zouyi615 #访问system目录时转到Tomcat服务器处理
/system/*.jsp=zouyi615 #system下.jsp文件转到Tomcat服务器处理
/system/*=zouyi615  #system下所有文件转到Tomcat服务器处理

#/system/该目录为tomcat服务器webapp目录下的一个文件夹,/system/下的所有文件都可以通过IIS访问

五、拷贝isapi_redirect.dll到tomcat安装目录下conf文件夹

http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/下下载tomcat-connectors-1.2.37-windows-i386-iis.zip,并将解压后的isapi_redirect.dll放置在{tomcat_home}/jk下,并在该目录下建立isapi_redirect.properties,内容如下

六、打开IIS7.5,点击左边的计算机名(而不是在网站目录下面,网站目录下是找不到"ISAPI和CGI限制"这个选项的)。

在IIS管理器中的“ISAPI和CGI限制”里面右键添加,路径选择为tomcat安装目录下conf文件夹的isapi_redirect.dll,并设定“允许执行扩展路径”,描述名可取jakarta

七、接着单击Default Web Site(或者你的任一个网站目录,下面的Default Web Site和这个相同,一般IIS7服务器都可以设置多个网站目录,比如我的就是在demo.uprui.com这个目录下操作的。),选择ISAPI筛选器,并右键添加筛选器,名称可取jakarta,可执行文件选择tomcat安装目录下conf文件夹isapi_redirect.dll。

八、在Default Web Site上右键"添加虚拟目录",别名取jakarta(必须是jakarta名称,名称必须和注册表里"extension_uri"的值的名字一致),路径指向tomcat安装目录下conf文件夹,即isapi_redirect.dll所在目录。注意,此处要看IIS用户是否能够访问网站目录,如果不能可以用管理员权限用户。

九、点击虚拟目录jakarta,双击“处理程序映射”,最右边(第三分栏里面)选择“编辑功能权限...”将所有权限(执行权限)选上。

十、在Default Web Site上,双击“处理程序映射”,右键"添加脚本映射",请求路径写*.jsp,可执行文件选择tomcat安装目录下conf文件夹isapi_redirect.dll。名称随便写,例如JSP。

常见错误:

1.问:没有配置成功,IIS测试访问JSP页面出现500错误:

HTTP 错误 500.0 - Internal Server Error

调用 GetFilterVersion 失败,在 ISAPI 筛选器 "D:\soft\tomcat7\conf\isapi_redirect.dll" 上。

答:注册表导入位置不对或根本没有导入注册表。手动写注册表或更改位置。

64位操作系统的正确位置是[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector\1.0]

2.访问php页面正常,访问JSP页面显示空白,但不提示错误信息。

答:访问JSP没有错误提示,说明注册表是正确的,一般是IIS用户访问Tomcat目录权限的问题。还有就是Isapi是否加载问题

(0)

相关推荐

  • Spring Boot修改内置Tomcat默认端口号的示例

    Spring Boot 内置Tomcat默认端口号为8080,在开发多个应用调试时很不方便,本文介绍了修改 Spring Boot内置Tomcat端口号的方法. 一.EmbeddedServletContainerCustomizer接口 EmbeddedServletContainerCustomizer接口提供了customize方法用来自定义servlet容器的一些属性 如图编写实现类在customize方法中可设置容器端口号为8088 . 二.TomcatEmbeddedServletC

  • 详解nginx 配置多个tomcat共用80端口

    场景:项目1放在tomcat1中,项目2放在tomcat2中,两个tomcat放在同一台服务器上,需要共享80端口访问 注意:这里和集群部署是不同的,集群部署是一个项目放在多个tomcat中. 这里通过nginx做反向代理,nginx请到http://nginx.org/en/download.html自行下载, 修改conf/nginx.conf中的server如下: server { listen 80; server_name 192.168.1.197; #charset koi8-r;

  • 修改Tomcat服务器默认端口号的实现方法

    修改Tomcat服务器默认端口号的实现方法 一 修改方法 修改D:\apache-tomcat-7.0.81\conf\server.xml文件如下 二 测试 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • Tomcat显示8080端口被占用的图文解决方法

    大概思路:找到占用端口的进程,通过唯一标识的进程号终止该进程 在控制台中找到端口对应的进程号 在任务管理器中找到服务进程号 然后终止进程 ps:不知道的进程不要乱终止,后果很严重的 win+R-->cmd-->netstat -ao win+R:运行,cmd:打开控制台 netstat-ao:显示活动连接(展示端口号和对应进程号) 在控制台中找到端口对应的进程号 右键任务栏,选择任务管理器 在选项卡中选择详细信息,然后点击PID排序,再找到需要终止的进程号,右键选择结束任务即可 总结 以上所述

  • 如何设置Tomcat的默认端口(图文)

    Tomcat安装时默认的端口设置的是8080,而http协议的默认端口是80,所以测试Tomcat时需要输入的网址为"http://localhost:8080",若把Tomcat的端口设置为80,则直接输入"http://localhost"就能显示Tomcat默认主页,如下图所示: JDK,Tomcat(本文以Tomcat7.0.27为例): 方法/步骤 1.成功安装JDK和Tomcat(如果这一步有问题,可查看我的相关经验!): 2.定位到Tomcat的安装目

  • Tomcat 发布程序使用cmd查看端口占用、相应进程、杀死进程等的命令

    如何查看程序占用的端口 一. 查看所有进程占用的端口 在开始-运行-cmd,输入:netstat –ano可以查看所有进程 二.查看占用指定端口的程序 当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道是哪个程序或进程占用了端口,可以用该命令 netstat –ano|findstr "指定端口号" 二.查看占用指定端口的程序 当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道是哪个程序或进程占用了端口,可以用该命令 netstat –ano|f

  • 修改tomcat默认的端口号

    协同管理系统黙认使用Tomcat默认的端口8080,除8080端口外Tomcat还会占用8005,8009和8443端口.如果这4个端口已被占用,可以将协同管理系统修改为使用其它端口. 修改方法如下: 1.   如果机器上装有IIS或Apache Server等并仅占用了8080端口: 编辑文件"安装目录\tomcat\conf\server.xml"(可以用记事本打开) 查找到"8080"(如下红字标识处),然后替换成想设置的端口号(如9090),并保存即可. &

  • 64位Windows2008系统下IIS7和Tomcat7整合共用80端口如何解决

     加一点自己的东西: 从没有接触过服务器的小白在几天之内要完成windows服务器与linux服务器的配置,当时真的非常紧张.我们的服务器上面有其他的项目占用了80端口,如果需要绑定域名能够让在微信中访问不提示危险网站必须使用80端口(访问80端口是不需要输入端口号的 比如一般测试是使用的8080端口访问时需要输入 http://域名:8080/项目名 使用80端口则为http://域名/项目名  具体的项目和写法看自己的设定 此处只说明端口的问题).更让人无语的是服务器上另一个项目不是java

  • 64位windows系统下安装Memcache缓存

    最近要玩Memcache,所以需要Windows 64位下搭建Memcache的开发调试环境,记录下自己安装搭建的过程,发现比Linux中搭建简单多了. 这里是我用Windows 7 64Bit安装Memcache的过程 1.安装PHP.Mysql以及Apache,这边环境我就不用多做介绍了,一键环境有很多,几乎不影响Memcache.(我自己的调试环境是PHPStudy) 2.下载安装Memcache,我这里下载的是64位版本. 下载地址:http://www.jb51.net/softs/2

  • golang 64位linux环境下编译出32位程序操作

    目标:在64位linux系统上编译出32位程序. 操作: 1.执行 go env 查看当前go环境配置 2.执行 export GOARCH=386 配置go输出系统平台为32位 3.go build 编译程序 4.使用file main 指令查看编译出的可执行程序是否为32位 实践图片: 补充:golang float32/64与[]byte互转 网络协议开发中经常需要将int.float.bool等转为二进制数据,float32.64 与[]byte处理: import ( "encodin

  • Win2003 R2 SP2 64位服务器系统 配置PHP+IIS6

    有人会问,我为什么不用Apache来配置,因为我的服务器还要运行一个.NET的网站,而且网站和论坛之间实现了同步注册和登陆. FastCGI是IIS下配置PHP的一个新东西,配置方便,不受PHP的32或64位影响.但是问题也存在,最近论坛总是时快时慢,慢的时候响应超过20秒,最近几天还出现php-cgi.exe进程爆增的情况,一次出来超过30个进程,导致服务器卡死,只有重新回收程序池才能处理掉,这样就非常差劲. 因为这样的情况我又想用会原来的ISAPI方式来运行PHP了, 也就是刚刚我才把ISA

  • 在双硬盘上安装独立32位和64位双系统

    现在的64位操作系统还没有中文版,加之受兼容性问题的影响,组建独立多系统显然已成为最佳的解决方案.很多朋友在配置64位硬件平台时已购入了SATA硬盘,但同时拥有SATA和PATA硬盘的朋友也不在少数,下面就来说明怎样在这两块硬盘上构建32位和64位Windows XP的独立双系统. 一.设置SATA硬盘 说明:本次用于试验的硬盘为: PATA接口的希捷40GB和SATA接口的希捷80GB硬盘各一块.怎样设置SATA硬盘,由主板决定,本文以硕泰克SL-K8AV2-R1L主板上的设置方法为例.各位朋

  • Windows7 64位 旗舰版下VirtualBox 4.3.12安装教程

    写在前面 2014.6 发布<快速入门> 2015.6 更新扩展阅读 2016.1 更新扩展阅读 1.VirtualBox虚拟机--这是什么? VirtualBox 是一款开源虚拟机软件.先后被 Sun.Oracle 收购后,正式更名"Oracle VM VirtualBox". 它体积小,只有100Mb 左右,运行占用资源也少,方便携带和部署,可以满足我们在上面虚拟几乎所有系统环境.其导出的虚拟电脑(ova格式).虚拟磁盘(vmdk格式)可以与VMware 相互支持. 由

  • 实现让易语言编译的32位程序在64位Windows7系统非管理员帐户中执行

    昨天有易语言开发者向我求助,说他用易语言编译的32位程序软件,发布给64位操作系统Win 7用户使用,因为该用户确定没有管理员权限,而程序启动时又要求必须输入管理员密码,如此陷入困境. 目标企业用户管理严格,要求为普通用户分配管理员权限是不切实际的,只能开发人员从软件开发的角度在技术上解决. 我听到这个问题后,第一感觉是微软用户帐户控制(UAC)引发的,估计通过给 exe 添加特定的 manifest 资源应该可以解决.于是我给了他一段代码,让他用 ResHacker 之类的软件添加到软件里面去

  • CentOS系统下Apache配置多域名或多端口映射的方法

    前提 CentOS下Apache默认网站根目录为/var/www/html,假如我默认存了一个CI项目在html文件夹里,同时服务器的外网IP为ExampleIp,因为使用的是MVC框架,Apache需开启重定向功能. 方法如下 /etc/httpd/conf/httpd.conf文件配置如下: DocumentRoot "/var/www/html/CI" <Directory /> Options FollowSymLinks AllowOverride All <

  • java在linux系统下开机启动无法使用sudo命令的原因及解决办法

    操作系统:centos 5.2场景描述:我们有一个WEB工程,客户要求使用普通用户(例如chb)运行,然后在页面上有个按钮,点击之后可以关机 实现方式:1. JAVA代码: 复制代码 代码如下: public static boolean shutDownForLinux() {                try {                        Runtime.getRuntime().exec("sudo /sbin/poweroff");           

  • Linux系统下C语言gets函数出现警告问题的解决方法

    发现问题 最近在Linux下编译C语言,用到gets这个函数,代码如下: #include <stdio.h> #include <string.h> #include <string.h> void main(){ char s[100]; // 存放输入的字符串 int i, j, n; printf("输入字符串:"); gets(s); n=strlen(s); for(i=0,j=n-1;i<j;i++,j--) if(s[i]!=s

随机推荐