Skip to content

部署运维 ​

本章介绍柠檬ERP 的打包、生产环境配置、Nginx 反向代理、Docker 部署,以及升级、备份和常见问题。

最快的部署方式

服务器上安装了 Docker 时,进入仓库的 docker/ 目录执行 cp .env.example .env(修改密码)和 docker compose up -d --build 即可一键启动 MySQL、Redis、后端和前端,见 Docker 部署。下面的内容适用于不使用 Docker、直接在服务器上运行 jar 的部署方式。

部署架构 ​

组件说明
Nginx托管前端静态文件 lemon-web/dist,把 /api/ 反向代理到后端;负责 HTTPS
后端 lemon-erp.jarSpring Boot 可执行 jar,默认端口 8080,接口前缀 /api,使用 prod 配置
MySQL 8业务库,包含 init.sql 创建的业务表和 Flowable 自动创建的 ACT_* 表
Redis登录会话、权限、字典、参数缓存
本地磁盘头像(UPLOAD_PATH)、业务附件(附件目录),需要持久化和备份

微信小程序(lemon-mp)发布在微信平台上,不部署到服务器,通过 HTTPS 域名访问同一个 Nginx 的 /api/。

请求路径:浏览器 → Nginx(/ 静态文件,/api/ 转发)→ 后端 :8080/api/... → MySQL / Redis。前端使用 HTML5 History 路由,部署在域名根路径下。

服务器要求 ​

项目要求
操作系统Linux(推荐)、Windows、macOS
JavaJRE 17
字体至少一种中文字体(如 fonts-noto-cjk),单据打印排版时使用,见 生产环境配置
MySQL8.0 及以上,字符集 utf8mb4
Redis6.2 及以上
Nginx1.20 及以上
内存后端建议分配 1GB 以上堆内存(-Xmx1g),数据量大、使用商务智能同步时适当增加

上线检查清单 ​

检查项说明
使用 prod 配置--spring.profiles.active=prod 或 SPRING_PROFILES_ACTIVE=prod
JWT_SECRET随机生成,至少 32 字节,妥善保管
数据库连接串带 nullCatalogMeansCurrent=true、serverTimezone=Asia/Shanghai,账号有建表权限
Redis设置密码;与其他系统共用时使用单独的库
文件目录UPLOAD_PATH 和附件目录使用绝对路径,持久化并纳入备份
Nginx/api/ 转发并设置 X-Forwarded-For;client_max_body_size 调大;启用 HTTPS
时区服务器、JVM、MySQL 时区一致(如 Asia/Shanghai),影响单据日期、定时任务执行时间
中文字体服务器已安装中文字体(fc-list :lang=zh 有输出),启动日志中没有「服务器没有能显示中文的字体」的警告;打印一张单据确认 PDF 正常
默认账号修改 admin 密码,停用 test 账号
参数设置关闭「登录页显示演示账号」;按需开启登录验证码、密码策略、页面水印
多实例只在一个实例上开启定时任务,上传目录使用共享存储,缓存使用 Redis
微信小程序(使用时)HTTPS 已备案域名并在公众平台登记为服务器域名;后端设置 LEMON_MINIAPP_APP_ID / LEMON_MINIAPP_APP_SECRET,审批提醒另设模板 ID,见 生产环境配置
备份配置数据库和文件目录的定期备份

本章内容 ​

页面内容
打包后端 jar、前端 dist 的构建
生产环境配置prod 配置、环境变量、启动脚本、systemd 服务、JVM 参数
Nginx 配置静态文件、反向代理、HTTPS、上传大小、真实 IP
Docker 部署仓库自带的 Dockerfile、docker-compose 一键部署与镜像构建脚本
升级与数据备份版本升级步骤、数据库与文件备份建议
常见问题Flowable 表、nullCatalogMeansCurrent、JWT_SECRET 长度、X-Forwarded-For、ip2region 更新等

基于 Apache-2.0 协议开源