昨天整一個idea遠程部署,搞得頭破血流的,整理一下,免得下次受苦。
幾個常用資源
- tomcat
http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz
- jdk
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
- mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
服務端tomcat配置
在tomcat安裝目錄/bin/catalina.sh 腳本中添加一下命令,注意雙引號之間是傳遞給JVM的參數(shù),一個-D就是一個KV設(shè)置,保險起見每行后面留個空格,因為不知道換行符會不會生效。
CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099 #idea默認jmx端口
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.3.68 #與本機域名或者ip保持一致即可
-agentlib:jdwp=transport=dt_socket,address=15833,suspend=n,server=y" #jdwp調(diào)試端口15833
export CATALINA_OPTS
用以下命令運行tomcat,不要用startup腳本
./catalina.sh run &
idea deploy設(shè)置
菜單欄Tools->Deployment->Configure->左上角+按鈕:

輸入部署的別名,比如Test,點擊OK

按照上圖的說明填寫對應的資料。
如果是ubuntu系統(tǒng),SFTP協(xié)議是默認啟用的,賬號密碼和SSH登錄的一樣是主機用戶,填完點擊Test SFTP connection測試一下。這里踩了一坑,還自己搭FTP服務器,慢的要死。
idea 運行設(shè)置
菜單欄Run->Edit Configurations->左上角+按鈕->Tomcat Server->remote:

按照圖中的說明填寫對應的資料,Tomcat Server Settings中的設(shè)置,就使用前面的deploy設(shè)置即可。
這里的Application Server設(shè)置也踩了一坑,因為是部署到遠端的tomcat,我以為是要填寫或者映射到服務器tomcat的路徑,差點就搭一個smb服務出來。實際上這里是要本機的tomcat環(huán)境,用來解決項目編譯依賴的,選擇你本機安裝的tomcat目錄即可。
遇到的問題
防火墻設(shè)置
tomcat運行起來之后,默認是在8080端口,但是訪問云主機,是無法打開測試頁面的,這是因為云主機的防火墻攔截了,要手動打開你需要的端口。
除了8080以外,還有jdwp端口,rmi等你需要的端口都要打開,不用再關(guān)掉。出連接錯誤了,就看看是不是防火墻設(shè)置問題。
tomcat重裝后啟動失敗
我買的是阿里云主機,其他的大概也一樣。云主機有一個隨機的id和一個固定的內(nèi)部ip,它是通過/etc/hosts來配置的。在云主機上部署tomcat不知道為啥要去解析id對應的主機,如果解析失敗就無法啟動。如果報這個錯誤,用以下命令恢復主機映射即可。
echo "172.17.x.x iZXXXZ" >> /etc/hosts
ip地址是你云主機的內(nèi)部地址,iZXXXZ是報錯的主機id。就是這玩意折騰了我半宿,最后找阿里云客服給的解決方案。
idea部署失敗
配置完后使用run直接部署服務或者debug,在本地的虛擬機上是可以的,但是在云主機上,就回報java rmi 連接超時,查看防火墻的端口1099是開放的,換Idea的rmi端口也不行。
這個沒找到解決辦法,只能在部署、調(diào)試的時候把tcp端口都打開,完事再關(guān)掉了。如果是正式上線,就想辦法手動拷貝吧。