部署指南
本指南将帮助您部署 Groups 应用到生产环境。
📋 前置要求
服务器要求
最低配置:
- CPU: 2 核
- 内存: 4 GB RAM
- 磁盘: 20 GB SSD
- 操作系统: Ubuntu 20.04+ / Debian 11+ / CentOS 8+
推荐配置:
- CPU: 4 核或更多
- 内存: 8 GB RAM 或更多
- 磁盘: 50 GB SSD
- 操作系统: Ubuntu 22.04 LTS
软件要求
Groups 依赖 Drubase One BaaS 平台,需要先部署 Drubase One:
- Docker Engine 20.10+
- Docker Compose v2+
- 域名和 SSL 证书 (生产环境推荐)
🚀 部署步骤
步骤 1: 部署 Drubase One 后端
参考 Drubase One 安装文档完成后端部署。
# 克隆 Drubase One
git clone https://github.com/cloudiowoo/drubase-one.git
cd drubase-one
# 启动服务
cd docker
docker compose up -d
# 访问安装向导完成安装
# http://YOUR_HOST步骤 2: 导入 Groups 演示数据
Drubase One 安装时,如果启用了 baas_platform_demo_data 模块,Groups 演示数据会自动导入。
手动导入演示数据:
docker exec -it php8-4-fpm sh
cd /var/www/html
# 启用演示数据模块
vendor/bin/drush en baas_platform_demo_data -y
# 清除缓存
vendor/bin/drush cr验证数据导入:
# 检查租户
docker exec pg17 psql -U postgres -d drubase -c "
SELECT tenant_id, name FROM baas_tenant_config;
"
# 检查项目
docker exec pg17 psql -U postgres -d drubase -c "
SELECT project_id, name FROM baas_project_config;
"
# 检查实体表
docker exec pg17 psql -U postgres -d drubase -c "
SELECT COUNT(*) FROM baas_856064_users;
"步骤 3: 部署 Groups 前端应用
Groups 应用已集成在 Drubase One 中,执行 docker compose up -d 会自动启动。
访问地址:
- Groups 应用:
http://YOUR_HOST:3000 - 后端 API:
http://YOUR_HOST/api - Functions 服务:
http://YOUR_HOST:3001(HTTP) /ws://YOUR_HOST:4000(WebSocket)
服务端口说明:
| 服务 | 容器名 | 端口映射 | 说明 |
|---|---|---|---|
| Groups 应用 | react-native-apps | 3000:80 | 前端应用 |
| Nginx | nginx | 80:80 | Web 服务器 + API 网关 |
| Functions | baas-functions-service | 3001:3001, 4000:4000 | HTTP 函数 + WebSocket 实时服务 |
| PostgreSQL | pg17 | 5430:5432 | 数据库 |
| Redis | redis | 6379:6379 | 缓存 |
配置运行时参数:
Groups 运行时配置文件已通过 Volume 挂载,可直接修改:
# 编辑配置文件
vim drubase-one/apps/groups/config/runtime-config.js
# 重启 Groups 容器
cd drubase-one/docker
docker compose restart react-native-apps配置文件示例 (apps/groups/config/runtime-config.js):
window.__RUNTIME_CONFIG__ = {
BAAS_BASE_URL: 'http://YOUR_HOST',
BAAS_TENANT_ID: '7375b0cd',
BAAS_PROJECT_ID: '7375b0cd_6888d012be80c',
BAAS_API_KEY: 'YOUR_BAAS_API_KEY', // 从后台 API Settings 获取
BAAS_SERVICE_TOKEN: 'YOUR_JWT_TOKEN', // 用户登录后的 JWT Token
ENDPOINTS: {
API: '/api/v1',
FUNCTIONS: 'http://YOUR_HOST:3001',
REALTIME: 'ws://YOUR_HOST:4000',
FILES: '/files'
},
APP_ENV: 'production',
DEBUG_MODE: false,
APP_VERSION: '1.0.0'
};获取密钥:
📹 视频演示:在 Drubase 后台获取 API Key 和 Service Token
-
API Key: 登录后台 →
Configuration → BaaS → API Settings → API Keys→ 生成- 格式:
drubase_开头的长字符串 - 用途: 客户端请求签名
- 格式:
-
Service Token: 通过登录 API 获取 JWT Token
curl -X POST http://YOUR_HOST/api/user/login \ -H "Content-Type: application/json" \ -d '{"name": "user1", "pass": "password"}'- 格式: JWT 格式 (eyJ… 开头)
- 用途: 用户身份认证
- 有效期: 1 小时
将密钥填入配置文件:
获取密钥后,需要将它们填入 runtime-config.js 配置文件中。
步骤 1: 找到配置文件

配置文件位置: drubase-one/apps/groups/config/runtime-config.js
步骤 2: 填入密钥参数

