利用ant将Web项目部署至远程Tomcat
首先介绍下适用情形,Tomcat服务器位于另一台主机,同时数据库也在该主机之上,在将项目部署到远程Tomcat上之前自己一直是适用本地Tomcat进行测试的,但由于需要执行shell脚本,所以需要将项目部署到远程服务器上。
远程计算机环境:CentOS Tomcat6 mysql jdk1.6.0
本地环境:Windows7 MyEclipse8.5(已经附带了Ant插件) jdk1.6.0
变量约定(需要根据你的安装情况代入具体值): CATALINA_HOME="/workspace/apache-tomcat-6.0.24" (远程tomcat的安装路径) ANT_HOME="C:\Users\xuyongjia\AppData\Local\Genuitec\Common\plugins\org.apache.ant_1.7.1.v20090120-1145"(本地MyEclipse的ANT插件目录)
部署至远程Tomcat的方法有两种:手动上传部署和利用脚本自动部署(当然,本质是一种,只是根据手续繁简这么分)。这两种方法的第一步都需要向Tomcat的配置文件添加可以远程上传项目的账号。
1.向Tomcat添加可以远程上传项目的账号
需要编辑$CATALINA_HOME/config/tomcat-users.xml,加入新用户信息,例如 <user name="forupload" password="forupload" roles="manager" />,修改后重启Tomcat。tomcat-users.xml修改后如图(我添加了两个,一个就足够了):
重启Tomcat后,远程访问 http://{远程服务器ip:port}/manager/html,我所需访问的是http://192.168.1.126:8080/manager/html,这时会需要填入上传用户的用户名和密码,输入刚才所添加的用户名密码,如图:
如果可以正常跳转,就完成了服务器端的配置。
2.上传Web项目至远程Tomcat:
(1)方式一,手动上传(不使用Ant,直接上传war):
a.在MyEclipse中,右键项目->Export(导出)->Java EE(如果有EJB貌似要选择EAR,由于自己没有使用EJB所以直接选择了WAR)->WAR FILE->Next->选择要导出的项目->选择导出地址->Finish;
b.在成功跳转http://192.168.1.126:8080/manager/html(需要修改成你的IP、port)后,在该页面的下方有一处“WAR file to deploy”,选择刚才导出的文件并点击“Deploy”按钮,点击后,如果在网页的上部没有出错信息,且在上传的项目已在“Applications”的列表中,就说明部署成功,效果如图:
c.输入连接,该项目已可正常访问:
(2)方式2,利用Ant脚本上传:
a.将$CATALINA_HOME/lib/catalina-ant.jar复制到本地的$ANT_HOME/lib目录下(可以直接在本地备一份Tomcat,方便使用,并不一定非从服务器拷贝);
b.将该catalina-ant.jar添加到MyEclipse的ant的classpath中(windows-->preferences-->Ant-->runtime-->classpath->Global Entries->Add External JARs),效果如图:
c.在项目的根目录下新建build.xml文件,并填入内容。
其中有几处需要按自己的项目进行修改:
- path:用于回头访问该项目的后缀路径: http://ip:port/path
- url:远程Tomcat的管理页面路径 http://ip:port/manager
- username、password 这个是填写你所设的上传用户的账号和密码
<project name="TestWeb" default="redeploy" basedir="."> <!-- Configure the directory into which the web application is built --> <property name="build" value="${basedir}/WebRoot/WEB-INF/classes" /> <property name="dist.dir" value="${basedir}/dist" /> <!-- Configure the context path for this application --> <property name="path" value="/TestWeb" /> <!-- Configure properties to access the Manager application --> <property name="url" value="http://192.168.1.126:8080/manager" /> <property name="username" value="forupload" /> <property name="password" value="forupload" /> <!-- Configure the custom Ant tasks for the Manager application --> <target name="_def_tomcat_tasks"> <!-- tasks: deploy,undeploy,reload,stop,start,list,roles,resources --> <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" /> <taskdef name="list" classname="org.apache.catalina.ant.ListTask" /> <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask" /> <taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask" /> <taskdef name="roles" classname="org.apache.catalina.ant.RolesTask" /> <taskdef name="start" classname="org.apache.catalina.ant.StartTask" /> <taskdef name="stop" classname="org.apache.catalina.ant.StopTask" /> <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" /> </target> <!-- Executable Targets --> <target name="compile" description="WebSip manage"> <mkdir dir="${dist.dir}"/> <war destfile="${dist.dir}/TestWeb.war" webxml="WebRoot/WEB-INF/web.xml"> <classes dir="WebRoot/WEB-INF/classes" /> <fileset dir="WebRoot" excludes="WEB-INF/**" /> <lib dir="WebRoot/WEB-INF/lib" /> </war> </target> <target name="redeploy" description="Remove and Install web application" depends="_def_tomcat_tasks"> <antcall target="undeploy"/> <antcall target="deploy"/> </target> <target name="deploy" description="Install web application" depends="_def_tomcat_tasks,compile"> <deploy url="${url}" username="${username}" password="${password}" path="${path}" war="${dist.dir}/TestWeb.war" /> </target> <target name="undeploy" description="Remove web application" depends="_def_tomcat_tasks"> <undeploy url="${url}" username="${username}" password="${password}" path="${path}" /> </target> <target name="reload" description="Reload web application" depends="_def_tomcat_tasks,compile"> <reload url="${url}" username="${username}" password="${password}" path="${path}"/> </target> </project>
在MyEclipse中右键build.xml->Run as->Ant Build,如果看成功消息,就说明成功部署了,如图:
当对项目做出修改后(要先Build Project,或者Build Automatically),重新右键build.xml->Run as即可。
总结下:第一种方法适合偶尔需要部署项目的情况,第二种适合开发时需要经常重新部署项目的情况 。
本篇博文参考了: