eclipse+maven部署javaweb專案到遠端tomcat8伺服器
在使用eclipse做javaee開發的時候,我們通常是在eclipse中建立一個tomcat,然後將專案部署到tomcat下,如果部署到遠端,我們需要手動將war包部署到遠端伺服器的tomcat/webapps目錄下,tomcat7-maven-plugin外掛讓我們可以對maven構建的webapp直接部署到遠端伺服器,而且無需重啟tomcat,這裡既可以部署到tomcat7,通過同樣的方式,也可以部署到tomcat8上,下面介紹部署過程。
部署過程:
0、部署的前提是有maven web專案,這裡略過。
1、設定tomcat8管理使用者名稱和密碼。
在tomcat安裝目錄下conf下的tomcat-users.xml配置檔案的tomcat-users節點下新增如下配置。
<role rolename="admin-gui"/> <role rolename="manager-gui"/> <role rolename="manager-jmx"/> <role rolename="manager-script"/> <role rolename="manager-status"/> <user username="admin" password="123456" roles="admin-gui,manager-gui,manager-jmx,manager-script,manager-status"/>
tomcat管理員需要管理app,所需的許可權都在這裡面。如果後面部署出現403許可權問題,基本就是這裡的配置有問題。
2、配置部署外掛。
這裡需要配置遠端伺服器manager app的地址。然後就是登陸管理介面的使用者名稱和密碼。
3、maven build。
專案右鍵->Run As->Run Configurations。
在配置頁面左側,選擇Maven Build並新建一個配置 launch configuration,指定專案位置,在Goals處輸入compile tomcat7:deploy。如下圖所示:
如果是第二次部署,可以將Goals改為 compile tomcat7:redeploy。
選擇Run,然後等待部署,第一次會從倉庫下載依賴jar包。會比較慢,部署成功,會列印如下資訊:
[INFO] Processing war project [INFO] Copying webapp resources [E:\workspace\web-parent\web-controller\src\main\webapp] [INFO] Webapp assembled in [58 msecs] [INFO] Building war: E:\workspace\web-parent\web-controller\target\web-controller.war [INFO] WEB-INF\web.xml already added, skipping [INFO] [INFO] <<< tomcat7-maven-plugin:2.2:deploy (default-cli) < package @ web-controller <<< [INFO] [INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ web-controller --- [INFO] Deploying war to http://10.119.9.149:8080/web-controller Uploading: http://10.119.9.149:8080/manager/text/deploy?path=%2Fweb-controller Uploaded: http://10.119.9.149:8080/manager/text/deploy?path=%2Fweb-controller (95 KB at 2309.1 KB/sec) [INFO] tomcatManager status code:200, ReasonPhrase:OK [INFO] OK - Deployed application at context path /web-controller [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.400 s [INFO] Finished at: 2018-06-28T16:22:26+08:00 [INFO] Final Memory: 16M/260M [INFO] ------------------------------------------------------------------------
tomcat8伺服器部署日誌:
28-Jun-2018 16:22:18.976 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 28-Jun-2018 16:22:18.983 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 28-Jun-2018 16:22:18.987 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 611 ms 28-Jun-2018 16:23:31.596 INFO [http-nio-8080-exec-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /home/hadoop/software/tomcat8/webapps/web-controller.war 28-Jun-2018 16:23:31.628 INFO [http-nio-8080-exec-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 28-Jun-2018 16:23:31.630 INFO [http-nio-8080-exec-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /home/hadoop/software/tomcat8/webapps/web-controller.war has finished in 34 ms
tomcat8 webapps目錄下新增加的web-controller.war以及部署成功之後的web-controller資料夾。
4、訪問部署的專案首頁。
訪問專案地址http://10.119.9.149/web-controller/,會出現helloworld。
5、部署注意事項:
有可能在部署的時候出現:403 Access Denied,回顧第一步和第二步配置,tomcat需要配置使用者名稱,密碼,使用者角色,另外pom.xml配置檔案也需要做配置。
說說這種部署:通常,我們部署專案到遠端伺服器,甚至生產環境伺服器,都是需要登入到遠端伺服器,這時候的使用者名稱和密碼不是tomcat的使用者名稱和密碼,而是相對隱私的東西,我們如果越過這層方式部署,會存在一定的風險。一個開發組裡面,誰都可以這麼部署,但是通過登入伺服器的方式,每個人都有自己的賬號,或者很少人有賬號,會降低不少風險。