当前位置: 首页 > news >正文

升鲜宝 供应链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://hosthostrequest_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;
}

}

🧩 公共引入文件
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss image/svg+xml;
gzip_vary on;
gzip_disable "MSIE [1-6].";

/etc/nginx/conf.d/include/cache_static.conf

location ~* .(js|css|png|jpg|jpeg|gif|ico|svg|woff2?|ttf|eot|mp4)$ {
expires 30d;
access_log off;
add_header Cache-Control "public, max-age=2592000";
}

/etc/nginx/conf.d/include/proxy_headers.conf

proxy_http_version 1.1;
proxy_set_header Host host;proxysetheaderX−Real−IPhost;proxysetheaderX−Real−IPremote_addr;
proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for; 
proxy_set_header X-Forwarded-Protoproxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Protoscheme;
proxy_connect_timeout 60s;
proxy_read_timeout 120s;

/etc/nginx/conf.d/include/cors.conf

add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
add_header Access-Control-Allow-Headers 'Authorization,Content-Type';
if ($request_method = OPTIONS) {
return 204;
}

🧭 前端部署路径
/website/sxbscm.sxbscm.com/
├── admin/ ← Vue 管理端构建输出
└── cus/ ← Vue 客户端构建输出

🔧 启动命令
sudo nginx -t # 检查语法
sudo systemctl reload nginx # 平滑重载配置
sudo systemctl restart nginx # 重启服务

🌍 验证访问

地址功能
https://sxbscm.sxbscm.com/admin管理端前端页面
https://sxbscm.sxbscm.com/api/admin/**管理端后端 API
https://sxbscm.sxbscm.com/cus客户端订货端页面
https://sxbscm.sxbscm.com/api/cus/**客户端后端 API
http://www.dtcms.com/a/592543.html

相关文章:

  • grafana配置redis数据源预警误报问题(database is locked)
  • 拒绝繁琐,介绍一款简洁易用的项目管理工具-Kanass
  • 测试自动化新突破:金仓KReplay助力金融核心系统迁移周期缩减三周
  • 大语言模型入门指南:从科普到实战的技术笔记(1)
  • 大模型原理之Transformer进化历程与变种
  • 2025-简单点-ultralytics之LetterBox
  • 网站开发经济可行性分析石龙做网站
  • wordpress中国优化网络优化的目的
  • 【Linux网络】Socket编程TCP-实现Echo Server(下)
  • 路由协议的基础
  • ios 26的tabbar 背景透明
  • Hadoop大数据平台在中国AI时代的后续发展趋势研究CMP(类Cloudera CDP 7.3 404版华为鲲鹏Kunpeng)
  • Apache Jena:利用 SPARQL 查询与推理机深度挖掘知识图谱
  • Regression vs. Classification|回归vs分类
  • Nine.fun × AIOT重磅联手,打造健康娱乐新经济
  • The Life of a Read/Write Query for Apache Iceberg Tables
  • 网站显示图片标记html5做网站的代码
  • 做网站需要买多大空间哪里有好的免费的网站建设
  • gpt‑image‑1 —— OpenAI 全新图像生成模型全面解析
  • 基于scala使用flink将读取到的数据写入到kafka
  • 跨平台OPC UA开发:.NET、Java与C++ SDK的深度对比
  • 硬盘第一关:MBR VS GPT
  • 从原理到演进:vLLM PD分离KV cache传递机制全解析
  • 如何在浏览器侧边栏中使用GPT/Gemini/Claude进行网页对话?
  • 【gpt-oss-20b】一次 20B 大模型的私有化部署评测
  • zynq的PS端ENET网口引出到EMIO的PL引脚
  • 商城网站设计策划wordpress 去除归档链接
  • 李宏毅机器学习笔记44
  • 小杰-大模型(three)——RAG与Agent设计——Langchain-OutputParser输出解析器
  • LSTM核心参数与输入输出解读