方案 A:宝塔混合部署(逐步操作)
给「服务器已经有宝塔、现场会点面板、我们 SSH 不进去」的客户。
本方案:宝塔负责 Nginx + MySQL 8 + Redis,Docker 只跑后端yudao-server。
空机、希望 MySQL/Redis 也进 Compose → 用 方案 B,不要跟本页混用。
打包说明见 如何打安装包。生产机只做「收包 → 装软件 → 上传 → 执行脚本」。
0. 这套方案长什么样
| 组件 | 谁提供 | 端口 |
|---|---|---|
| 网站入口 | 宝塔 Nginx | 80(可改 HTTP_PORT) |
| 前端 | 安装脚本拷到 /www/wwwroot/ruoyi-office/web | 路径 /web/ |
| 后端 | Docker 容器 ruoyi-yudao | 只监听 本机 127.0.0.1:48080 |
| 数据库 | 宝塔软件商店 MySQL 8.0 | 3306 |
| 缓存 | 宝塔软件商店 Redis | 6379 |
建议机器:≥ 4 核 8G 内存,磁盘 ≥ 80G,系统 CentOS 7 / Rocky / Ubuntu 均可(能装宝塔即可)。必须能上外网,否则软件商店和 Docker 拉基础镜像会失败。
1. 登录宝塔面板
用浏览器打开实施方提供的面板地址,一般是:
https://服务器IP:面板端口/安全入口证书是自签的,Chrome 会显示「不安全」。点 高级 → 继续访问。
用面板用户名、密码登录。若提示绑定手机 / 宝塔账号,可先 跳过 / 以后再说。
安全入口写错会变成 nginx 的 404,看起来像网站挂了,其实只是入口不对:

