intellij idea遠程部署

開發環境centos7+idea2016.3+tomcat8.5+jdk8html

具體操做轉載ilanyu's Blog的博客,我這裏主要增長注意事項。java

實現效果:
在idea中點擊run時,自動將代碼編譯並上傳、部署到遠程服務器中。點擊debug時,進行本地調試。linux

和傳統的在本地服務器相比較的優點:
一、節省開發者開發機的資源,省去了本地服務器的CPU、內存的佔用。
二、若是開發的程序爲Android+J2EE或者IOS+J2EE等須要將服務器IP寫入客戶端,不須要客戶端鏈接到同一局域網。web

遠程服務器操做:centos

修改tomcat的JMX[Java Management Extensions,Java管理擴展]參數。關於JMX的介紹能夠參考。。。百度。tomcat

一、修改環境變量,添加Tomcat啓動參數安全

添加Tomcat啓動參數的方法有多種,我這裏用的是將啓動參數添加到環境變量,這種方法會在重啓服務器後丟失啓動參數,從而避免安全性問題,也能夠直接將參數寫入到catalina.sh中bash

CATALINA_OPTS="-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=1.2.3.4"
export CATALINA_OPTS

二、清空webapps目錄服務器

rm -rf ./webapps/*

三、清空work/Catalina/localhost/目錄app

rm -rf ./work/Catalina/localhost/*

四、啓動Tomcat

./bin/catalina.sh run &

開發機操做:
一、建立J2EE項目,我這裏使用了maven建立了一個Hello World,如圖idea_tomcat_2_1.png

二、添加運行配置
idea_tomcat_2_2_1.png

idea_tomcat_2_2_2.png

idea_tomcat_2_2_3.png

idea_tomcat_2_2_4.pngidea_tomcat_2_2_5.png

idea_tomcat_2_2_6.png

idea_tomcat_2_2_7.png

三、運行項目
idea_tomcat_3_1.png

idea_tomcat_3_2.png

四、運行效果
idea_tomcat_3_3.png

注:1.2.3.4爲我這裏使用的遠程服務器IP,實際使用時須要修改成本身的真實遠程服務器IP

參考資料:
http://blog.lanyus.com/archives/197.html

注意事項:

問題

點擊debug的時候也出現了ubable to connect to ip:1099

分析
問題狀態:
一、經過netstat查看端口號,顯示1100爲LISTEN;監聽是正常的;
二、iptables中已經將端口號1100置爲開放的;
三、遠程經過telnet <ip> <port>時,telnet是正常的;
四、(可是)經過jconsole <ip> <port>進行鏈接時,鏈接不上;
五、(若是)關閉firewall的話,第4步的方式是能夠成功的;

解答
In addition to listening to the port you specified (1100) the JMX server also listens to a randomly chosen (ephemeral) port.
Check, e.g. with lsof -i|grep java if you are on linux/osx, which ports the java process listens to and make sure your firewall is open for the ephemeral port as well.
除了JMX server指定的監聽端口號外,JMXserver還會監聽一到兩個隨機端口號
 

解決辦法一:關閉防火牆(不考慮安全性,推薦)

解決辦法2、能夠經過命令:lsof -i|grep java |grep <pid> 來查看當前java進程須要監聽的隨機端口號,
# netstat -tupln |grep 1101
tcp 0 0 0.0.0.0:1101 0.0.0.0:* LISTEN 13997/java 
# lsof -i|grep 13997
java 13997 root 9u IPv4 132890 0t0 TCP *:37040 (LISTEN)
java 13997 root 70u IPv4 132891 0t0 TCP *:pt2-discover (LISTEN)
java 13997 root 72u IPv4 132892 0t0 TCP *:40085 (LISTEN)
java 13997 root 76u IPv4 146976 0t0 TCP hotnamea:61618->10.88.146.205:49165 (ESTABLISHED)
java 13997 root 84u IPv4 132904 0t0 TCP *:61618 (LISTEN)
java 13997 root 95u IPv4 132936 0t0 TCP *:8163 (LISTEN)

把這些端口設置爲開放狀態。

問題2、

添加以下參數能夠開啓遠程調試。

-agentlib:jdwp=transport=dt_socket,address=49739,suspend=n,server=y

最後,感謝lanyus給屌絲同胞們帶來的idea福利(推薦正版)。

相關文章
相關標籤/搜索