Skip to content

2. Shell 部署

推荐服务器配置

以下配置用于单机运行全部基础服务和 7 个后端服务。

项目推荐配置
操作系统Linux 64 位,Debian / Ubuntu
CPU4 核及以上
内存16 GB 及以上
磁盘至少 40 GB 可用空间,数据量增长时扩容
Java / MavenJava 21 / Maven 3.9
其它工具Bash、flock、curl、Nginx
网络可访问 Maven Central,并能连接基础服务

Shell 脚本管理宿主机 Java 进程,Nginx 托管前端。完成首次配置后,只需执行:

bash
bash builds/script/shell/deploy.sh deploy

一、目录说明

1. 源码与发布文件

所有部署命令在 mesh-platform 后端项目根目录执行。

text
mesh-platform/
├── pom.xml
├── supports/
├── services/
└── builds/
    ├── data/
    │   ├── sql/                # 六份业务库初始化脚本
    │   └── nacos/
    │       └── nacos_config.zip
    ├── web/                    # 前端产物,包含 index.html
    └── script/shell/
        ├── deploy.sh           # 编译和批量启停
        └── run.sh              # 单服务进程管理

2. 服务器运行目录

所有 JAR 和 run.sh 放在同一层级,不创建单独的服务子目录;连接配置统一由 Nacos 提供。