这时不要重装 Nginx。在服务器终端执行 bt default(或宝塔「面板设置」里看当前入口),用新地址打开。
- 登录成功后,左侧应能看到:首页、网站、数据库、Docker、文件、终端、软件商店。
2. 软件商店:按顺序安装 4 个软件
打开左侧 软件商店。搜索名字,点安装。全部选稳定版,等绿色「运行中」。
2.1 Nginx
- 搜索
Nginx→ 安装。实验室验证过 1.22 / 1.24 都可以。 - 装完在软件商店应显示运行中。首页「网站」旁边也会出现 Nginx 版本号。
2.2 MySQL 必须 8.0
- 搜索
MySQL→ 安装时选 8.0.x。
不要装 5.7:本产品 schema 使用utf8mb4_0900_ai_ci,5.7 导入会失败。 - 安装过程中或装完,宝塔会给出 root 密码。立刻记到记事本,后面要写进
.env的MYSQL_ROOT_PASSWORD。 - 若当时没抄下来:软件商店 → MySQL → 设置里可以改 root 密码。改完以新密码为准。
2.3 Redis
- 搜索
Redis→ 安装。 - 打开 Redis 设置,看是否设置了密码:
- 无密码(很多默认环境):
.env里REDIS_PASSWORD=留空即可。 - 有密码:把同一串写到
.env的REDIS_PASSWORD。
- 无密码(很多默认环境):
2.4 Docker(含 Compose)
- 搜索
Docker→ 安装。装完应带docker compose(新版)或docker-compose。 - 终端里执行下面命令,四行都要有输出:
nginx -v
mysql -V # 必须看到 8.0
docker version
docker compose version || docker-compose version服务器在国内时,建议在 Docker 设置里配镜像加速(阿里云 / DaoCloud),否则后面 docker build 拉 eclipse-temurin 会很慢或失败。
3. 拿到安装包并上传
- 按 如何打安装包 准备好
ruoyi-office-baota-日期目录(或 zip)。 - 宝塔左侧 文件 → 进入
/opt/(没有就新建)。 - 上传 zip 后 解压,最终目录必须是:
/opt/ruoyi-office-pack/
install.sh
compose/
sql/
web/
app/yudao-server.jar
...目录名差一点也可以,后面 cd 以实际为准。磁盘至少留出 jar + 镜像 + 数据库 的空间(建议空闲 > 10G)。
4. 填写 compose/.env(方案 A 专用)
用宝塔文件管理打开 /opt/ruoyi-office-pack/compose/.env(没有就把 compose/.env.example 复制一份改名)。
DEPLOY_MODE=a 不要改成 b。
示例(密码请改成你自己的,不要用示例字面值上生产):
DEPLOY_MODE=a
SITE_HOST=192.168.1.10
HTTP_PORT=80
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_DATABASE=ruoyi-office
MYSQL_USERNAME=ruoyi
MYSQL_PASSWORD=请改成业务库密码
MYSQL_ROOT_PASSWORD=请填宝塔MySQL的root密码
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
DRUID_USERNAME=admin
DRUID_PASSWORD=请改成监控台密码
JAVA_OPTS="-Xms1g -Xmx2g -Djava.security.egd=file:/dev/./urandom"
YUDAO_IMAGE_TAG=latest| 项 | 怎么填 |
|---|---|
SITE_HOST | 浏览器访问这台机用的 IP 或域名,不要写 127.0.0.1 |
HTTP_PORT | 80 被其它网站占用就改成如 18080,访问带端口 |
MYSQL_ROOT_PASSWORD | 必须能登录宝塔 MySQL,否则脚本会误判「没装 MySQL 8」 |
MYSQL_PASSWORD | 脚本会创建用户 ruoyi 用的密码 |
REDIS_PASSWORD | Redis 无密码就留空;不要随便填一个假密码 |
JAVA_OPTS | 整段加英文双引号,否则安装脚本 source .env 会把 -Xmx2g 当成命令执行失败 |
80 端口已被别的站点占用时:改 HTTP_PORT,并保证防火墙放行该端口。
5. 终端执行首装
宝塔左侧 终端(或 SSH),执行:
cd /opt/ruoyi-office-pack
sed -i 's/\r$//' install.sh update.sh health.sh scripts/*.sh compose/.env
chmod +x install.sh update.sh health.sh scripts/*.sh
bash install.shWindows 打出来的脚本经常带 \r,不跑 sed 可能失败。install.sh 本身只是调用 scripts/install.sh,不要用 sh install.sh 换成 dash。
首次安装会做这些事(请耐心等,导 static_data 可能要几分钟):
- 检查 Docker、MySQL 8.0
- 把前端拷到
/www/wwwroot/ruoyi-office/web - 用
app/yudao-server.jar在本机构建镜像ruoyi-office:latest(要能拉取eclipse-temurin:21-jre) - 启动容器
ruoyi-yudao(host 网络,访问本机 3306/6379) - 创建数据库
ruoyi-office、导入 schema + 静态数据 - 把 Nginx 配置写到
/www/server/panel/vhost/nginx/ruoyi-office.conf并 reload
成功时终端最后会打印:
访问: http://你的SITE_HOST/web/默认登录账号(导入官方 static_data 后):admin,密码以交付清单为准;实验室演示常用 admin123。租户选 宇擎源码(或列表第一个)。
6. 在宝塔里怎么核对(容易看错的地方)
脚本不会在「网站 → PHP 项目」里点「添加站点」。所以 PHP 站点列表经常是空的,这不代表没装上。
请按下面核对:
| 去哪看 | 应该看到 |
|---|---|
文件 → /www/wwwroot/ruoyi-office/web/ | 有 index.html |
文件 → /www/server/panel/vhost/nginx/ruoyi-office.conf | server_name 是你的 SITE_HOST,/web/ 和 /admin-api/ |
| Docker → 容器(不是「应用商店 → 已安装」) | 容器名 ruoyi-yudao,状态 running / healthy |
| 数据库 → MySQL | 库 ruoyi-office(用户 ruoyi) |
| 浏览器 | http://SITE_HOST/web/ |
「Docker → 应用商店 → 已安装」是宝塔应用市场模板,我们没用它,空的正常。
用 IP 127.0.0.1 在服务器本机 curl /web/ 可能 404(宝塔另有 server_name 127.0.0.1 的状态页)。请用 Host 为 SITE_HOST 访问,或直接在办公电脑浏览器打开。
7. 浏览器验收
- 办公电脑打开:
http://SITE_HOST/web/(hash 路由,登录页类似/web/#/auth/login)。 - 选择租户 宇擎源码,用户名
admin,密码按交付清单。 - 应进入工作台,顶部有 OA / 人力 / 合同等模块:

- 再打开 用户管理,左侧组织树、右侧用户表应有数据(演示数据约几十条):

能进工作台但用户表全空:多半是 SQL 没导完或连错库。把 health.sh 输出发给实施方。
8. 以后更新(不毁库)
收到新的安装包(或只更新了 app/、web/)后:
cd /opt/ruoyi-office-pack
bash update.sh只换镜像和前端,不会重建数据库。旧前端在 /www/wwwroot/ruoyi-office/web.bak。
若包里带了 sql/04_incremental.sql,脚本不会自动执行,需确认后再手工导入。
9. 搞不定时发这些
bash /opt/ruoyi-office/scripts/health.sh
docker ps
docker logs --tail 80 ruoyi-yudao另外截图:软件商店里 Nginx / MySQL 8 / Redis / Docker 的运行状态、浏览器地址栏。
常见坑:
| 现象 | 原因 |
|---|---|
| 安装报 MySQL 版本不对 / 连不上 | root 密码没写对,或装成了 5.7 |
source .env 失败、-Xmx2g 命令找不到 | JAVA_OPTS 没加引号 |
| 构建镜像一直卡住 | 拉不了 eclipse-temurin,配 Docker 镜像加速 |
| 登录提示租户未传递 | 页面先选租户;接口需要 tenant-id |
| Redis AUTH 失败 | 无密码却填了空字符串环境变量;方案 A 的 compose 不要乱加 Redis 密码 |
| 面板 404 | 安全入口变了,执行 bt default |
10. 生产建议(装完再做)
- 把
/opt/ruoyi-office/app/config/application-prod.yaml里yudao.captcha.enable改为true后,重建容器:cd /opt/ruoyi-office/compose && docker compose up -d --force-recreate - 改默认
admin密码;不要把面板端口和安全入口暴露到公网。 - 业务库与面板 root 密码不要用文档示例。
