idea遠(yuǎn)程部署項(xiàng)目到tomcat整理

昨天整一個(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 腳本中添加一下命令,注意雙引號(hào)之間是傳遞給JVM的參數(shù),一個(gè)-D就是一個(gè)KV設(shè)置,保險(xiǎn)起見(jiàn)每行后面留個(gè)空格,因?yàn)椴恢罁Q行符會(huì)不會(huì)生效。

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->左上角+按鈕:


添加部署設(shè)置

輸入部署的別名,比如Test,點(diǎn)擊OK


部署設(shè)置

按照上圖的說(shuō)明填寫(xiě)對(duì)應(yīng)的資料。

如果是ubuntu系統(tǒng),SFTP協(xié)議是默認(rèn)啟用的,賬號(hào)密碼和SSH登錄的一樣是主機(jī)用戶(hù),填完點(diǎn)擊Test SFTP connection測(cè)試一下。這里踩了一坑,還自己搭FTP服務(wù)器,慢的要死。

idea 運(yùn)行設(shè)置


菜單欄Run->Edit Configurations->左上角+按鈕->Tomcat Server->remote:

idea 運(yùn)行設(shè)置

按照?qǐng)D中的說(shuō)明填寫(xiě)對(duì)應(yīng)的資料,Tomcat Server Settings中的設(shè)置,就使用前面的deploy設(shè)置即可。

這里的Application Server設(shè)置也踩了一坑,因?yàn)槭遣渴鸬竭h(yuǎn)端的tomcat,我以為是要填寫(xiě)或者映射到服務(wù)器tomcat的路徑,差點(diǎn)就搭一個(gè)smb服務(wù)出來(lái)。實(shí)際上這里是要本機(jī)的tomcat環(huán)境,用來(lái)解決項(xiàng)目編譯依賴(lài)的,選擇你本機(jī)安裝的tomcat目錄即可。

遇到的問(wèn)題


防火墻設(shè)置

tomcat運(yùn)行起來(lái)之后,默認(rèn)是在8080端口,但是訪問(wèn)云主機(jī),是無(wú)法打開(kāi)測(cè)試頁(yè)面的,這是因?yàn)樵浦鳈C(jī)的防火墻攔截了,要手動(dòng)打開(kāi)你需要的端口。

除了8080以外,還有jdwp端口,rmi等你需要的端口都要打開(kāi),不用再關(guān)掉。出連接錯(cuò)誤了,就看看是不是防火墻設(shè)置問(wèn)題。

tomcat重裝后啟動(dòng)失敗

我買(mǎi)的是阿里云主機(jī),其他的大概也一樣。云主機(jī)有一個(gè)隨機(jī)的id和一個(gè)固定的內(nèi)部ip,它是通過(guò)/etc/hosts來(lái)配置的。在云主機(jī)上部署tomcat不知道為啥要去解析id對(duì)應(yīng)的主機(jī),如果解析失敗就無(wú)法啟動(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是開(kāi)放的,換Idea的rmi端口也不行。

這個(gè)沒(méi)找到解決辦法,只能在部署、調(diào)試的時(shí)候把tcp端口都打開(kāi),完事再關(guān)掉了。如果是正式上線,就想辦法手動(dòng)拷貝吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。