text
/opt/server/
├── mesh-gateway.jar
├── mesh-uaa-biz.jar
├── mesh-upms-biz.jar
├── mesh-bpm-biz.jar
├── mesh-app-biz.jar
├── mesh-ai-biz.jar
├── mesh-crm-biz.jar
├── run.sh
├── logs/
└── backup/
路径用途
/opt/server/*.jardeploy.sh 自动复制的运行包
/opt/server/logs/每个服务独立的日志
/opt/server/backup/更新前自动备份的旧 JAR
/opt/server/*.pid每个服务的进程记录,脚本自动管理
/var/www/mesh-platform/Nginx 托管的前端产物

二、首次准备

1. 安装运行环境

软件版本要求安装参考
JDK21Temurin 官方安装说明
Maven3.9Maven 3.9.9 发布包
Nginx支持静态文件和反向代理Nginx 安装
Bash / flock / curl系统工具Debian / Ubuntu 安装 bash、util-linux、curl

安装后先确认版本:

bash
java -version
mvn -version

两条命令均应使用 Java 21。Java、Maven 的可执行文件需已加入系统命令路径,部署命令中无需额外传入参数。

2. 准备基础服务

服务版本默认地址初始化要求
MySQL8.0.32127.0.0.1:3306创建六个业务库并导入 SQL
Redis7.2.4127.0.0.1:6379设置访问密码
Elasticsearch9.5.1127.0.0.1:9200安装同版本 analysis-icu,设置内核参数
Nacos2.3.2127.0.0.1:8848创建命名空间并导入配置

独立安装基础服务时,按下表准备数据:

数据库导入文件
mesh_aibuilds/data/sql/mesh_ai.sql
mesh_appbuilds/data/sql/mesh_app.sql
mesh_bpmbuilds/data/sql/mesh_bpm.sql
mesh_crmbuilds/data/sql/mesh_crm.sql
mesh_uaabuilds/data/sql/mesh_uaa.sql
mesh_upmsbuilds/data/sql/mesh_upms.sql

数据库使用 utf8mb4 字符集。Nacos 创建与后端 pom.xml 一致的命名空间(Shell 当前默认 ID 为 single),将 builds/data/nacos/nacos_config.zip 导入该空间的 DEFAULT_GROUP。运行 profile 保持 dev,以加载配置包中的 *-dev.yaml;profile 与命名空间是两个不同配置项。

ES 所在服务器执行:

bash
printf 'vm.max_map_count=262144\n' | sudo tee /etc/sysctl.d/99-mesh-es.conf
sudo sysctl --system

如果希望用 Docker 准备四个基础服务,可先按 Docker 教程 安装工具并在 Compose 中设置密码,再执行兼容的基础服务命令:

bash
bash builds/script/docker/deploy.sh base

此命令只启动基础服务,并将配置导入 pro 空间,业务 JAR 仍由 Shell 管理。按下一节统一 Nacos 命名空间,并在 Nacos 中将连接地址调整为宿主机可访问的地址。

3. 准备前端产物和运行目录

builds/web/ 必须包含生产构建的 index.html 和静态资源,接口前缀为 /pro-api。缺少产物时,在前端仓库执行 pnpm install --frozen-lockfile && pnpm run build:prod,将 dist 目录内容复制到后端 builds/web。

为当前部署用户创建运行目录:

bash
sudo install -d -o "$(id -un)" -g "$(id -gn)" /opt/server

三、配置 Nacos

数据库、Redis、ES、MCP 和业务配置统一在 Nacos 中维护,运行目录只保留 JAR、run.sh、日志和备份,无需新增本机连接配置文件。

1. 确认项目连接的 Nacos

构建前检查后端根目录 pom.xml 的 dev profile。项目会将这些参数写入 JAR,用于首次连接配置中心:

参数当前默认值配置要求
config.server-addr / discovery.server-addr127.0.0.1:8848配置中心和服务发现均使用实际 Nacos 地址
config.namespace / discovery.namespacesingle两处均填写导入配置的命名空间 ID
config.group / discovery.groupDEFAULT_GROUP与导入配置的分组一致
profile.namedev对应配置包中的 *-dev.yaml

默认使用 single 空间;如果用 Docker 的 base 命令初始化了 pro 空间,将两处 namespace 改为 pro。修改后执行下一节 deploy 命令重新编译即可,连接信息不需要通过环境变量传入。

2. 在 Nacos 修改服务配置

进入项目使用的命名空间,检查以下配置:

配置文件配置内容Shell 部署要求
mesh-environment-dev.yaml数据库地址、账号密码,Redis / ES 地址和服务端口使用 Java 所在宿主机可访问的地址
各服务的 *-dev.yaml数据源配置、spring.data.redis.password与实际数据库、Redis 一致;保留公共配置引用
mesh-ai-biz-dev.yamlspring.ai.mcp.client.servers.crm.urlCRM 在同机时为 http://127.0.0.1:8090/mcp
各服务的 *-dev.yamlmesh.job.xxl.enabled未部署任务中心时设置为 false
公共或服务配置management.endpoint.health.access设置为 unrestricted,供部署脚本检查健康状态

数据库、Redis、ES 位于同机时使用本机地址,位于其它服务器时使用对应内网地址。由 Docker 初始化的配置中若包含 mysql、redis、elasticsearch、mesh-crm 等容器名,需在 Nacos 中改为宿主机可访问的地址。跨主机连接 Nacos 时需放通 8848、9848。

确认配置已发布后,再启动后端服务。若之前按旧教程创建过本机覆盖配置,迁移所需值到 Nacos 并取消重复覆盖,保证服务读取 Nacos 中的配置。

四、一键部署后端

bash
bash builds/script/shell/deploy.sh deploy

执行顺序:编译 → 检查全部 JAR → 暂存运行包 → 停止旧进程 → 备份并替换 JAR → 逐个启动并检查健康状态

CRM 在 APP 服务就绪后启动。旧脚本启动且没有本脚本 PID 文件的进程,首次迁移前先通过原方式停止。

各服务的 HTTP、WebSocket 端口统一在 Nacos 中配置,可按部署环境调整,以实际发布的配置为准。调整后,同步更新 deploy.sh 中用于健康检查的 APP_PORTS,以及 Nginx、MCP 等相关连接地址。

五、部署前端

1. 复制前端文件

bash
sudo mkdir -p /var/www/mesh-platform
sudo cp -a builds/web/. /var/www/mesh-platform/

2. 配置 Nginx

创建 /etc/nginx/conf.d/mesh-platform.conf

下方代理地址中的端口仅为示例,请替换为 Nacos 中配置的实际网关端口。

nginx
server {
    listen 80;
    server_name _;
    root /var/www/mesh-platform;
    client_max_body_size 512m;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /pro-api/ {
        proxy_pass http://127.0.0.1:8080/;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 300s;
        proxy_buffering off;
    }
}

新安装的 Nginx 若启用了默认欢迎站点,取消对应启用链接,避免访问 IP 时进入欢迎页;Debian / Ubuntu 的默认链接为 /etc/nginx/sites-enabled/default

3. 启动 Nginx

bash
sudo nginx -t && sudo systemctl enable --now nginx
sudo systemctl reload nginx

服务器放行 TCP 80,访问 http://服务器IP/

六、检查与日常操作

bash
bash builds/script/shell/deploy.sh status
curl -fsS http://127.0.0.1/pro-api/actuator/health

统一使用 bash builds/script/shell/deploy.sh 参数

参数作用
deploy编译、备份替换并启动;源码更新后再次执行
build只编译
copy停止旧服务,备份并替换已构建的 JAR
start启动服务,已运行的服务不重复启动
stop停止全部后端
restart重启全部后端
status查看进程状态,业务健康以健康接口为准

单服务重启:bash /opt/server/run.sh restart mesh-crm-biz。服务器重启后需重新执行 start。需要修改运行目录或 JVM 配置时,编辑 deploy.sh 顶部的 APP_HOME、JVM_OPTS_TYPE 默认值;后续命令保持一致。

七、常见问题

现象检查位置
无法编译java、mvn 版本和 Maven Central 网络
连接数据库或 Redis 失败Nacos 中的地址、密码及基础服务状态
配置不生效pom.xml 中的 Nacos 地址和命名空间、配置是否已发布,以及是否存在本机覆盖配置
服务启动超时/opt/server/logs/,检查端口冲突及依赖服务
前端 502Nacos 中的实际网关端口与 Nginx /pro-api/ 代理是否一致
前端仍是欢迎页Nginx 默认站点是否仍启用
ES 缺少索引CRM 日志、ES 插件及映射;当前发布数据初始化为 17 个索引

AI 对话需另外配置有效模型凭据,服务健康不代表外部模型调用已经验证。

另一种方式:1. Docker 部署

郑州蝉鸣数字科技有限公司出品