简介
部署就是将web应用程序安装到你的Tomcat服务器。
有两种方式可以进行tomcat部署:
- 静态安装:就是在tomcat启动之前安装web应用程序
- 动态安装:就是使用Tomcat Manager这个web应用程序来直接的管理已经部署好的web应用程序(依赖自动部署特性)或者远程操作。
Tomcat Manager就是一web应用程序,以HTML为用户操作接口,基于URLAPI编程,它可以进行部署和管理web应用程序。
依赖于这个web应用程序的Manager有好多种方式进行部署,Apache Tomcat提供了Apache Ant构建工具的入口.Apache Tomcat Maven插件提供和Apache Maven的整合.还有一个客户端部署工具,通过命令行来使用而且还提供了额外的功能,比如:编译、校验、打包 web应用程序。
安装
对于静态web应用程序部署,不需要安装。使用TomcatManager部署功能,也无需安装,一些配置的细节在 Tomcat Manager manual.里面.如果你用Tomcat客户端,你需要安装一下。
Tomcat客户端没有和Tomcat一起打包,必须单独下载,可以通过‘apache-tomcat-7.0.x-deployer’查找下载的位置。
安装Tomcat客户端之前,你应该安装好Apche Ant并且版本是1.6.2以上还有JAVA。添加环境变量ANT_HOME,值为Ant安装的根目录路径,还有JAVA_HOME,值为JAVA安装的目录路径.你可以通过使用Ant脚本和java编译脚本来测试,环境变量是否配置成功。
- 下载Tomcat客户端
- 安装位置无要求
- 请仔细阅读Tomcat Client Deployer
Contexts
一个Context可以理解为一个web应用程序。
为了配置Context,通常需要一个Context相关的配置文件,通常是XML格式。里面可以配置session管理或者命名资源.早期的Tomcat版本,Context配置的内容是放到server.xml文件中,新版本是不推荐的,但是如果你这么配置了,它仍然会起作用.
Context中的信息会告诉Tomcat如何配置上下文,而且像TomcatManager和Tomcat客户端也会根据配置上下文的信息来正确的指向他们的角色.
关于Context文件的位置:
- $CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml
- $CATALINA_BASE/webapps/[webappname]/META-INF/context.xml
注意1和2的配置文件的名称是不同的。如果webapp没有配置context,那Tomcat会使用默认的配置。
静态部署
如果你不喜欢使用Tomcat Manager或者TCD,你需要把web应用程序部署到Tomcat,然后启动Tomcat.对于这种类型的部署,部署web应用程序的位置被称作appBase,它由每个主机来指定.你既可以复制一个打开的web应用程序(即:未压缩的)到这个位置,也可以是一个War形式的文件.
通过主机的appBase属性指定web应用程序的部署的位置,在这个位置的web应用程序,在Tomcat启动的时候将会被部署,但是需要设置主机的deployOnStartup是true.
在Tomcat启动的时候,部署的顺序如下:
- 首先Context描述文件被部署
- 跟Context描述文件相关联的web应用程序被部署.注意:如果在appBase目下有一个与解压好的web应用程序关联的War文件,如果这个War文件更新了,tomcat启动和部署的时候,tomcat是不会发现的。这个解压的web应用程序不会被删除and不会被更新的jar文件内容覆盖。
- WAR文件将会被部署.
动态部署
Tomcat运行的时候也可以进行部署。
当把主机autoDeploy属性设置成“true”的时候,主机会根据需要动态的部署和更新web应用程序,例如把一个新的war包放到appBase下,那么主机需要启动后天运行程序,这个是默认的配置。
autoDeploy设置成“true”,运行的tomcat可以允许如下:
- War包复制到Host的appBase目录下
- 复制解压的web应用程序到Host的appBase目录下
- web应用程序已经部署了从war中,这是需要部署新的war包.在这种情况下 解压开的web应用程序需要删除,然后这个新的war包会再次解压开.注意如果Host的unpackWARS属性设置成“false”,war包不会被解压,这种情况下web应用程序的压缩包只是被更新了。
- 如果WEB-INF目录下的web.xml文件被更新了,这个web应用程序会重启。
- 已经部署的Context Descriptor文件被更新了,web应用程序会重启。
- 如果全局的Context Descriptor文件被更新了,web应用程序会重启。
- 如果一个Context Descriptor文件放到了$CATALINA_BASE/conf/[enginename]/[hostname]/ 目录下,web应用程序会重启。
如果删除文档类文件,web应用程序不会重启。注意在windows系统下,如果Context配置文件中设置了anti-locking,在运行的web应用程序中的资源是允许删除的。
注意重启的web应用程序也可以在加载器中配置,这种情况下,可以跟踪加载类的变化。
用客户端软件部署应用程序
最后,可以使用tomcat客户端部署工具进行web应用程序的部署。它可以进行校验、编译、打包、部署web应用程序到生产环境或者tomcat服务上。需要注意的是它依赖于tomcat manager并且tomcat服务处于运行中。
你需要熟悉apache ant脚本。Apache Ant是一个脚本编译工具。对于Apache Ant模型的理解是需要的(安装列表、熟悉使用操作系统指令、配置环境变量)
TCD包括 Ant任务、JSP编译、上下文描述校验。校验只需要一个参数:web应用程序解压路径。
TCD通过解压开的web应用程序作为输入(查看下边的属性列表),
TCD提供了如下的指令:
- compile(default):编译和校验web应用程序.这个指令可以不需要tomcat运行的情况下执行.编译过的web应用程序仅仅能够运行在相关联的Tomcat服务,肯定不会工作在其他的Tomcat服务中,Jasper生成的代码依赖于它的运行主件,需要注意的是,位于web应用程序下/WEB-INF/classess目录下的java源文件也会被自动编译。
- deploy:部署web应用程序(编译过的或没有编译过的)到Tomcat服务器中。
- undeploy:移除部署的web应用程序
- start:启动web应用程序
- reload:重新加载web应用程序
stop:停止web应用程序
部署也可以进行配置,创建一个叫做deployer.properties的文件放到TCD安装的根目录。在这个文件里面,每个的格式为键-值得形式:
同时,要为Tomcat Manager设置一个用户,否则TCD不能够验证Tomcat Manager并且部署会失败。按照Tomcat Manager页面这样做:build:默认构建的目录为 build/webapp/ {path} ( build默认指向的是 {basedir}/build)执行完编译之后,web应用程序的war包将被部署到 build/webapp/ {path}.war目录下.
- webapp:这个目录里面存放的是被编译和校验后的展开的web应用程序.
- path: 部署web应用程序上下文的路径默认是 /myapp
- url:管理正在运行的web应用程序的URL全路径,默认可以用来部署和解部署web应用程序。你可通过http://localhost:8080/manager/text访问在本地运行的tomcat实例.
- username:Tomcat管理的用户名
- password:Tomcat管理的密码