maven+idea 自動部署專案到linux伺服器及遇到的一些問題
一、環境
本教程使用的環境如下
1. idea 2017
2. tomcat 8.5
3. centos 7
4. maven 3.5
注意:tomcat6 和 tomcat7、8、9會有一些區別,下面會詳細介紹
二、配置【只需完成下面三步】
1、Tomcat 伺服器配置
找到[tomcat安裝的根路徑]/conf/tomcat-users.xml 檔案,編輯如下:
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
</tomcat-users>
role標籤都是定義許可權,user標籤定義的是使用者,usernme和password都是自定義的,roles是賦予該使用者的許可權。
測試配置是否成功
但是有可能會出現 【管理頁面403 Access Denied】錯誤,詳情見下面問題2:
【修改Tomcat埠號-預設是8080】
如果需要修改,找到[tomcat安裝的根路徑]/conf/server.xml ,找到這一段。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
只需修改port的值即可。
二、配置Maven
開啟[Maven的安裝路徑]/conf/setting.xml檔案 ,找到這一段
<servers>
<server>
<id>tomcat8</id>
<username>tomcat</username>
<password>tomcat</password>
</server>
</servers>
id : tomcat+版本號
username : 在Tomcat配置的使用者名稱
password : 在Tomcat配置的密碼
三、使用idea新建一個Maven專案,開啟自動生成的pom檔案,配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ztz</groupId>
<artifactId>deploy-project</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>deploy-project Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
<finalName>deploy-project</finalName>
<plugins>
<!-- maven專案外掛執行配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- maven遠端專案部署外掛 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 填寫自己伺服器的IP地址和埠號,並且其他的不變,Tomcat7、8、9使用這個,Tomcat6使用另一個-->
<url>http://192.168.199.133/manager/text</url>
<server>tomcat8</server>
<!-- 這個賬戶和密碼是自定義的,和Maven,Tomcat中配置要保持一致-->
<username>tomcat</username>
<password>tomcat</password>
<port>80</port>
<!-- 若tomcat專案中已存在,且使"mvn tomcat7:deploy"命令必須要設定下面的程式碼 -->
<!-- 更新專案時,僅需要執行"mvn tomcat7:redeploy"命令即可 -->
<!-- 上述命令無論伺服器是tomcat7、8或9,均是使用"mvn tomcat7:deploy"或"mvn tomcat7:redeploy" -->
<update>true</update>
<!-- 專案路徑 -->
<path>/deploy-project</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
最主要的配置就是<built>標籤中,關於<built>詳解:
finalName:專案名
server: 伺服器名和版本
username: 和tomcat、maven中保持一致
password:和tomcat、maven中保持一致
port:需要部署到的埠,要和伺服器配置的埠一致
path:訪問專案的路徑
其他就可以和上面保持一致。
現在已經完成了所有的配置,那麼就開始測試一下能否部署成功,在idea 中點選右欄[Maven標籤]
雙擊【tomcat7:deploy】完成部署,檢視控制檯資訊
—————————————- 華麗 ——————————————–
遇到的問題1:
Tomcat已啟動,內網可以訪問,但是外網不可以訪問。
答 : 這很有可能是防火牆阻止了瀏覽器的訪問。
解決方式:centos7使用的防火牆是 firewall 而不是 iptables 可以開啟要訪問的埠,先檢視一下防火牆狀態: firewall-cmd –state , 結果是running 或者 not running , 建議running狀態下新增開放埠。
比如需要訪問的是8080埠,則可以這樣
firewall-cmd --permanent --zone=public --add-port=8080/tcp # --permanent 表示永久新增;去掉標識臨時,重啟後恢復
firewall-cmd --reload # 載入配置,使得修改有效。
檢視埠是否開放成功?
firewall-cmd --permanent --zone=public --list-ports #檢視開啟的埠
如果出現 8080/tcp 表示成功 。
需要了解firewall更多,點選這裡。
遇到的問題2:
管理頁面403 Access Denied
這說明你沒有許可權訪問,
解決方式:開啟/webapps/manager/META-INF/目錄下context.xml檔案,將下面這段註釋掉或者修改為下面這段。
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
原因是: \d+.\d+.\d+.\d+ 標識任訪問,如果不新增這個,則只允許前面兩種型別IP訪問,allow中是用正則表示式來表示的。
遇到的問題3 :
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 401 for URL: http://localhost:8080/manager/text/deploy?path=%2Fhelloworld -> [Help 1]
該錯誤是在部署時出現的,是由於許可權問題,可能是你的 tomcat-users.xml中user的許可權不夠,也可能是你的idea中pom檔案的使用者名稱和密碼錯了。
———————————華麗的黃金分割線——————————————————–