首先第一步,需要开启tomcat端的jmx,可以加到catalina.sh脚本中,也可以加到startup.sh,或者/etc/profile,如下(包含远程调试):
#远程调试参数
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
#开启JMX
JAVA_OPTS="$JAVA_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=10.196.52.12"#部署环境IP
如果加到/etc/profile,需要执行source /etc/profile命令,还有就是因为/etc/profile是全局控制,如果启动了多个tomcat,不建议加到这里,测试过加到catalina.sh中不会相互影响,如下图:
edit configuration
“+”->tomcat server->remote
选择SFTP
配置SFTP
输入IP、用户名、密码、root path
root path:我填写的是tomcat部署路径同mapped as
填写远程tomcat地址和端口,并且选择build的artifact
deploy页签,选择部署的项目,和build artifact保持一致
点击run,编译上传项目文件
可以在服务器端,查看tomcat日志,上传完成后,tomcat随即启动项目
注意:
一开始是不会显示jmx port,只有配置完毕才能看到(或者连接tomcat成功,一般都是默认1099端口)
一般不推荐使用此功能上传部署项目,相较于传统的包(war、jar)部署,这个上传的是项目文件,相当于tomcat运行部署文件(war包解压缩后的文件),因此文件小且多,上传速度反而很慢,不能进行快速部署
需要配置远程调试监听端口(和remote远程调试配置类似)
打开edit configuration,查看tomcat server配置,startup/connection选中debug
下面会有一段配置代码
-agentlib:jdwp=transport=dt_socket,address=64387,suspend=n,server=y
可以重设端口号
将此代码添加到远程tomcat bin/catalina.sh下
配置如下:
JAVA_OPTS="$JAVA_OPTS --agentlib:jdwp=transport=dt_socket,address=64387,suspend=n,server=y"
重启tomcat,使配置生效
去除远程部署时需要的build等加载和上传项目artifact
调试代码:
远程调试的时候,一定要保持本地代码和远程代码一致,这样才能保证调试的正确性,因此通常情况可能会用到上述1.2步骤上传本地代码到服务器,或者从本地直接打包最新代码到服务器
参考:
intelliJ一键部署远程tomcat
IntelliJ IDEA 远程部署tomcat应用
Intellij IDEA 配置Tomcat server远程调试
Tomcat server使用IDEA远程Debug调试