升鲜宝 供应链SCM 一体化自动化部署体系说明

news/2025/11/9 23:02:48/文章来源:https://www.cnblogs.com/sunplay/p/19205495

升鲜宝 SCM 一体化自动化部署体系说明

 

🚀 升鲜宝 SCM 一体化自动化部署体系说明
作者:杭州升鲜宝科技有限公司
版本:v1.0
日期:2025-11-09


🧱 一、部署体系总览
本部署体系用于在服务器上一键完成:
• ✅ 前端自动构建与发布(admin / cus)
• ✅ 后端 JAR 自动部署与重启(admin-api / cus-api)
• ✅ 自动注册 systemd 服务
• ✅ 自动检测 Nginx 配置与重载
• ✅ 全流程日志记录与自动备份


📂 二、目录结构说明
/opt/deploy/ # 部署脚本主目录

├── setup_all.sh # 一键全站自动化部署脚本
├── setup_systemd_services.sh # 自动创建并注册后端 systemd 服务
├── auto_build_frontend.sh # 前端打包 + 部署脚本
├── auto_deploy_all.sh # 前后端一体化部署脚本
├── reload_nginx_env.sh # Nginx 环境切换与重载脚本
└── README_DEPLOY.md # 本文档
前端、后端与网站目录结构如下:
/opt/projects/
├── frontend/
│ ├── admin/ # 管理端 Vue 项目
│ └── cus/ # 客户端 Vue 项目
└── backend/
├── admin-api/ # 管理端 Spring Boot 项目
└── cus-api/ # 客户端 Spring Boot 项目

/website/
└── sxbscm.sxbscm.com/
├── admin/ # 管理端前端部署目录
├── cus/ # 客户端前端部署目录
└── backup_YYYYMMDD_HHMMSS/ # 自动备份文件夹


⚙️ 三、脚本功能说明
文件名 说明
setup_systemd_services.sh 自动检测后端 JAR 路径和端口,生成并注册 systemd 服务(sxb-admin-api / sxb-cus-api)
auto_build_frontend.sh 构建并部署前端 Vue 项目,支持多环境(dev/test/prod),自动备份旧版本
auto_deploy_all.sh 自动完成前端部署 + 后端 JAR 更新 + 服务重启 + Nginx 检查重载
reload_nginx_env.sh 按环境(dev/test/prod)切换到对应 Nginx 配置并 reload
setup_all.sh 主控脚本,按顺序执行上述四个脚本,实现整站一键上线


🪜 四、执行顺序
步骤 脚本 功能描述
① setup_systemd_services.sh 注册并启动后端 systemd 服务
② auto_build_frontend.sh 构建 & 部署前端静态文件
③ auto_deploy_all.sh 一体化部署后端 JAR、重启服务、刷新 Nginx
④ reload_nginx_env.sh 切换当前环境配置并 reload Nginx
🌟 setup_all.sh 一键执行所有流程(推荐使用)


🌍 五、常用命令
1️⃣ 一键全站部署
sudo bash /opt/deploy/setup_all.sh prod
2️⃣ 单独构建前端
sudo bash /opt/deploy/auto_build_frontend.sh prod
3️⃣ 单独更新后端
sudo bash /opt/deploy/auto_deploy_all.sh prod
4️⃣ 重新注册 systemd 服务
sudo bash /opt/deploy/setup_systemd_services.sh
5️⃣ 切换 Nginx 环境(dev/test/prod)
sudo bash /opt/deploy/reload_nginx_env.sh test


🧩 六、systemd 服务说明
服务名 端口 文件路径 启动命令
sxb-admin-api 8754 /etc/systemd/system/sxb-admin-api.service systemctl restart sxb-admin-api
sxb-cus-api 8766 /etc/systemd/system/sxb-cus-api.service systemctl restart sxb-cus-api
日志目录:
/var/log/sxbscm/
├── sxb-admin-api.out.log
├── sxb-admin-api.err.log
├── sxb-cus-api.out.log
└── sxb-cus-api.err.log
查看日志:
tail -f /var/log/sxbscm/sxb-admin-api.out.log


🔧 七、Nginx 环境配置
环境文件:
/etc/nginx/conf.d/
├── sxbscm.sxbscm.com.conf # 生产环境
├── sxbscm.sxbscm.com.dev.conf # 开发环境
├── sxbscm.sxbscm.com.test.conf # 测试环境
└── include/ # 公共配置片段 (gzip、cache、cors、proxy_headers)
切换环境命令:
sudo bash /opt/deploy/reload_nginx_env.sh prod


