1. 程式人生 > >eclipse+maven部署javaweb專案到遠端tomcat8伺服器

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的使用者名稱和密碼,而是相對隱私的東西,我們如果越過這層方式部署,會存在一定的風險。一個開發組裡面,誰都可以這麼部署,但是通過登入伺服器的方式,每個人都有自己的賬號,或者很少人有賬號,會降低不少風險。