idea远程调试(阿里云服务器)jar包,linux服务器远程调试jar包
我有一个jar包,我通过FinalShell软件,将jar包部署到阿里云服务器中(linux),假如想在本地用idea远程调试jar包应该怎么做?
前言
我有一个jar包,我通过FinalShell软件,将jar包部署到阿里云服务器中(linux),假如想在本地用idea远程调试jar包应该怎么做?
(我本地用于连接阿里云服务器用的软件是FinalShell)
1、更改pom.xml
在pom.xml中,添加如下代码:
<jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n</jvmArguments>
记住5005这个端口,后面要用(这个端口可以改成其它,只要不是已经占用了的就行)

2、配置RemotDebug
idea中,点击Edit Configurations---->点击新增---->选择Remote

点ok保存。
3、开放端口
在阿里云控制台首页,点云服务ECS,去配置安全组规则

在规则中开放5005端口(也就是项目里pom.xml中配置的端口)

如果这么配置了,还是访问不了5005端口,可以在linux中执行下面几个命令:
sudo iptables -L -n | grep 5005
sudo iptables -I INPUT -p tcp --dport 5005 -j ACCEPT
sudo iptables-save
不管是5005端口也好,还是nginx代理的端口也好,如果在阿里云配置了安全组还是访问不了,就试试上面三个命令。
一开始我按照百度找的阿里云部署项目教程一步步去做,把项目部署上去用nginx代理,阿里云也配置开放了端口,但就是没用访问不了,死活找不出问题在哪。教程都只提到了配置安全组规则,没提到这几个命令,排查了我一天,后面执行这三个命令就可以了,我也不知道是为啥。
4、项目部署和启动
上面改配置的都配置好了,那我们就可以打包部署了。
打包完上传到服务器中,使用nginx代理,要注意nginx配置,server里的listen端口如果是80,这个是nginx默认端口,不需要执行我说上面说到的三个命令应该也是可以的。如果是其它端口,比如8080,就需要。
参考如下配置:
server
{
listen 8080;
server_name localhost;
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
# web端
location /{
root /home/admin-web/;
index index.html;
try_files $uri $uri/ /index.html;
}
# h5端
location /h5/ {
alias /home/admin-app/;
index index.html
try_files $uri $uri/ /index.html;
}
# 后端管理系统
location /admin-api {
proxy_pass http://localhost:7070/admin-api;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
client_max_body_size 10m; # 允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; # 缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; # nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; # 后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; # 连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; # 设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; # proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k; # 高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
access_log /www/wwwlogs/localhost.log;
error_log /www/wwwlogs/localhost.error.log;
}
注意nginx的listen端口8080,和前面我们pom.xml配置的5005端口是不同的,8080是我们访问页面或者调接口用的端口,5005是我们远程监听的端口。
部署好后,我们就可以启动jar包了,使用如下命令启动:
java -agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n -jar /home/admin-server/admin-server.jar
或者是:
nohup java -agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n -jar /home/admin-server/admin-server.jar > /home/admin-server/logs/admin-server.out 2>&1 &
/home/admin-server/admin-server.jar 这个是jar包路径
/home/admin-server/logs/admin-server.out 这个是日志输出路径
这两个命令的区别在于:第一个命令如果远程服务器连接断开,则jar运行也会关掉;第二个命令则可以让jar一直在后台运行,即使远程连接断开也不影响。第一个就和我们平时启动jar是一样的,控制台会输出日志;第二个启动之后输出一个进程就没有了,日志需要去 admin-server.out 文件中查看。
5、本地测试是否能连接远程5005
服务器部署和启动项目后,我们可以测试下本地是否能连接到5005端口,打开cmd,执行如下命令:
telnet 远程ip 5005
测试能不能连接其它端口也是一样的,比如测试8080端口:telnet 远程ip 8080
如果执行后,提示“telnet 既不是内部命令也不是外部命令”,则按照以下步骤安装telnet:

6、idea开始调试
最后,打开idea,debug启动我们第二步配置的RemotDebug,如果控制台出现这句话,就表示连接成功,那么我们就可以愉快地进行调试啦!

在需要的地方打上断点,然后去浏览器访问前端页面也好、在postman直接调用接口也好。
最后
用idea进行远程调试,需要保证要调试的代码和服务器上的jar包一致。
更多推荐
所有评论(0)