🔁 八、恢复与回滚
前端回滚:

  1. 查看备份目录:
    ls /website/backup_*/
  2. 恢复旧版本:
    cp -r /website/backup_20251109_101200/admin_old/* /website/sxbscm.sxbscm.com/admin/
    systemctl reload nginx
    后端回滚:
  3. 找到备份的旧 JAR:
    /opt/projects/backend/admin-api/target/admin-api.jar.20251109_101200.bak
  4. 恢复命令:
    mv admin-api.jar.20251109_101200.bak admin-api.jar
    systemctl restart sxb-admin-api

🧾 九、自动化与持续集成建议
可将 setup_all.sh 集成到 Jenkins / GitLab CI / Cron:

每天凌晨3点自动全站部署

0 3 * * * /opt/deploy/setup_all.sh prod >> /var/log/nginx/deploy_cron.log 2>&1


🧠 十、部署常见问题(FAQ)
问题 原因 解决方案
前端访问 404 Vue history 模式未重定向 确保 Nginx 配置中 try_files $uri /index.html;
JAR 启动失败 Java 环境异常或端口占用 java -version 检查环境;ss -lntp | grep 8754 检查端口
Nginx reload 失败 配置语法错误 nginx -t 检查错误行
无法访问 HTTPS 证书路径错误 核对 /mnt/ssl/sxbscm.sxbscm.com/ 证书文件


🧾 十一、版本与维护
日期 更新内容 维护人
2025-11-09 初始化自动化部署体系 (v1.0) 杭州升鲜宝科技有限公司 DevOps 组


✅ 十二、总结
本自动化体系实现: - 一条命令完成全站部署

  • 自动备份 & 日志追踪
  • 前后端统一管理
  • 多环境切换与安全隔离
  • 适用于多租户 SaaS / SCM / OMS 平台
    💡 推荐部署入口:
    sudo bash /opt/deploy/setup_all.sh prod
    自动完成:注册 → 构建 → 部署 → 切换 → 上线。

✅ 主配置:/etc/nginx/conf.d/sxbscm.sxbscm.com.conf

sxbscm.sxbscm.com - 生产环境 Nginx 配置

作者:杭州升鲜宝科技有限公司

HTTP 自动跳转到 HTTPS

server {
listen 80;
server_name sxbscm.sxbscm.com;
return 301 https://\(host\)request_uri;
}

HTTPS 主站配置

server {
listen 443 ssl http2;
server_name sxbscm.sxbscm.com;

# ===== SSL证书 =====
ssl_certificate     /mnt/ssl/sxbscm.sxbscm.com/sxbscm.sxbscm.com.crt;
ssl_certificate_key /mnt/ssl/sxbscm.sxbscm.com/sxbscm.sxbscm.com.key;ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:10m;
ssl_prefer_server_ciphers on;# ===== 日志 =====
access_log /var/log/nginx/sxbscm.sxbscm.com.access.log;
error_log  /var/log/nginx/sxbscm.sxbscm.com.error.log;# ===== 公共引入文件 =====
include /etc/nginx/conf.d/include/gzip.conf;
include /etc/nginx/conf.d/include/cache_static.conf;# ===== 管理端前端页面 =====
location /admin {root /website/sxbscm.sxbscm.com;index index.html;try_files $uri $uri/ /admin/index.html;
}# ===== 客户端前端页面 =====
location /cus {root /website/sxbscm.sxbscm.com;index index.html;try_files $uri $uri/ /cus/index.html;
}# ===== 管理端 API =====
location /api/admin/ {proxy_pass http://127.0.0.1:8754/;include /etc/nginx/conf.d/include/proxy_headers.conf;include /etc/nginx/conf.d/include/cors.conf;
}# ===== 客户端 API =====
location /api/cus/ {proxy_pass http://127.0.0.1:8766/;include /etc/nginx/conf.d/include/proxy_headers.conf;include /etc/nginx/conf.d/include/cors.conf;
}# ===== 默认跳转 =====
location / {return 301 https://$host/admin;
}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

折腾笔记[37]-使用ML.NET进行文本情感分类

使用.NET框架的ML.NET深度学习框架训练数据集并进行文本情感分类.摘要 使用.NET框架的ML.NET深度学习框架训练数据集并进行文本情感分类. 关键信息.net8原理简介 ML.NET简介 [https://www.nuget.org/packages?page=2&…

从API调用到智能体编排:GPT-5时代的AI开发新模式 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Spring AI Alibaba 项目源码学习(一)-整体介绍

Spring AI Alibaba 项目目录结构说明 请关注微信公众号:阿呆-bot 项目概述 Spring AI Alibaba 是一个多模块 Maven 项目,采用分层架构设计,从底层到上层依次为:Graph 核心运行时、Agent 框架、Studio 应用和 Sprin…

技术架构师到CIO如何转型

目录第一阶段:从“技术实现者”到“业务理解者”——支撑“提高运营效率(操作层)”修炼重点:第二阶段:从“业务支持者”到“管理赋能者”——支撑“加强运营管控(管理层)”修炼重点:第三阶段:从“管理赋能者”…

Layout

1,gen4速度或以上的差分需要在经过阻容焊盘,芯片pin脚,连接器pin脚挖空参考层再隔层补地,改善阻抗。

OS 任务调度

1 什么是任务调度?操作系统为什么需要它? 任务调度是决定哪个任务在何时使用CPU的过程。因为CPU核心数量远少于需要运行的任务(进程/线程)数,需要通过调度来公平、高效地分配计算资源,实现多任务并发/并行的假象…

【Linux】初始线程 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

对于多个图片如何喂给大模型

对于多个图片如何喂给大模型解决办法就是是使用claude和gemini识别图片内容格式化输出后用纯文字输出

Spring Boot + JWT + jjwt 建立前后端分离登录认证(详细教程 + 工具类封装)入门教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

python:pip配置国内源

一,创建目录 说明:是在用户的home目录下创建 liuhongdi@liuhongdi-pc:~$ mkdir .pip liuhongdi@liuhongdi-pc:~$ cd .pip liuhongdi@liuhongdi-pc:~/.pip$ vi pip.conf 二,在配置文件中添加国内源 pip.conf的内容: …

nest目录结构

NestJS目录结构 1. NestJS目录结构 user: nestjs如何组织目录结构assistant: 当然!在 NestJS 中,组织良好的目录结构对于项目的可维护性、可扩展性和团队协作至关重要。虽然没有唯一的“正确”答案,但社区已经形成了…

第十一届中国大学生程序设计竞赛 女生专场(CCPC 2025 Womens Division)题解

目录Problem A. 环状线Problem B. 爬山Problem C. 短视频Problem D. 网络改造Problem E. 购物计划Problem F. 丝之歌Problem G. 最大公约数Problem H. 缺陷解码器Problem I. 调色滤镜Problem J. 后鼻嘤Problem K. 左儿…

什么?从分子变化到四大关键特征解析就是重排反应

什么?从分子变化到四大关键特征解析就是重排反应2025-11-09 22:41 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

高三日记

开坑于 \(11.9\)。 一模考完终于有时间写一下了,先补一下历次考试战绩吧。 G12 名校协作体(\(9.1 \sim 9.2\)) 退役 \(1.5\) 个月,目标是上一下特控线。 语文考完直接破防了。 数学屁也不会。 英语听力错三个,根本…

AI agent framework langgraph

https://docs.langchain.com/oss/python/langgraph/workflows-agentsgraph vs workflow Agents are typically implemented as an LLM performing actions using tools. They operate in continuous feedback loops, a…

计算机毕设项目推荐:基于SpringBoot+Vue的非物质文化遗产再创新系统 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于实际字节码解析Python链式赋值:从ls1[i]=2到a=b=c=10的完整机制

基于实际字节码解析Python链式赋值:从ls1[i]=2到a=b=c=10的完整机制 针对你提出的“无固定‘左右顺序’?”的疑问,结合你提供的真实字节码(dis模块输出),我们可以明确:Python链式赋值不存在绝对统一的“左→右”…

实用指南:基于python写的PDF表格提取到excel文档

实用指南:基于python写的PDF表格提取到excel文档pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

侯捷C++面向对象高级开发(上)

一、complex类 1、内联函数 class complex { public:complex(double r=0,double i=0):re(r),im(i){}complex& operator += (const complex&);double real () const {return re;}double imag () const {return …

企业微信scrm源码开发-渠道活码数据库表设计

wx: llike620CREATE TABLE `wxwork_channel` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(100) NOT NULL DEFAULT COMMENT 活码名称,`config_id` varchar(64) NOT NULL DEFAULT COMMENT 企微返回的配…