如何将项目部署到远程linux服务器并进行远程调试
- 一、将项目部署到远程服务器
- 二、内网穿透
- 三、nginx反向代理
- 四、远程debug
一、将项目部署到远程服务器
1、将本地web项目打包成war包,如maven项目可双击package进行打包,默认输出路径在target路径下。
2、通过命令将本地的war包传输到远程服务器的tomcat下的webapps:
scp /…/target/XXX.war root@10.211.XX.X:/developer/apache-tomcat-7.0.73/webapps
如上述命令就是把xxx.war copy到远程服务器的webapps目录下。之后将tomcat进行重启,就会war包自动解压到webapps目录下,成功发布该项目,命令如下
//找到tomcat进程
[root@szj logs]# ps -ef |grep tomcat
//kill掉正在运行的tomcat
[root@szj logs]# kill -9 进程号
//进入tomcat的bin目录下,运行startup.sh [root@szj bin]# ./startup.sh
重启后尝试使用服务器ip+port,后面跟上项目名(如:10.211.55.1:8080/demo/login.do ,其中demo是项目名)进行访问。
此时项目部署到远程linux服务器成功。
二、内网穿透
此时在同一个局域网下直接用ip加端口是可以访问到刚刚在linux服务器中部署的项目,但是外界无法访问,如果想外界也访问到该项目,可以采用内网穿透技术,如借助natapp。
登陆natapp,将域名与linux服务器的ip和port进行绑定,并启动natapp,这样外界就可以通过natapp分发给你的域名,来访问到连接在内网的linux服务器上的项目。
如分配给你的域名是 demo.natapp1.cc, 则在访问第一章所发布好的项目时,可以通过demo.natapp1.cc/demo/login.do 进行访问到demo项目中的login.do的方法。
三、nginx反向代理
第二章所进行内网穿透后需要在域名后加项目名,显得繁琐,如果不想这么干,我们可以利用nginx进行反向代理。
首先进入nginx配置,添加如下配置:
server {
listen 80;
autoindex off;
#这里为上面分配的域名demo.natapp1.cc server_name demo.natapp1.cc;
access_log /usr/local/nginx/logs/access.log combined;
index index.html index.htm index.jsp index.php;
#error_page 404 /404.html;
if ( $query_string ~* “.[;’<>].” ){
return 404;
}
location ~ /(mmall_fe|mmall_admin_fe)/dist/view/* {
deny all;
}
location / {
#demo为项目名
proxy_pass http://127.0.0.1:8080/demo/; add_header Access-Control-Allow-Origin *;
}
}
配置好后重启nginx使配置文件生效。
之后进入natapp网站将分配的域名绑定到linux开启的nginx端口,默认是80。
这样当外界在输入域名demo.natapp1.cc时,会进入到linux服务器的nginx上,然后nginx将该请求映射到http://127.0.0.1:8080/demo/,即映射到linux本地开启的demo项目,这样就不用再输入项目名,如访问demo.natapp1.cc/login.do 实际上会访问到linux的http://127.0.0.1:8080/demo/login.do
四、远程debug
当我们把项目发布到远程服务器上时,我们无法像本地那样加断点进行调试。如果我们想获得某一步的信息,我们可以打印log去查看,当然也可以使用idea进行远程debug。
在使用远程debug前,我们需要配置linux下tomcat的配置文件,加上如下配置:
//在tomcat的bin目录下编辑catalina.sh [root@szj bin]# vim ./catalina.sh
添加如下配置
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
然后回到本地的idea下,edit configurations添加remote,输入远程ip+端口5005,这样就可以进行远程debug。