zoukankan      html  css  js  c++  java
  • Tomcat建立多个应用(Web Server),多个主机,多个站点的方法

    https://blog.csdn.net/chungle2011/article/details/52317433

    http://piperzero.iteye.com/blog/1475773

    转的一篇博文,格式,内容写的都相当清爽

    ---------------------------------------------------------------------------

    当你使用Tomcat作为Web Server的时候,是不是会想过这样的一个问题:如何利用Tomcat建立多个Web应用 呢?
    要实现这一点是很简单的,也有多种方法.(以下说明使用%tomcat_home%代表Tomcat安装目录).

    一.首先介绍一下Tomcat及server.xml

    Tomcat服务器是由一系列的可配置的组件构成,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

    样例:

    1. <Server>
    2. <Servicename="Catalina">
    3. <ConnectoracceptCount="100"connectionTimeout="20000"disableUploadTimeout="true"port="8080"redirectPort="8443"maxSpareThreads="75"maxThreads="150"minSpareThreads="25"/>
    4. <Connectorport="8009"protocol="AJP/1.3"protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"redirectPort="8443"/>
    5. <EnginedefaultHost="localhost"name="Catalina">
    6. <HostappBase="webapps"name="localhost">
    7. <LoggerclassName="org.apache.catalina.logger.FileLogger"prefix="localhost_log."suffix=".txt"timestamp="true"/>
    8. </Host>
    9. <LoggerclassName="org.apache.catalina.logger.FileLogger"prefix="catalina_log."suffix=".txt"timestamp="true"/>
    10. <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"/>
    11. </Engine>
    12. </Service>
    13. </Server>

    二.建立多个Web应用方法:

    在这之前,我已经将默认8080更改为80了.

    1.通过配置多个元素(这是最为普遍的方法)
    在下配置多个元素

    1. <Contextpath="webapps"docBase="C:Program FilesApache Software FoundationTomcat 5.5webappsROOT"debug="0"reloadable="true"></Context>
    2.  <Contextpath="webapps2"docBase="C:Program FilesApache Software FoundationTomcat 5.5webapps2ROOT"debug="0"reloadable="true"></Context>

    然后通过 主机名:端口/应用名 访问,如: http://localhost/app1 或 http://localhost/app2

    2.通过配置多个元素
    在下配置多个元素

    1. <HostappBase="webapps"name="xok.la">
    2. <Alias>www.xok.la</Alias>
    3. <Contextpath=""docBase="C:Program FilesApache Software FoundationTomcat 5.5webappsROOT"debug="0"reloadable="true"></Context>
    4. </Host>
    5. <HostappBase="webapps2"name="xok.cc">
    6. <Alias>www.xok.cc</Alias>
    7. <Contextpath=""docBase="C:Program FilesApache Software FoundationTomcat 5.5webapps2ROOT"debug="0"reloadable="true"></Context>
    8. </Host>

    然后通过 主机名:端口 访问,如: http://xok.la 或 http://xok.cc
    需要注意的是这样需要机器连接到局域网上.

    3.通过配置多个元素(多端口 多应用)
    在下配置多个元素

    1. <Servicename="Catalina">
    2. <ConnectoracceptCount="100"connectionTimeout="20000"disableUploadTimeout="true"port="80"redirectPort="8453"maxSpareThreads="75"maxThreads="150"minSpareThreads="25"/>
    3. <Connectorport="8019"protocol="AJP/1.3"protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"redirectPort="8453"/>
    4. <EnginedefaultHost="localhost"name="Catalina">
    5. <HostappBase="webapps"name="localhost">
    6.  <Contextpath=""docBase="C:Program FilesApache Software FoundationTomcat 5.5webappsROOT"debug="0"reloadable="true"></Context>
    7. </Host>
    8. <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"/>
    9. </Engine>
    10. </Service>
    11. <Servicename="Catalina2">
    12. <ConnectoracceptCount="100"connectionTimeout="20000"disableUploadTimeout="true"port="90"redirectPort="9443"maxSpareThreads="75"maxThreads="150"minSpareThreads="25"/>
    13. <Connectorport="9009"protocol="AJP/1.3"protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"redirectPort="9443"/>
    14. <EnginedefaultHost="localhost"name="Catalina">
    15. <HostappBase="webapps"name="localhost">
    16.  <Contextpath=""docBase="C:Program FilesApache Software FoundationTomcat 5.5webapps2ROOT"debug="0"reloadable="true"></Context>
    17. </Host>
    18. <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"/>
    19. </Engine>
    20. </Service>

    第2个应用只是在默认端口第1位数字上加1
    定义了两个Service分别是Catalina和Catalina2,侦听的端口分别是80和90
    然后通过 主机名:端口 访问,如: http://localhost:80 或 http://localhost:90

    第2,3种都经过本人测试.

    https://blog.csdn.net/dzh0622/article/details/53483646

    好处:

    1.tomcat部署,更新一个站点不用重启所有站点

    2.tomcat启动后的命令窗口,如果关闭,则tomcat服务不会挂掉

    方法:

    1.使用tomcat多实例部署方式,1个网站=1个tomcat实例=1个端口号;

    2.将每个tomcat实例分别制作成不同的windows服务;

    步骤:

    现在我要部署2个网站,分别是ebm-web和ebm-mobile-web

    1.下载tomcat,解压后如图:

    2.在目录下新建文件夹ebm-web,将除bin,lib以外的文件夹拖入ebm-web(为了实现多实例)

    3.打开conf/server.xml文件进行修改,修改3个端口号(很关键!跟其他实例不能重复!!!);

    (关闭tomcat的端口)

    (网站端口)

    (tomcat AJP端口,我也不知道是个啥)

    还要在HOST节点下增加一个Context配置;

    <Context path="" docBase="D: omcatapache-tomcat-8.0.29ebm-mobile-webwebapps" debug="0" reloadable="true" crossContext="true" sessionCookieName="ebm-mobile-web" />

    上句标红处要修改;(docBase为网站程序路径,sessionCookieName是为了站点之间的session不会乱)

    接下来把ebm-web项目内容拷贝到webapps下;(注意:直接拷里面的内容,这样我就直接访问localhost:xxx了,而不是localhost:xxx/ebm-web);

    然后到tomcat路径下的/bin里,在此处打开命令行(shift+右键);

    执行命令(创建windows服务):

    [plain] view plain copy
     
    1. set CATALINA_HOME=D: omcatapache-tomcat-8.0.29            #设置环境变量CATALINA_HOME为当前tomcat根目录  
    2. set CATALINA_BASE=D: omcatapache-tomcat-8.0.29ebm-web    #设置环境变量CATALINA_BASE为当前tomcat实例目录  
    3. service install ebm-web                                     #此处ebm-web为windows服务名  
    4. Tomcat8.exe //US//ebm-web --Startup=auto                    #设置为开机自动启动  
    5. #正式环境需要调整jvm内存(测试环境可不调),再执行下面的语句,分别表示初始内存和最大内存,单位为MB  
    6. Tomcat8.exe //US//ebm-web --JvmMs=1024 --JvmMx=2048  

     成功的话,如下图:

    最后,打开windows服务(任务管理器-服务)ebm-web就跑起来了;

    接下来是ebm-mobile-web,重复上面的步奏,记得改端口之类的,上图

    删除服务的命令为:

    [plain] view plain copy
     
    1. service.bat remove 你的服务名  
     

    注意:调整jvm内存

    tomcat的默认内存比较小,可能会导致内存不足的异常,所以在正式环境我们需要将内存调大。

    方法一:

    在tomcat安装目录的bin目录执行:

    [plain] view plain copy
     
    1. Tomcat8.exe //US//你的服务名称 --JvmMs=1024 --JvmMx=2048  

    重启你的服务。

    方法二:

    在tomcat的bin目录找到service.bat文件,用编辑器打开,在文件末尾找到JvmMs和JvmMx两个参数,分别表示初始内存和最大内存大小,单位为MB,根据服务器内存情况调大其数值,重新安装你的服务才能生效。

  • 相关阅读:
    OnEraseBkgnd、OnPaint与画面重绘
    .编译ADO类DLL时报错的解决方案
    VC列表框样式
    Codeforces 131D. Subway 寻找环树的最短路径
    Codeforces 103B. Cthulhu 寻找奈亚子
    Codeforces 246D. Colorful Graph
    Codeforces 278C. Learning Languages 图的遍历
    Codeforces 217A. Ice Skating 搜索
    Codeforces 107A. Dorm Water Supply 搜图
    Codeforces 263 D. Cycle in Graph 环
  • 原文地址:https://www.cnblogs.com/linus-tan/p/8949781.html
Copyright © 2011-2022 走看看