昨天整一個(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->左上角+按鈕:
輸入部署的別名,比如Test,點(diǎn)擊OK
按照上圖的說(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:
按照?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)拷貝吧。