零、前言
第一次给系统上线,虽然团队内已经有其他同学写过部署文档https://segmentfault.com/a/11...,但本文中我们需要补充一些细节,使操作更简便
本文主要是补充内容,所以假设服务器上已经部署了运行环境、数据库和nginx。
一、连接服务器
我们通常使用SSH连接Linux服务器,使用scp命令在本地和服务器之间传输文件。
那么有没有更方便的方法呢?答案是有的。
可以借助SFTP工具,来实现图形化传输文件,就像在自己电脑操作上一样。
Windows -> WinSCP
官网地址: https://winscp.net/eng/index.php
这个工具可以与服务器建立SSH连接,并且图形化浏览服务器上的文件,并支持拖拽。
MacOS -> Termius
官网地址: https://www.termius.com/
与WinSCP功能相同,既能管理文件,也能执行Bash命令。
并且Termius支持MacOS、Linux、Windows、Android,网上能找到和谐版本。
有了这种可视化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
文件,之前在终端上看到的那些日志信息改为写入到这个文件中,只需要查看此文件就能知道项目是否启动成功了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。