idea 遠端除錯 tomcat web應用
阿新 • • 發佈:2022-05-04
最近在做的一個東西,測試環境和本地環境差距太大,本地能執行的程式碼,放到測試環境上到處報錯,哪裡哪裡都連不上,所以決定把程式碼部署到遠端伺服器上除錯,節省時間。
網上看了很多教程,大部分都是互相抄來抄去,照做了也調不通,所以決定把自己的步驟發上來,但是不會對這些步驟作詳細解釋,需要明白原理的童鞋請自行百度...
遠端環境: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,接下來就可以在程式中打斷點,並且開啟除錯了。