首页 > 代码库 > tomcat下部署项目的流程和遇到的问题笔记

tomcat下部署项目的流程和遇到的问题笔记

简单部署流程:

1,解析域名关联到服务器ip

2,配置服务器jre运行环境

3,安装tomcat

4,项目打war包,放入tomcat根目录下webapps(tomcat默认加载的项目目录)目录下

5,启动运行

 

Tomcat增加Context配置导致启动的时候项目加载两次

转自:https://segmentfault.com/a/1190000002985203

Tomcat排雷笔记

1. 出现场景
eclipse发布web应用至tomcat,默认方式下访问该项目是需要带项目名称的,例http://localhost:8080/myapp/。
现在需要改成这样访问http://localhost。
修改tomcat的server.xml文件,增加如下配置<Context path="" docBase="myapp" reloadable="false"/>,修改后host部分如下:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

       <Context path="" docBase="myapp" reloadable="false"/>

      </Host>

此时每次启动tomcat观察日志都会发现应用加载了两次,什么原因呢?

2. 问题原因

虚拟目录引起的问题,我们在Host标签里配置了appBase="webapps",tomcat加载一次应用。在里配置了一次docBase,tomcat又去加载一次应用。

3. 解决办法

将appBase="webapps"置为appBase="",docBase="myapp"置为docBase="webapps/myapp"。配置如下:

<Host name="localhost"  appBase=""
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

       <Context path="" docBase="webapps/myapp" reloadable="false"/>

      </Host>

说明:如果你的项目中的链接或者图片写的都是绝对路径的话,那么带有项目名称的绝对路径是不可以使用的。

tomcat 部署多个项目的技巧  

转自:https://segmentfault.com/a/1190000005942191

方法一、在tomcat的根目录下的 conf文件夹下的server.xml文件中的<Host>标签中加入:

//docBase: 项目的webRoot  path:访问路径  reloadable:是否每次都重新加载
<Context path="/PD_Microportal" docBase="E:\WorkSpace\PD_Microportal\WebContent" debug="0" reloadable="false"/>

然而上面对于多个项目的频繁切换就需要注释来注释去的很麻烦有木有!往下看还有更简单的....

方法二、在tomcat的根目录下的 conf\Catalina\localhost文件下新建xml文件,文件名就是你项目的的path,可以随意起,就是在浏览器上访问的路径名称。你想同时部署几个工程就创建几个xml 注意文件名别重名。然后把这个:

<Context path="" docBase="E:\WorkSpace\项目名称\WebContent" debug="0" reloadable="false"/>

放到你新建的xml文件中。例如:我有以下三个工程: OA、CRM、ERP,那么就需要有oa.xml、crm.xml、erp.xml。然后再新建一个文件夹tep(名字随意),这个文件夹用来存放不需要部署的项目的xml文件。比如:我现在不想部署OA这个项目,那么直接把oa.xml放到tep文件夹下就ok了,下次想部署了在拿出来就是了,有木有很方便呢!

tomcat下部署项目的流程和遇到的问题笔记