1. 程式人生 > 其它 >idea 遠端除錯 tomcat web應用

idea 遠端除錯 tomcat web應用

最近在做的一個東西,測試環境和本地環境差距太大,本地能執行的程式碼,放到測試環境上到處報錯,哪裡哪裡都連不上,所以決定把程式碼部署到遠端伺服器上除錯,節省時間。

網上看了很多教程,大部分都是互相抄來抄去,照做了也調不通,所以決定把自己的步驟發上來,但是不會對這些步驟作詳細解釋,需要明白原理的童鞋請自行百度...


遠端環境:debian 7 ,tomcat7 , jdk1.8

本地:win7,tomcat7,jdk1.8,idea2017

預設jdk均已安裝好。

1.遠端tomcat配置:

部署在/home/YOUR_USERNAME/apache-tomcat-7.0.82

  • conf/server.xml

  這個檔案裡要配置的東西其實不多。

<Connector port="12345" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="12346" />
<!--  這裡是如果不想使用預設的8080埠 改成12345 ajp什麼的同理-->
  • bin/catalina.sh 

  這個檔案裡在開頭加三行:

export CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12347 ##這個地方是jmx除錯埠,需要和idea對應,下文會說明
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=debian"

export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=56723,suspend=n,server=y" ##這裡的address也要和idea裡的對應

export JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=12347 ##同上一個12347
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false -Xdebug"

然後,啟動tomcat: bin/catalina.sh jpda start

注意 不要用其他命令啟動

2.idea相關配置

  • 第一處,本地要有和遠端伺服器上完全相同的tomcat版本
  • 第二處,瀏覽器的位置填的是http://遠端伺服器:埠號
  • 第三處,jmx埠,要跟catalina.sh裡面填的埠相同
  • 第四處,staging方式,我選的是用sftp上傳到遠端環境上,這種方式要求遠端伺服器開啟了ssh並且配置了sftp服務,這裡可以根據你怎麼方便怎麼來。sftp這裡host後面的那三個點點開後的配置裡只用填第一個tab,後面空著。path from root 是/apache-tomcat-7.0.82/webapps ,mapped as是/home/YOUR_USERNAME/apache-tomcat-7.0.82/webapps,因為我在設定host時,設定root是/home/YOUR_USERNAME/。
  • 第五處,host就是遠端主機名,port就是之前在connector中定義的埠號。
  • 最後,before launch的選項卡下,build artifact時選 war,不要選war exploded

3.之前的catalina.sh中配置的

export JPDA_OPTS=

這一行,實際上是和idea的以下部分對應:

 OK,接下來就可以在程式中打斷點,並且開啟除錯了。