一 说明
针对一些个人的或者小的前后端分离项目,并不需要通过微服务部署,如果也不考虑使用docker方式部署的话,可以考虑传统方式脚本化一键部署。
此处项目的情况:
- 前端项目:vue项目
- 后端项目:SpringBoot单体项目
- 服务器版本:Ubuntu 22.04.1 LTS
此文章不包含后端项目依赖的数据库、缓存等其他组件的部署。
二 服务器依赖包安装并添加系统服务
Nginx 与 OpenJDK8 安装
1 | sudo apt install nginx |
后端项目添加系统服务 /etc/systemd/system/xxx-service.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[Unit]
Description=Xxx Service
[Service]
User=root
# The configuration file application.properties should be here:
#修改为你的工作目录
WorkingDirectory=/data/xxx-service
#要执行程序的路径
#调用jar文件的shell执行文件
ExecStart=/data/xxx-service/start.sh
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
启动脚本 /data/xxx-service/start.sh
,启动脚本指定使用prod环境配置,并且指定application-prod.yml配置文件1
2
3
java -jar -Dspring.profiles.active=prod /data/xxx-service/xxx-service-1.0-SNAPSHOT.jar --spring.config.location=/data/xxx-service/application-prod.yml
设置服务开机自启1
2systemctl daemon-reload
systemctl enable xxx-service
编写前后端一键发布脚本
前端一键发布脚本 web-publish.sh 如下:
1 |
|
后端一键发布脚本 server-publish.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 一键部署脚本
# 说明:部署前先配置好ssh的证书登录
set -e
FILENAME=xxx-service-1.0-SNAPSHOT.jar
LOCAL_DIR=./xxx-service/target
REMOTE_DIR=/data/xxx-service
REMOTE_IP=192.168.0.100 # 替换成部署的机器IP
# 1. 打包构建
echo ============= 打包构建 ================
mvn clean package
# 2. 备份服务端的文件
echo ============= 备份文件 ================
TS=`date +"%Y%m%d%H%M%S"`
ssh root@${REMOTE_IP} "cp ${REMOTE_DIR}/${FILENAME} ${REMOTE_DIR}/backup/${FILENAME}_${TS}"
# 3. 上传新版本的文件
echo ============= 上传文件 ================
scp ${LOCAL_DIR}/${FILENAME} root@${REMOTE_IP}:${REMOTE_DIR}
# 4. 重启服务
echo ============= 重启服务 ================
ssh root@${REMOTE_IP} "systemctl restart xxx-service"
以上部署脚本略微调整即可适用于自己的前后端项目通过命令行一键部署。