SpringBoot + Angular前后端分离项目部署(更新)实录

零、前言

第一次给系统上线,虽然团队内已经有其他同学写过部署文档https://segmentfault.com/a/11...,但本文中我们需要补充一些细节,使操作更简便

本文主要是补充内容,所以假设服务器上已经部署了运行环境、数据库和nginx。

一、连接服务器

我们通常使用SSH连接Linux服务器,使用scp命令在本地和服务器之间传输文件。
那么有没有更方便的方法呢?答案是有的。
可以借助SFTP工具,来实现图形化传输文件,就像在自己电脑操作上一样。

Windows -> WinSCP

官网地址: https://winscp.net/eng/index.php
这个工具可以与服务器建立SSH连接,并且图形化浏览服务器上的文件,并支持拖拽。

SpringBoot + Angular前后端分离项目部署(更新)实录_第1张图片

MacOS -> Termius

官网地址: https://www.termius.com/
与WinSCP功能相同,既能管理文件,也能执行Bash命令。
并且Termius支持MacOS、Linux、Windows、Android,网上能找到和谐版本。

SpringBoot + Angular前后端分离项目部署(更新)实录_第2张图片

有了这种可视化SFTP工具后,拷贝文件就不需要再用命令行了。

二、编译项目

Angular:

// 编译Angular项目
ng build

然后就可以生成dist文件夹,angular代码全部编译成了原生JavaScript代码。
稍后需要用到dist中的所有文件

SpringBoot:

// 编译SpringBoot项目
mvn clean package

我们只需要用到target中的appName.jar这个文件。

需要注意的是,编译过程会把包括配置文件在内的所有文件封装,这意味着编译后就不能随意更改端口号、数据库等各种配置信息,因此在编译前,需要把各个参数调整至与生产环境一致。

三、复制文件

打开SFTP工具,找到原来的代码位置。
为了稳妥起见,不要直接删除上个版本的代码,而是将它们重命名(万一出错了还能恢复)。
然后直接把文件夹拽过去即可。

四、关闭历史项目的进程,启动新进程

Angular

由于前端使用的HTML三件套、服务器是Apache或Nginx负责,当服务器上的代码文件变更时,一刷新就能加载新的代码,所以不需要重启服务。

SpringBoot

但Java项目一旦运行,是不能自动检测变更的,所以必须重启这个Java进程。

// 查看端口占用情况
sockstat -4l | grep 后端的端口号

// 举例
sockstat -4l | grep 8093

// 返回值(本例中,2279为进程号)
// log    java       2279  26 tcp46  *:8080                *:*

//  关闭进程
sudo kill 进程号

// 举例
sudo kill 2279

再次检查端口占用,已经没有进程占用此端口了。

此时才可以在项目根目录输入

// 在服务器后台运行jar包,不会随着终端退出而停止运行
nohup java -jar test.jar

运行成功后,控制台不会输出任何信息。
但在jar包的同级目录会有一个nohup.out文件,之前在终端上看到的那些日志信息改为写入到这个文件中,只需要查看此文件就能知道项目是否启动成功了。

你可能感兴趣的:(部署上线服务器)