将获取的密钥填入对应字段:
BAAS_API_KEY: 填入从后台生成的 API KeyBAAS_SERVICE_TOKEN: 填入登录后获取的 JWT Token
💡 提示:
- 配置文件通过 Volume 挂载,修改后刷新浏览器即可生效
- Service Token 会过期(1小时),建议应用实现自动刷新机制
- 生产环境请使用 HTTPS (
https://和wss://)
步骤 3.1: 验证部署
# 检查所有容器状态
cd drubase-one/docker
docker compose ps
# 访问 Groups 应用
# 浏览器打开: http://YOUR_HOST:3000
# 查看 Groups 应用日志
docker compose logs -f react-native-apps步骤 4: 配置 SSL (生产环境)
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx
# 获取 SSL 证书
sudo certbot --nginx -d groups.example.com
# 自动续期
sudo certbot renew --dry-run步骤 5: 配置域名
在 DNS 服务商添加 A 记录:
Type: A
Name: groups (或 @)
Value: YOUR_SERVER_IP
TTL: 3600🔧 配置优化
数据库优化
-- 创建索引优化查询性能
CREATE INDEX idx_activities_status ON baas_856064_activities(status);
CREATE INDEX idx_activities_start_time ON baas_856064_activities(start_time);
CREATE INDEX idx_user_activities_user ON baas_856064_user_activities(user_id);
CREATE INDEX idx_user_activities_activity ON baas_856064_user_activities(activity_id);Redis 缓存配置
编辑 docker/.env:
# Redis 配置
REDIS_PASSWORD=YOUR_REDIS_PASSWORD
REDIS_MAX_MEMORY=1gb
REDIS_MAX_MEMORY_POLICY=allkeys-lruPHP-FPM 优化
编辑 docker/fpm/www.conf:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500📊 监控和日志
日志收集
# 查看应用日志
docker compose logs -f php8-4-fpm
docker compose logs -f node-functions
# 查看 Nginx 日志
docker compose logs -f nginx
# 查看数据库日志
docker compose logs -f pg17性能监控
使用 Prometheus + Grafana:
# docker-compose.monitoring.yml
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana:latest
ports:
- "3001:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin🔒 安全配置
防火墙设置
# 允许 HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 允许 SSH
sudo ufw allow 22/tcp
# 启用防火墙
sudo ufw enable速率限制
编辑 Nginx 配置:
# 限制请求频率
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
location /api {
limit_req zone=api burst=20 nodelay;
proxy_pass http://localhost:80;
}备份策略
数据库备份脚本:
#!/bin/bash
# backup-database.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/backups/database
BACKUP_FILE="drubase_$DATE.sql"
# 创建备份
docker exec pg17 pg_dump -U postgres drubase > $BACKUP_DIR/$BACKUP_FILE
# 压缩备份
gzip $BACKUP_DIR/$BACKUP_FILE
# 删除 7 天前的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
echo "Backup completed: $BACKUP_FILE.gz"设置定时任务:
# 编辑 crontab
crontab -e
# 每天凌晨 2 点执行备份
0 2 * * * /path/to/backup-database.sh🔄 更新和维护
更新后端
# 进入 Drubase One 目录
cd drubase-one
# 拉取最新代码
git pull origin main
# 重启服务
cd docker
docker compose down
docker compose pull
docker compose up -d
# 更新数据库
docker exec php8-4-fpm sh -c "cd /var/www/html && vendor/bin/drush updb -y"
# 清除缓存
docker exec php8-4-fpm sh -c "cd /var/www/html && vendor/bin/drush cr"更新前端
# 进入 Groups 前端目录
cd groups-frontend
# 拉取最新代码
git pull origin main
# 重新构建
docker build -t groups-frontend:latest .
# 停止旧容器
docker stop groups-frontend
docker rm groups-frontend
# 启动新容器
docker run -d \
--name groups-frontend \
-p 3000:3000 \
--env-file .env \
--restart unless-stopped \
groups-frontend:latest🚨 故障排查
问题 1: API 无法连接
症状: 前端无法访问后端 API
检查步骤:
# 1. 检查服务状态
docker compose ps
# 2. 检查端口监听
netstat -tlnp | grep 80
# 3. 测试 API 连接
curl http://YOUR_HOST/api/health
# 4. 检查防火墙
sudo ufw status问题 2: WebSocket 连接失败
症状: 实时功能不工作
检查步骤:
# 1. 检查 Node 服务
docker compose logs node-functions
# 2. 检查端口
netstat -tlnp | grep 3001
# 3. 测试 WebSocket
wscat -c ws://YOUR_HOST:3001问题 3: 数据库连接错误
症状: 应用报数据库连接失败
检查步骤:
# 1. 检查数据库容器
docker compose ps pg17
# 2. 测试连接
docker exec pg17 psql -U postgres -d drubase -c "SELECT 1;"
# 3. 检查连接配置
docker exec php8-4-fpm cat /var/www/html/web/sites/default/settings.php | grep database