Tomcat中绑定多个域名到不同工程
- 格式:doc
- 大小:60.00 KB
- 文档页数:2
一个tomcat部署多个项目并通过不同的端口访问第一步:修改 $TOMCAT_HOME\conf\server.xml文件。
复制Service节点,去掉<Connector port="8009"...这个节点新增Service节点的name属性依次修改为Catalina1、Catalina2……新增Service节点的Connector节点port属性依次修改为8001、8002……(根据机器配置未占用端口,这里按顺序为方便)新增Service节点的Host节点appBase属性依次修改为webapps1、webapps2……下面是新增两个Service节点的配置:具体配置代码如下:<Service name="Catalina1"><Connector port="8081" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLo okups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" di sableUploadTimeout="true" /><Engine name="Catalina1" defaultHost="localhost"><Realm className="erDatabaseRealm" resourceName ="UserDatabase"/><Host name="localhost" appBase="webapps1" unpackW ARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"> </Host></Engine></Service><Service name="Catalina2"><Connector port="8082" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLo okups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" di sableUploadTimeout="true" /><Engine name="Catalina2" defaultHost="localhost"><Realm className="erDatabaseRealm" resourceName ="UserDatabase"/><Host name="localhost" appBase="webapps2" unpackW ARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"></Host></Engine></Service>第二步:在$TOMCAT_HOME目录下新建文件夹webapps1、webapps2……(目录里包含ROOT子目录),里面分别放不同项目(测试只就简单复制$TOMCAT_HOME\webapps\ROOT 目录)第三步:复制$TOMCAT_HOME\confi目录下的Catalina生成多个副本,并依次命名为Catalina1、Catalina2……第四步:启动Tomcat测试第五步:浏览器中一次访问不同端口为了证明是三个不同的项目,我修改了标题分别一第一个、第二个、第三个。
一个空间多个网站(子目录绑定)说明我们空间支持一个空间多个网站,(还支持多个网站多个数据库,多个ftp等),有部分用户,在看了我们的子目录绑定教程(/news.jsp?id=546)后总是不明白,为此我在次写个补充教程!如果您希望做子目录绑定(也称一个空间多个网站),以后我直接称子目录绑定子目录绑定是一个tomcat里放多个网站!我们默认的是一个tomcat里放一个网站,他在webapps/ROOT文件夹里,如果您希望做子目录绑定,就需要登陆默认的主ftp,在跟目录下,建立个webapps2/ROOT文件夹,这个需要您自己手动建立,如图:建立一个wenbapps2文件夹在跟目录下建立个webapps2文件夹,和webapps平级建立好后,和webapps平级!建立好后是上图这样的在建立个ROOT文件夹,要大写在刚刚建立的webapps2下在建立个ROOT文件夹,ROOT文件夹要大写建立好了后把第二个网站上传到您刚刚建立的webapps2/ROOT下,在把数据库发布好相关连接: 网站上传教程: /help2.htm相关连接: mysql数据库发布教程/news.jsp?id=586相关连接: sql2000和sql2005数据库发布教程/news.jsp?id=586把网站上传好,还要把数据库也发布好,把第二个网站发布正常我们现在就假设第二个网站您已经发布正常了,我们现在进行下一步,分配他们同时支持2个网站首先登陆会员,进入管理中心选择您的虚拟主机进行管理(一个用户可能有几个空间,所以的选择一个空间进行管理)进入后,检查域名绑定情况(如果您需要做子目录绑定,至少需要一个已经生效的自己的域名)我们赠送的永久域名访问默认的webapps/ROOT下的网站,用您自己的域名访问第二个网站(webapps2/ROOT),所以必须要有一个您自己的网站这里是永久域名已备案,有备案号,是生效的域名,用他来访问第二个网站这个是您自己的域名域名要先解析到我们的服务器上自定义域名至少要有1个,而且是生效状态(已备案后面是备案号)的,看上图是正确的,如果没有自定义的域名则不能进行子目录绑定!另外永久域名只可以访问默认的webapps/ROOT目录另外域名要解析到我们的服务器上域名解析教程:/news.jsp?id=561域名绑定没有问题我们进行子目录绑定的操作,选择右边的子目录绑定进入点击子目录绑定进入选择要对那个空间进行子目录绑定的操作选择一个主机进行管理点击进入子目录绑定操作,我做个例子,就是把我们网站的论坛的域名 和 解析到webapps2/ROOT下,而永久域名访问的是webapps/root下的网站看我怎么操作刚刚建立个文件夹名称把2个域名都解析到webapps2/ROOT下点后面的设置就可以了,切记不要把多个网站放到一个webapps/root1,webapps/root2 这样的,一定要放多个webapps1/ROOT,webapps2/ROOT这样注意:1:如果设置错误或者混乱了,可以到会员管理中心,高级管理的地方去恢复tomcat配置文件(恢复后他就是默认的),然后在来这里重新设置子目录2:如果设置错误,可以看看我们的子目录帮会代码和解决办法表点这里查看3:做好子目录后重启tomcat生效。
tomcat部署多个项目最近有个项目需要在tomcat部署多个项目:(个人解决方案)第一种:在host中加:<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="/xfpm222" docBase="D:\running\Xfpm2" debug="0"reloadable="true"><Resource name="jdbc/Oraclexfpm222" auth="Container"type="javax.sql.DataSource" maxActive="100" maxIdle="50" maxWait="-1" username="xfpm2"password="xfpm2" driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@162.8.156.40:1521:orcl"/></Context></Host>报错1:ng.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [D:\running\Xfpm2\] instead of [C:\Program Files\T omcat 5.5\webapps\Xfpm2\] - Choose unique values for the 'webAppRootKey' context -param in your web.xml files!at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(Web Utils.java:132)at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebC onfigurer.java:118)......解决1:是两个项目的设置重复了,导致出错,但我发现web.xml里并没有配置webAppRootKey项,然后查阅网上资料,原来是因为如果没有web.xm 内没有设置webAppRootKey项,是为默认设置public static void setWebAppRootSystemProperty(ServletContext servletContext)throws IllegalStateException {String param = servletContext.getInitParameter(WEB_APP_ROOT_KEY_PARAM);String key = (param != null ? param : DEFAULT_WEB_APP_ROOT_KEY);String oldValue = System .getProperty(key);if (oldValue != null ) {throw new IllegalStateException ("WARNING: Web app root system property already set: " + key + " = " +oldValue + " - Choose unique webAppRootKey values in your web.xml files!" );}String root = servletContext.getRealPath("/" );if (root == null ) {throw new IllegalStateException ("Cannot set web app root system property when WAR file is notexpanded");}System .setProperty(key, root);servletContext.log("Set web app root system property: " + key + " = " + root);}从代码看出,该方法其实就是把该web application的根目录的绝对文件路径作为属性保存在System的属性列表中。
同一IP地址实现多域名对应多个Web站点Win2000 Server和NT Server的IIS使用三个参数来决定将哪个网站的数据传送给浏览器:IP地址,主机名和TCP端口。
当我们在浏览器的URL栏输入(举例而已,不是色情网站),浏览器就会查询的IP地址,于是我们的服务器会概述它,你的IP地址,然后浏览器将URL的数据打包,传递到查询到的IP地址的80端口(默认的Web服务端口),如果你的Web服务不使用80端口的话,你需要告诉你的朋友在域名后面加上一个冒号和端口的数值,就像这样::8080。
你的Web服务器将收到这个URL请求,然后根据数据包中标示的目的地地址(你的Internet IP)、TCP 端口号和URL中的主机名判断需要读取哪个主目录下的文件。
下面我们一步一步说明实际的配置:我假设你申请了两个域名:和,以下步骤将让用户访问 的时候读取c:\www1下的网站,访问的时候读取C:\www2的网站,而使用:8080、:8080或直接使用ip地址访问(不带端口号的情况)则读取C:\www8080的网站。
以上的路径和主机名称、端口号可以根据需要自行改变。
1、首先我们建立三个测试目录,在C盘建立:www1,www2,www8080三个目录,然后在三个目录下分别拷贝三个不同的htm文件,把他们改为Default.htm2、打开Intenet 服务管理器,你会看到一个名字为默认站点得网站,处于安全原因我简易你先把它关掉(不要删除,否则重新建立会非常麻烦),点击“默认Web站点”按鼠标右键,或在工具栏点击停止键。
这时别人访问你的域名或IP地址则会出错,不用担心,继续下一步。
3、点击你的计算机名,按鼠标右键,选择“新建”-〉“Web站点”,Win2000会弹出一个网站向导,NT则弹出一个对话框,NT的内容比2000小一些,所以以下全部以2000为例。
按下一步,填写网站的说明,这仅仅是说明,将会出现在Internt 服务管理器的界面中标示你得网站,随便填点什么就行,我喜欢使用域名来标示网站,所以填上,按“下一步”。
Tomcat配置建立多站点、多域名、多端口、多应用、多主机汇总大全当你使用Tomcat作为Web Server的时候,是不是会想过这样的一个问题:如何利用Tomcat建立多个Web应用呢?要实现这一点是很简单的,也有多种方法.(以下说明使用%tomcat_home%代表Tomcat安装目录).一.首先介绍一下Tomcat及server.xmlTomcat服务器是由一系列的可配置的组件构成,tomcat的组件可以在%tomcat_home%/conf/server.xml文件中进行配置,每个Tomcat组件和server.xml文件的一种配置元素对应.主要分为4类:1.顶层类元素:包括和,他们位于整个配置文件的顶层.元素代表整个Catalina Servlet 容器,由org.apache.catalin.Server接口定义.包含一个或多个元素.元素由org.apache.catalin.Service 接口定义.包含一个元素,及一个或多个元素.多个元素共享一个元素.2.连接器类元素连接器类代表了介于客户与服务之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应结果传递给客户.元素由org.apache.catalin.Connector 接口定义.代表了与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果.3.容器类元素容器类元素代表处理客户请求并生成响应的组件.元素由org.apache.catalin.Engine 接口定义.每个只能包含一个元素,元素处理在同一个中的所有元素收到的客户请求.元素由org.apache.catalin.Host 接口定义.一个元素中可以包含多个元素.每个元素定义了一个虚拟主机,她可以包含一个或多个Web 应用.元素由org.apache.catalin.Context 接口定义.代表了运行在虚拟主机上的一个Web 应用.一个元素可以包含多个元素4.嵌套类元素嵌套类元素代表了可以加到容器中的组件,关于server.xml的更多信息,可以参考Tomcat的文档:/webapps/tomcat-docs/config/index.html样例:<Server><Service name="Catalina"><Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25"/><Connector port="8009" protocol="AJP/1.3"protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443"/><Engine defaultHost="localhost" name="Catalina"><Host appBase="webapps" name="localhost"><Logger className="org.apache.catalina.logger.FileLogger"prefix="localhost_log." suffix=".txt" timestamp="true"/></Host><Logger className="org.apache.catalina.logger.FileLogger"prefix="catalina_log." suffix=".txt" timestamp="true"/><Realm className="erDatabaseRealm"/> </Engine></Service></Server>二.建立多个Web应用方法:在这之前,我已经将默认8080更改为80了.1.通过配置多个元素(这是最为普遍的方法)在下配置多个元素<Context path="webapps" docBase="C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT" debug="0"reloadable="true"></Context><Context path="webapps2" docBase="C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps2\ROOT" debug="0"reloadable="true"></Context>后通过主机名:端口/应用名访问,如: http://localhost/app1 或http://localhost/app22.通过配置多个元素在下配置多个元素<Host appBase="webapps" name=""><Alias></Alias><Context path="" docBase="C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT" debug="0"reloadable="true"></Context></Host><Host appBase="webapps2" name=""><Alias></Alias><Context path="" docBase="C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps2\ROOT" debug="0"reloadable="true"></Context></Host>然后通过主机名:端口访问,如: 或需要注意的是这样需要机器连接到局域网上.3.通过配置多个元素(多端口多应用)在下配置多个元素<Service name="Catalina"><Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="80" redirectPort="8453" maxSpareThreads="75" maxThreads="150" minSpareThreads="25"/><Connector port="8019" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8453"/><Engine defaultHost="localhost" name="Catalina"><Host appBase="webapps" name="localhost"><Context path="" docBase="C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT" debug="0"reloadable="true"></Context></Host><Realm className="erDatabaseRealm"/> </Engine></Service><Service name="Catalina2"><Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="90" redirectPort="9443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25"/><Connector port="9009" protocol="AJP/1.3"protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="9443"/><Engine defaultHost="localhost" name="Catalina"><Host appBase="webapps" name="localhost"><Context path="" docBase="C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps2\ROOT" debug="0"reloadable="true"></Context></Host><Realm className="erDatabaseRealm"/> </Engine></Service>第2个应用只是在默认端口第1位数字上加1定义了两个Service分别是Catalina和Catalina2,侦听的端口分别是80和90然后通过主机名:端口访问,如: http://localhost:80 或http://localhost:90。
tomcat多个端口的利用(2020-04-25 16:30:34)转载▼分类:Java,Jsp标签:it目的:完成不同的应用利用不同的端口访问。
例如:sfmanagement那个项目我利用8080访问,而qdsf那个项目我利用8081访问。
实现步骤:(1)由于正常情形下咱们是将项目放在webapps下面。
若是想不通的应用利用不同的端口,咱们需要在与webapps同层的目录上成立咱们的目录,例如:test目录结构如下:D:\Program Files\Java\tomcat\webappsD:\Program Files\Java\tomcat\test他们属于同一层上。
(2)在test下放咱们的项目。
把qdsf那个项目放在Test下,形成了一下目录结构:D:\Program Files\Java\tomcat\test\qdsf而sfmanagement继续放在webapps下面:D:\Program Files\Java\tomcat\webapps\sfmanagement(3)修改D:\Program Files\Java\tomcat\conf下的。
加上一个Service,注意修改:service name,connect port,engine name,defaultHopst,Host name,appBase.====================================<Service name="test"><Connector port="8081" /><Engine name="" defaultHost=""> //那个地址不要跟前面的8080的重复了。
不然,会显现异样<RealmclassName="erDatabaseRealm"resourceName="UserDatabase"/><Host name="" appBase="test">//那个地址的name也要改一下,不要跟8080的name相同,appBase确实是咱们成立的目录。
Tomcat绑定二级域名的配置方法最近因为要测试一个系统 ,使用到Tomcat .因为我们已经有域名了,所以我就再增加一个二级域名解析 .可是Tomcat默认的地址是Localhost:8080/erp/index.jsp.最近因为要测试一个系统 ,使用到Tomcat .因为我们已经有域名了,所以我就再增加一个二级域名解析 .可是Tomcat默认的地址是Localhost:8080/erp/index.jsp.在网上找了一下 ,许多的都是假的 ,感觉到太杂,经过仔细摸索配置好之后,写下过程供网友参考.如果你是有独立主机的 ,首先要弄到一个二级域名 ,这个的配置很简单 ,请看下面这个联接/info.asp?id=326增加解析之后一般是20MIN~24H 之间可以生效 .然后是配置Tomcat环境: WINDOWS Server 2003+ IIS6 .0 + tomcat5.5(单独安装)+ JDK MYSQL 独立IP说明: IIS 里面的是网站 ,因为要考虑做一个办公+进销存+销售管理的程序 ,刚好看到恩信科技的开源ERP系统 ,找过来测试一下看有多大的价值 ,专门找了台机器来测试 ,呵呵 ^_^进入E:\tomcat\conf下打开server.xml将找到<Host name="localhost"一项,将其改为<Host name="HTTP://ERP.***.NET"然后再进入C:\tomcat\conf\catalina\下将目录localhost改名为HTTP://ERP.***.NET ,然后重启tomcat .另外配置二级域名解析 :<hostappbase ="e:project/jave/1"name =www.***.net></host>二级:<hostappbase ="e:project/jave/2"name =erp.***.net></host>三级:<hostappbase ="e:project/jave/2"name =bbs.erp.***.net></host>。
众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但用到的tomcat,配来配去总不成功。
查了些才总算可以,就跟家下经验。
很多朋友搜索的内容基本告诉们这么配置:在Engine标签下增面积Host标签,如下:<Host name="www.site1." appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"></Host><Host name="www.site2." appBase="/xxx/xxx/site2"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"></Host>经过测试这样不行的,只能找到>www.site1.这个域名,因为在site1中appBase 已经指定了默认路径,所以解析site2时就出错了,这时们应该配置为如下:<Host name="www.site1." appBase="/xxx/xxx/site1"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="/xxx/xxx/site1" reloadable="true"/></Host><Host name="www.site2." appBase="/xxx/xxx/site2"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="/xxx/xxx/site2" reloadable="true"/></Host>这样就可以同时访问多个域名而目录不通的了。
基本的Tomcat配置我就不多说了,相信要了解本资料步骤的程序猿已经知道怎么弄了,下面进入正题。
改Tomcat的server.xml (1)
1.1修改端口号 (1)
1.2添加域名绑定 (2)
改Tomcat的server.xml
打开Tomcat根目录的conf文件夹,修改里面的server.xml。
1.1修改端口号
将8080端口改为80端口,因为网页的默认访问端口是80端口。
这样访问页面的时候,后面就不用加端口号了,比如:
:8080则变成了
1.2添加域名绑定
找到<Host></Host>,复制并粘新一个,比如我就绑定了一个的域名,要绑定多个,就依此类推,复制粘新多个出来。
配置项的解释:
appBase:该host下项目工程的目录,相对于tomcat根目录来的。
workDir:项目的工作目录,是指你发面的项目的文件夹名称,如果是MyEclipse这各创建的,一般名就为WebRoot,也就是包含WEB-INF文件夹的文件夹。
docBase:是指你工程文件夹所在的地方,如果是在appBase文件夹下,则和workDir相同,如果不是,请参考的配置。
如果你已经完成上面的步骤,并没有错的话,恭喜你,你只用将你的域名指向本机就可以直接访问了,并且,每个域名可以指向你需要的特定工程。
如果要测试,可以修改WINDOWS\system32\drivers\etc 下面的hosts 文件,格式如下:
如有疑问,请加Q群:76171114 询问,暗号:。