如何将项目部署到远程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。