首先介紹下適用情形,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即可。
總結下:第一種方法適合偶爾需要部署項目的情況,第二種適合開發時需要經常重新部署項目的情況 。
本篇博文參考了: