1、部署:是将一个web应用(也可以是三方war包或者是用户自有web应用)安装至Tomcat服务器的过程。
2、部署方式:
- 静态部署:tomcat服务器启动之前将web应用设置完成
- 动态部署:直接操作已经部署的web应用或者使用tomcat自带manager应用管理页面远程操作
3、Context
谈及部署web应用,首先必须理解Context的概念,对于tomcat,Context即是一个web应用。
Context配置:
-
- $CATALINA_BASE/conf/[enginname]/[hostname]/[webappname].xml
<?xml version='1.0' encoding='utf-8'?> <Context path = "test" docBase = "/Users/ouhouki/dev_tools/apache-tomcat-7.0.77/conf/Catalina/localhost/ROOT" reloadable="false" />
-
- $CATALINA_BASE/conf/webapps/[webappname]/META-INF/context.xml(如果应用内不含context.xml,则tomcat加载默认配置)
- $CATALINA_BASE/conf/server.xml(Host标签下添加Context标签)
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"> <!-- path 为应用访问路径,docBase为应用所在目录 --> <Context path = "/root" docBase = "/Users/ouhouki/dev_tools/apache-tomcat-7.0.77/conf/Catalina/ROOT" reloadable="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 "%r" %s %b" /> </Host>
4、启动时部署(静态部署)
tomcat启动前将web应用(或者war包)拷贝至Host标签属性[appBase]配置所在目录(默认配置$CATALINA_BASE/webapps目录),当且仅当Host属性[deployOnStartup]为true时完成启动部署
tomcat启动时加载应用顺序:
-
- 所有Context标签声明应用
- 没有被Context标签关联声明的应用(已有关联war包的应用不会根据war包的更新而更新也不会被删除,而是保持初始)
- 所有war包应用
5、启动中部署(动态部署)
已启动的tomcat中同样可以部署应用,当Host标签属性[autoDeploy]为true时,虚拟机(host)会尝试动态部署更新web应用,即可完成如下操作:
-
- 拷贝至[appBase]的war包动态部署
- 拷贝至[appBase]的应用(exploded web)动态部署
- 重新部署已有的 war包,原有应用(exploded web)被删除,重新解压新提供war包(Host标签属性[unpackWARs=true])
- 当/WEB-INF/web.xml(web.xml中任何[WatchedResource]标签中文件)文件被修改,重新加载web应用
- 已部署应用Context配置被修改,那么该web应用将重新部署
- 依赖全局Context配置或者Host标签中Context配置修改,则对应应用重新部署
- 当前新的Context配置被添加至$CATALINA_BASE/conf/[enginname]/[hostname]/目录,重新部署应用
- 当一个web应用的[docBase]被删除时,解除部署
6、通过管理页面部署:略