一、系统概述
本文介绍一套包含 OA、HRM、CRM、ERP 等 14 大模块的一体化企业管理平台部署流程。该系统基于开源协议,支持私有化部署,适用于中小企业数字化办公场景。
1.1 方案对比
| 方案 | OA 协同办公 | HRM 人力资源 | CRM 客户管理 | ERP 进销存 | 年度总成本 |
|---|---|---|---|---|---|
| 多套 SaaS 拼凑 | ¥5,000+/年 | ¥8,000+/年 | ¥10,000+/年 | ¥15,000+/年 | ¥38,000+ |
| 钉钉/飞书高级版 | ✅ | ⚠️ 基础 | ❌ 需第三方 | ❌ 需第三方 | ¥10,000~50,000 |
| 找外包定制开发 | ✅ | ✅ | ✅ | ✅ | ¥100,000~500,000(一次性) |
| 开源系统 + 云服务器 | ✅ | ✅ | ✅ | ✅ | 低成本 |
通过合理的服务器配置与优化,可实现低成本运行。
1.2 推荐配置
对于 RuoYi Office 的部署,建议如下:
| 对比项 | 入门配置 (2 核 2G) | 推荐配置 (2 核 4G) |
|---|---|---|
| JDK + 后端服务 | ✅ 可运行(需优化 JVM 参数) | ✅ 运行流畅 |
| MySQL | ✅ 可运行 | ✅ 运行流畅 |
| Redis | ✅ 可运行 | ✅ 运行流畅 |
| Nginx + 前端 | ✅ 可运行 | ✅ 运行流畅 |
| 同时在线用户 | 10~30 人 | 30~100 人 |
| 综合评价 | 够用,适合小团队起步 | 余量充足,推荐 |
💡 建议:如果预算允许,2 核 4G 方案是性价比最高的选择——内存翻倍、带宽提升、磁盘增加。
二、服务器选购与连接
2.1 安全组配置
购买完成后,务必在安全组中配置端口放行规则:
| 端口 | 用途 | 是否必须 |
|---|---|---|
| 22 | SSH 远程连接 | ✅ |
| 80 | HTTP 访问(Nginx) | ✅ |
| 443 | HTTPS 访问 | 按需 |
| 3306 | MySQL(建议仅内网) | ⚠️ 不建议公网开放 |
2.2 远程连接
使用阿里云 Workbench 或本地 SSH 客户端登录服务器。
ssh root@你的服务器公网IP
常用 SSH 工具:Tabby、FinalShell、MobaXterm、PuTTY。
三、安装基础环境
以下命令以 CentOS 7 为例。如使用 Ubuntu,将 yum 替换为 apt。
3.1 安装 JDK
yum install -y java-21-openjdk java-21-openjdk-devel
java -version
3.2 安装 MySQL
# 安装 MySQL 官方源
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
# 安装 MySQL Server
yum install -y mysql-community-server
# 启动并设置开机自启
systemctl start mysqld && systemctl enable mysqld
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 安全初始化(修改 root 密码)
mysql_secure_installation
3.3 安装 Redis
yum install -y epel-release && yum install -y redis
systemctl start redis && systemctl enable redis
redis-cli ping
# 返回 PONG
3.4 安装 Nginx
yum install -y nginx
systemctl start nginx && systemctl enable nginx
curl -I http://127.0.0.1
# 返回 200
3.5 环境检查清单
全部安装完成后,逐一确认:
java -version
mysql -V
redis-cli ping
nginx -v
💡 内存优化提示(2G 方案专用):2G 内存需要精细分配,同时建议调低 MySQL 内存占用。修改后重启 MySQL:
systemctl restart mysqld
四、初始化数据库
4.1 创建数据库
mysql -u root -p
CREATE DATABASE IF NOT EXISTS `ruoyi-office` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4.2 导入数据
将数据库 SQL 文件上传到服务器后执行:
mysql -u root -p ruoyi-office < /data/ruoyi-office-20260301.sql
4.3 验证
mysql -u root -p -e "USE \`ruoyi-office\`; SHOW TABLES;" | head -20
# 能看到 system_users、system_role 等表即成功
五、部署 RuoYi Office
⚠️ 重要原则:不要在服务器上编译构建!请在本地开发机上完成构建,仅将产物上传到服务器。
5.1 本地构建后端
cd ~/workspace/ruoyi-office
mvn clean package -Dmaven.test.skip=true -Dskip.repackage=true -pl yudao-server -am -Pprod
# 产物:yudao-server/target/yudao-server.jar
5.2 本地构建前端
cd ~/workspace/ruoyi-office-vben
pnpm install
pnpm -r --filter "./packages/**" --filter "./internal/**" build
cd apps/web-antd && pnpm build
# 产物:apps/web-antd/dist/
5.3 上传产物到服务器
# 上传后端 JAR
scp yudao-server/target/yudao-server.jar root@服务器 IP:/data/app/
# 上传前端产物
scp -r apps/web-antd/dist/* root@服务器 IP:/usr/share/nginx/html/web/
# 上传数据库 SQL(首次部署时需要)
scp ruoyi-office-db/ruoyi-office-20260301.sql root@服务器 IP:/data/
5.4 启动后端服务
在服务器上执行:
mkdir -p /data/app
# 99 元方案(2G 内存)使用以下 JVM 参数
nohup java -Xms256m -Xmx512m \
-DMYSQL_URL="jdbc:mysql://127.0.0.1:3306/ruoyi-office?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true" \
-DMYSQL_USERNAME=root \
-DMYSQL_PASSWORD='你的数据库密码' \
-DREDIS_HOST=127.0.0.1 \
-DREDIS_PORT=6379 \
-DREDIS_PASSWORD='' \
-jar /data/app/yudao-server.jar \
--spring.profiles.active=prod > /data/app/nohup.out 2>&1 &
等待 60~90 秒后验证:
curl http://127.0.0.1:48080/actuator/health
# 返回 {"status":"UP"} 即启动成功
5.5 配置 Nginx
创建 /etc/nginx/conf.d/ruoyi-office.conf:
server {
listen 80;
server_name _;
charset utf-8;
# Gzip 压缩(小带宽服务器必开,显著提升加载速度)
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/x-javascript image/svg+xml;
# 前端静态文件
location /web {
alias /usr/share/nginx/html/web;
index index.html;
try_files $uri $uri/ /web/index.html;
}
# 静态资源长缓存
location ~* ^/web/(.+).(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
root /usr/share/nginx/html;
expires 30d;
add_header Cache-Control "public, immutable";
access_log off;
}
# 后端 API 反向代理
location /admin-api {
proxy_pass http://127.0.0.1:48080/admin-api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# 根路径跳转
location = / {
return 302 /web;
}
}
# 删除默认配置(避免端口冲突)
rm -f /etc/nginx/conf.d/default.conf
# 检测配置并重载
nginx -t && nginx -s reload
5.6 访问系统
浏览器访问 http://你的服务器公网 IP/web,看到登录页即成功。
| 账号 | 密码 |
|---|---|
| admin | admin123 |
⚠️ 首次登录后请立即修改默认密码!
六、核心功能模块
系统包含 14 大核心模块,涵盖企业运营全流程:
| # | 模块 | 核心功能 |
|---|---|---|
| 1 | OA 协同办公 | 用车、印章、会议室、企业云盘、日程 |
| 2 | 流程中心 (BPM) | 仿钉钉/飞书流程设计器 + BPMN 设计器 |
| 3 | HRM 人力资源 | 组织架构、员工档案、入转调离全流程 |
| 4 | CRM 客户管理 | 线索→客户→商机→合同→回款 |
| 5 | ERP 进销存 | 采购、销售、库存、产品、财务 |
| 6 | 资产管理 (EAM) | 资产全生命周期管理 |
| 7 | 仓库管理 (WMS) | 仓库、入出库、库存盘点 |
| 8 | AI 大模型 | 对话、写作、知识库、思维导图 |
| 9 | 商城系统 | 商品、订单、营销、售后 |
| 10 | 支付中心 | 多渠道支付聚合 |
七、技术架构
你得到的不是玩具级项目,而是基于主流企业级技术栈构建的生产级系统:
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot 3.5 + Spring Cloud Alibaba | Java 生态事实标准 |
| 工作流 | Flowable 7.0 | 仿钉钉/飞书审批设计器 |
| 前端 | Vue 3.5 + Vben Admin + Ant Design Vue | 企业级前端方案 |
| 数据库 | MySQL 8.0 | 兼容 PostgreSQL/达梦/金仓 |
| 缓存 | Redis + Redisson | 高性能缓存与分布式锁 |
| 权限 | Spring Security + OAuth 2.0 | 菜单 + 按钮 + 数据三层权限 |
| 多租户 | 内置 SaaS 支持 | 一套系统服务多家企业 |
八、进阶优化建议
系统跑起来之后,你还可以做这些优化来提升体验:
8.1 配置域名 + HTTPS
花几十元注册一个域名,配合免费的 Let's Encrypt 证书,让系统从 http://IP 升级为 https://oa.yourcompany.com,更专业、更安全。
8.2 定时备份
# 创建备份脚本
cat > /data/backup.sh <<'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d)
mysqldump -u root -p'你的密码' ruoyi-office | gzip > /data/backup/ruoyi-office-$DATE.sql.gz
find /data/backup -mtime +7 -delete
EOF
chmod +x /data/backup.sh
# 设置每天凌晨 3 点自动备份
echo "0 3 * * * /data/backup.sh" | crontab -
8.3 使用 systemd 托管服务
将后端服务注册为系统服务,实现开机自启和崩溃自动恢复:
# /etc/systemd/system/yudao-server.service
[Unit]
Description=YuDao Server
After=network.target mysqld.service redis.service
[Service]
Type=simple
User=root
WorkingDirectory=/data/app
Environment="MYSQL_URL=jdbc:mysql://127.0.0.1:3306/ruoyi-office?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true"
Environment="MYSQL_USERNAME=root"
Environment="MYSQL_PASSWORD=你的数据库密码"
Environment="REDIS_HOST=127.0.0.1"
Environment="REDIS_PORT=6379"
Environment="REDIS_PASSWORD="
ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /data/app/yudao-server.jar --spring.profiles.active=prod
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable yudao-server
systemctl start yudao-server
8.4 后续升级
RuoYi Office 持续迭代更新,升级也很简单:
# 本地重新构建 → 上传新 JAR → 重启服务
systemctl stop yudao-server
# 上传新的 yudao-server.jar 到 /data/app/
systemctl start yudao-server
九、常见问题
Q1:2G 内存真的够用吗?
够用。通过本文的内存优化配置(Swap 分区 + MySQL 调优 + JVM 参数),2G 内存可以稳定运行 RuoYi Office 单体模式。实测 10~30 人同时在线无压力。如果团队规模增长,随时可以升级配置。
Q2:3M 带宽会不会很慢?
配合 Nginx 的 Gzip 压缩和静态资源缓存,首次加载约 3~5 秒,后续访问由浏览器缓存加速,体验流畅。系统以 API 请求为主,数据量小,3M 带宽完全够用。
Q3:后端启动后立即退出?
查看日志排查原因:
tail -100 /data/app/nohup.out
常见原因:①数据库连接失败(检查密码和端口)②内存不足(检查 JVM 参数是否过大)③端口被占用。
Q4:前端访问返回 404?
- 确认文件存在:
ls /usr/share/nginx/html/web/index.html - 确认已删除
default.conf - 重载 Nginx:
nginx -t && nginx -s reload
十、总结
企业数字化不一定要花大钱。RuoYi Office 用开源的方式将企业管理系统的门槛降到了几乎为零,而云服务器提供了稳定可靠的运行环境。开源 + 自建,这就是中小企业数字化的可行解。
| 你投入的 | 你得到的 |
|---|---|
| 低成本/年 | 一台云服务器,续费同价 |
| 免费(MIT 开源) | OA + BPM + HRM + CRM + ERP + AI 等 14 大模块 |
| 约 30 分钟(跟着本教程操作) | 一套可投产使用的企业管理一体化系统 |
| 一个下午(熟悉系统功能) | 全公司的数字化办公基础设施 |


