本文主要讲在Tomcat中部署项目的几种方式:静态部署、动态部署。html
静态部署项目有好几种方式,比较典型的有以下4种:java
直接将web项目文件件拷贝到webapps目录中,Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载全部这个目录下的应用。web
也能够将web项目打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的全部内容进行压缩获得。具体如何打包,可使用许多开发工具的IDE环境,如Eclipse等。也能够用 cmd 命令:jar -cvf mywar.war myweb。apache
webapps这个默认的应用目录也是能够改变。打开Tomcat的conf目录下的server.xml文件,将下面内容中appBase修改便可改掉便可:浏览器
1 <Host name="localhost" appBase="webapps" 2 unpackWARs="true" autoDeploy="true" 3 xmlValidation="false" xmlNamespaceAware="false">
建立一个虚拟主机目录方式以下:tomcat
1)修改server.xml文件,在<Engine>标签中新建一个<Host>标签:服务器
<Host name="mytest.com" appBase="mytest" unpackWARs="true" autoDeploy="true"></Host>
其中虚拟主机地址名是mytest.com,目录地址是mytest。网络
2)在Tomcat目录中建立mytest文件夹,并在该文件夹下新建aaa文件夹,在该文件夹中建立1.html文件:app
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <div> 这是test~~ </div> 9 </body> 10 </html>
3)配置hosts代理:webapp
打开本地的C:\Windows\System32\drivers\etc\hosts配置文件,添加127.0.0.1 mytest.com。
修改本地hosts缘由:当在浏览器中打开某个url地址时,首先会到本地hosts文件中查找该域名对应的IP,若是查找不到,就会到对应网络运营商的DNS服务器上解析查找对应的域名的IP,若是查找到了,就返回给浏览器,浏览器就给对应的IP地址发送请求,从而将对应页面请求回来并呈现。而咱们上边配置的mytest.com域名,并非想去网络运营商DNS服务器上查找IP,而是要让其对应到本地计算机IP上,到本地Tomcat中配置的mytest目录中访问资源,所以须要将mytest.com解析地址设置为本地计算机。
4)关闭浏览器代理(非必操做步骤)
说明:在有些公司网络中,都是经过代理服务器访问外部网站的,若是不是经过代理服务器访问外部网站,就能够忽略这个步骤。
关掉代理缘由:不关掉代理的话,就会到代理服务器计算机上请求对应地址内容,而代理服务器上的hosts文件并无配置对应域名的IP。
5)启动Tomcat服务器(已启动的要重启),测试是否部署成功
在浏览器中输入:http://mytest.com:8080/aaa/1.html
显示内容以下说明部署成功:
1)在Host标签内,添加<Context path="/访问资源目录" docBase="e:/xxx"/>
在Tomcat的配置文件中,一个Web应用就是一个特定的Context,能够经过在server.xml中新建Context里部署一个web应用程序。
1 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 2 3 <Context path="/hello" docBase="D:\aaa" debug="0" privileged="true"></Context> 4 5 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 6 prefix="localhost_access_log" suffix=".txt" 7 pattern="%h %l %u %t "%r" %s %b" /> 8 </Host>
说明:
path是虚拟路径;
docBase 是应用程序的物理路径;
workDir 是这个应用的工做目录,存放运行时生成的与这个应用相关的文件;
debug 则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息;
privileged设置为true的时候,才容许Tomcat的Web应用使用容器内的Servlet;
reloadable 若是为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,能够在不重起tomcat的状况下改变应用程序,实现热部署;
antiResourceLocking 和antiJARLocking 热部署是须要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp彻底删除,一般会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就致使自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。
注意:
若是有多个Context标签,其path地址要不同,不然报错;
能够将部署目录放在任何一个目录中,而不用放在Tomcat工程中,例如本示例中放在D盘的aaa文件中。
2)在D盘建立aaa文件夹,并建立1.html文件:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <div> 这是test~~ </div> 9 </body> 10 </html>
3)启动Tomcat(已启动须要重启),测试是否部署成功:
在浏览器中输入:http://localhost:8080/hello/1.html
显示内容以下说明部署成功:
1)打开conf\Catalina\localhost目录,并建立hello4.xml文件,并添加以下内容:
1 <?xml version='1.0' encoding='utf-8'?> 2 3 <Context path="/hello4" docBase="D:\aaa" debug="0" privileged="true"></Context>
2)在D盘建立aaa文件夹,并建立1.html文件
这个在上边步骤都有。
3)启动Tomcat(已启动须要重启),测试是否部署成功:
在浏览器中输入:http://localhost:8080/hello4/1.html
显示内容以下说明部署成功:
动态部署也称做热部署,是指动态建立部署目录后,不须要重启Tomcat就能够生效。必须在Tomcat的管理界面下完成。
动态部署也有两种方式:
1)建立用户名和密码
动态部署都是在Tomcat的管理界面进行的,这里说的管理界面指的是Tomcat项目包中webapps/ROOT下提供的界面,即http://localhost:8080/地址打开的页面。
在这个页面中,右上角有个Manager App按钮,点击这个按钮进入管理界面,但须要输入用户名和密码,所以首先要配置用户名和密码。
配置方法:打开Tomcat项目中conf目录下的tomcat-users.xml文件,在<tomcat-users>标签中添加下面代码:
1 <role rolename="manager-gui"/> 2 <role rolename="manager-script"/> 3 <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
role标签说明:
指定权限,rolename属性有四种权限能够设置:
user标签说明:
username指定用户名;
password指定密码;
roles指定该用户具备的权限,多个权限之间用逗号隔开。
注意:上边这些权限说明能够在Tomcat项目提供的http://localhost:8080/manager/html地址上看到。
2)启动Tomcat服务器,打开http://localhost:8080界面,点击右上角Manager App按钮,输入用户名和密码,进入Tomcat管理界面:
在在页面中,Applications栏目显示的是当前已启动的部署目录地址,从下图能够看到,咱们上边静态方式部署的目录都在:
3)在管理界面中下边Deploy栏目,进行新项目目录添加和管理:
Context Path(required):输入访问路径名,相似静态部署中的,这表明你的应用的访问地址。
XML Configration file URL:中要指定一个xml文件地址,好比咱们在F:\下创建一个hmcx.xml文件,这个是可选项,若是不填该项,就须要在下边的WAR or Directory URL中指定部署目录地址。
WAR or Directory URL:输入部署目录地址。
填写完这些信息,点击下边的Deploy按钮便可完成部署。
这时,咱们在上边的Applications列表中,能够看到路径是/hello5的项目已添加。
4)测试是否部署成功
此次就不须要重启Tomcat,而是在浏览器直接输入:http://localhost:8080/hello5/1.html。
显示以下效果说明部署成功:
在管理界面的Deploy栏目中,还有个WAR file to deploy子栏目,这个就是经过上传.war包方式部署,这种方式更简单。
java工程打包出来的是一个jar包,而Web工程打包出来的是一个WAR包。具体如何建立和打包,后边会补充。
速学堂:http://www.sxt.cn/tomcat/tomcat-deployment.html