昨天整一個(gè)idea遠(yuǎn)程部署笛钝,搞得頭破血流的,整理一下晨抡,免得下次受苦派昧。
幾個(gè)常用資源
- 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
服務(wù)端tomcat配置
在tomcat安裝目錄/bin/catalina.sh 腳本中添加一下命令,注意雙引號之間是傳遞給JVM的參數(shù)剃浇,一個(gè)-D就是一個(gè)KV設(shè)置巾兆,保險(xiǎn)起見每行后面留個(gè)空格,因?yàn)椴恢罁Q行符會不會生效虎囚。
CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099 #idea默認(rèn)jmx端口
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.3.68 #與本機(jī)域名或者ip保持一致即可
-agentlib:jdwp=transport=dt_socket,address=15833,suspend=n,server=y" #jdwp調(diào)試端口15833
export CATALINA_OPTS
用以下命令運(yùn)行tomcat,不要用startup腳本
./catalina.sh run &
idea deploy設(shè)置
菜單欄Tools->Deployment->Configure->左上角+按鈕:
輸入部署的別名角塑,比如Test,點(diǎn)擊OK
按照上圖的說明填寫對應(yīng)的資料淘讥。
如果是ubuntu系統(tǒng)圃伶,SFTP協(xié)議是默認(rèn)啟用的,賬號密碼和SSH登錄的一樣是主機(jī)用戶,填完點(diǎn)擊Test SFTP connection測試一下窒朋。這里踩了一坑搀罢,還自己搭FTP服務(wù)器,慢的要死侥猩。
idea 運(yùn)行設(shè)置
菜單欄Run->Edit Configurations->左上角+按鈕->Tomcat Server->remote:
按照圖中的說明填寫對應(yīng)的資料魄揉,Tomcat Server Settings中的設(shè)置,就使用前面的deploy設(shè)置即可拭宁。
這里的Application Server設(shè)置也踩了一坑洛退,因?yàn)槭遣渴鸬竭h(yuǎn)端的tomcat,我以為是要填寫或者映射到服務(wù)器tomcat的路徑杰标,差點(diǎn)就搭一個(gè)smb服務(wù)出來兵怯。實(shí)際上這里是要本機(jī)的tomcat環(huán)境,用來解決項(xiàng)目編譯依賴的腔剂,選擇你本機(jī)安裝的tomcat目錄即可媒区。
遇到的問題
防火墻設(shè)置
tomcat運(yùn)行起來之后,默認(rèn)是在8080端口掸犬,但是訪問云主機(jī)袜漩,是無法打開測試頁面的,這是因?yàn)樵浦鳈C(jī)的防火墻攔截了湾碎,要手動(dòng)打開你需要的端口宙攻。
除了8080以外,還有jdwp端口介褥,rmi等你需要的端口都要打開座掘,不用再關(guān)掉。出連接錯(cuò)誤了柔滔,就看看是不是防火墻設(shè)置問題溢陪。
tomcat重裝后啟動(dòng)失敗
我買的是阿里云主機(jī),其他的大概也一樣睛廊。云主機(jī)有一個(gè)隨機(jī)的id和一個(gè)固定的內(nèi)部ip形真,它是通過/etc/hosts來配置的。在云主機(jī)上部署tomcat不知道為啥要去解析id對應(yīng)的主機(jī)超全,如果解析失敗就無法啟動(dòng)咆霜。如果報(bào)這個(gè)錯(cuò)誤,用以下命令恢復(fù)主機(jī)映射即可卵迂。
echo "172.17.x.x iZXXXZ" >> /etc/hosts
ip地址是你云主機(jī)的內(nèi)部地址裕便,iZXXXZ是報(bào)錯(cuò)的主機(jī)id。就是這玩意折騰了我半宿见咒,最后找阿里云客服給的解決方案偿衰。
idea部署失敗
配置完后使用run直接部署服務(wù)或者debug,在本地的虛擬機(jī)上是可以的,但是在云主機(jī)上下翎,就回報(bào)java rmi 連接超時(shí)缤言,查看防火墻的端口1099是開放的,換Idea的rmi端口也不行视事。
這個(gè)沒找到解決辦法胆萧,只能在部署、調(diào)試的時(shí)候把tcp端口都打開俐东,完事再關(guān)掉了跌穗。如果是正式上線,就想辦法手動(dòng)拷貝吧虏辫。