代码改变世界

tomcat war包部署

2016-02-01 10:00  youxin  阅读(2625)  评论(0编辑  收藏  举报

平常的开发我们都是通过IDE进行项目的部署,但有时候我们不得不进行手工部署(例如在Server上)。

手工部署分为以下几步:

第1步: 用maven打war包 (假如得到的war包名为: appkit-web.war)

mvn package

如果想打包过程中跳过测试,采用以下命令:

mvn package -Dmaven.test.skip=ture

第2步: 把war包拷贝到tomcat安装的webapps目录下

cp target/appkit-web.war ~/software/apache-tomcat-7.0.54/webapps/

第3步: 启动tomcat (我的tomcat的根目录为:/Users/aborn/software/apache-tomcat-7.0.54)

./bin/catalina.sh run

然后在浏览器中打开 http://localhost:8080/appkit-web/index.html

 

这里有个问题,它默认根目录是要加项目名的,如上加了appkit-web, 这样有些资源文件加载不出来(因为资源文件是以根目录为相对路径)。

要想修改这个根目录,只要修改Tomcat的server.xml配置文件(它在 conf/server.xml)

在<Host>与</Host>之间加上以下这句话

<Context path="/" docBase="appkit-web" debug="0" privileged="true"/>这个配置的path指的是根目录,docBase指的是war名。

这样只要在浏览器上打开:http://localhost:8080/index.html 就行了。

 

    <!-- Tomcat Manager Context --> 
     <Context path="/manager" docBase="manager" debug="0"privileged="true"/> 
    path="" 为部署后运行的url路径,docBase为你的war的文件名。 第一次运行的时候,tomcat会自动解压war,生成path指定名称的网站。

    这里docBase中的"manager"就表示war文件名称为“manager.war"

 

 

修改server.xml在tomcat下部署多个WEB工程  

 

第一步:

server.xml 修改如下:

<Host name="localhost"  appBase="WebRoot" 
unpackWARs="true" autoDeploy="true" 
           xmlValidation="false" xmlNamespaceAware="false"> 
<Context path=""  docBase="F:\myeclipse8work\teset\WebRoot"
workDir="F:\java\tomcat-work" reloadable="true"> 
</Context> 
</Host>
<Host name="zhangda"  appBase="WebRoot" 
unpackWARs="true" autoDeploy="true" 
           xmlValidation="false" xmlNamespaceAware="false"> 
<Context path=""  docBase="F:\myeclipse8work\hibernate\WebRoot"
workDir="F:\java\tomcat-work2" reloadable="true"> 
</Context> 
</Host>   

wordDir  是设置不同项目的缓存目录,不同的项目设置不同缓存目录。
第二步:

 在C:\Windows\System32\drivers\etc下找到hosts文件,修改如下内容:

127.0.0.1   localhost

127.0.0.1  zhangda

去掉前面的“#”。

第三步:

在浏览器输入:http://localhost:8080 可以访问  F:\myeclipse8work\teset\WebRoot  内容。

在浏览器输入:http://zhangda:8080 可以访问 F:\myeclipse8work\hibernate\WebRoot 内容。

 

tomcat server.xml配置

一、修改端口
Tomcat默认的WEB端口为8080,我一般喜欢把它改成80,当然这是完全没有必要的
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
注意是修改HTTP协议的,也就是protocol="HTTP/1.1"的,不是其他的。
二、增加虚拟目录
1、最简单的方式:直接把JavaEE网站放在$CATALINA_HOME/webapps目录下了,然后通过http://localhost/WebName,WebName为网站的目录名
2、自定义:把网站放在其它的目录下,比如放在/var/www/webapp目录下,那么就要修改server.xml了。
在</Host>前增加以下内容即可:
<Context path="/SpringMVC" docBase="/var/www/webapp/SpringMVC" workDir="/var/www/webtmp/SpringMVC" debug="5" reloadable="false" crossContext="true" />
则可以通过http://localhost/SpringMVC访问了,也就是在主机名为localhost中增加了一个名为SpringMVC的虚拟目录了,当然,这里的名字完全依个人而定的。
三、增加虚拟主机
其实这才是本文要说的重点,也就是本文开头说的那种案例。我们每开发一个网站,都是通过http://localhost/WebName的形式访问,是不是很麻烦?
1、修改hosts文件,增加主机名
(1)Linux系统的hosts文件为/etc/hosts
(2)Windows系统的hosts文件为C:\WINDOWS\system32\drivers\etc\hosts
比如你想增加www.local.com主机,则在此文件中增加一行:127.0.0.1 www.local.com,也就是说当你访问www.local.com时,其实是访问127.0.0.1;
我比较喜欢简短的域名,所以我增加的是:127.0.0.1 SpringMVC
2、修改配置文件
在</Host>后再增加一个Host结点:
<Host name="SpringMVC" appBase="/var/www/webapp/SpringMVC" unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false" />
即增加了一个名为SpringMVC的虚拟主机,当然也可以是name="www.local.com",这个根据具体情况定。
这样,访问的IP就是:http://SpringMVC了。
3、目录设置
主机SpringMVC的WEB文件全放在/var/www/webapp/SpringMVC目录下,在该目录下增加ROOT目录,放入你的JavaEE网站工程,这样,你就可以通过http://SpringMVC访问你的网站了,后面少了/SpringMVC这个字串,在IP上与运行环境保持了一致。
四、其它问题
通过http://SpringMVC访问的是SpringMVC网站;
通过http://localhost访问的是Tomcat自带的网站;
我们在hosts文件中已经知道,SpringMVC和localhost都对应的IP是:127.0.0.1
那么,通过http://127.0.0.1访问的是那个网站呢?
在Host的父节点是:<Engine name="Catalina" defaultHost="SpringMVC">
从上可以看出,defaultHost="SpringMVC"决定了127.0.0.1访问哪个网站,我的设置是访问SpringMVC