394 lines
6.9 KiB
Markdown
394 lines
6.9 KiB
Markdown
# 私有化部署完全指南
|
||
|
||
> Docker Compose 一键部署,HTTPS 配置、备份策略与版本升级。
|
||
|
||
## 🏠 什么是私有化部署?
|
||
|
||
私有化部署让你在自己的服务器上运行 Websopy 平台,享受:
|
||
|
||
- 🔒 **数据完全自主** - 所有数据存储在你的服务器
|
||
- ⚙️ **完全可控** - 自定义配置、插件、界面
|
||
- 💰 **成本可控** - 无按调用量计费
|
||
- 🏢 **合规无忧** - 满足数据不出网要求
|
||
|
||
## 📋 系统要求
|
||
|
||
### 最低配置
|
||
|
||
| 资源 | 最低要求 |
|
||
|------|----------|
|
||
| CPU | 4 核 |
|
||
| 内存 | 8 GB |
|
||
| 硬盘 | 100 GB SSD |
|
||
| 系统 | Ubuntu 20.04+ / CentOS 8+ |
|
||
|
||
### 推荐配置
|
||
|
||
| 资源 | 推荐配置 |
|
||
|------|----------|
|
||
| CPU | 8 核+ |
|
||
| 内存 | 16 GB+ |
|
||
| 硬盘 | 500 GB SSD+ |
|
||
| 系统 | Ubuntu 22.04 LTS |
|
||
|
||
### 软件依赖
|
||
|
||
- Docker 20.10+
|
||
- Docker Compose 2.0+
|
||
- Git
|
||
- 域名(可选,用于 HTTPS)
|
||
|
||
## 🚀 开始部署
|
||
|
||
### 第一步:准备服务器
|
||
|
||
```bash
|
||
# 更新系统
|
||
sudo apt update && sudo apt upgrade -y
|
||
|
||
# 安装 Docker(Ubuntu/Debian)
|
||
curl -fsSL https://get.docker.com | sh
|
||
sudo usermod -aG docker $USER
|
||
|
||
# 安装 Docker Compose
|
||
sudo apt install docker-compose -y
|
||
|
||
# 验证安装
|
||
docker --version
|
||
docker-compose --version
|
||
```
|
||
|
||
### 第二步:下载部署包
|
||
|
||
```bash
|
||
# 创建工作目录
|
||
mkdir -p ~/websopy && cd ~/websopy
|
||
|
||
# 下载最新版本
|
||
wget https://releases.websopy.com/on-premise/latest.tar.gz
|
||
|
||
# 解压
|
||
tar -xzf latest.tar.gz
|
||
cd websopy-deploy
|
||
```
|
||
|
||
### 第三步:配置环境
|
||
|
||
```bash
|
||
# 复制配置文件
|
||
cp .env.example .env
|
||
|
||
# 编辑配置文件
|
||
nano .env
|
||
```
|
||
|
||
关键配置项:
|
||
|
||
```env
|
||
# 版本配置
|
||
WEBSOPY_VERSION=latest
|
||
|
||
# 数据库配置
|
||
DB_HOST=postgres
|
||
DB_PORT=5432
|
||
DB_NAME=websopy
|
||
DB_USER=websopy
|
||
DB_PASSWORD=your-secure-password
|
||
|
||
# Redis 配置
|
||
REDIS_HOST=redis
|
||
REDIS_PORT=6379
|
||
REDIS_PASSWORD=your-redis-password
|
||
|
||
# 域名配置(可选)
|
||
DOMAIN=your-domain.com
|
||
HTTPS_ENABLED=true
|
||
|
||
# 管理员账户
|
||
ADMIN_EMAIL=admin@yourcompany.com
|
||
ADMIN_PASSWORD=your-admin-password
|
||
```
|
||
|
||
### 第四步:启动服务
|
||
|
||
```bash
|
||
# 拉取镜像
|
||
docker-compose pull
|
||
|
||
# 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 查看服务状态
|
||
docker-compose ps
|
||
```
|
||
|
||
**预期输出:**
|
||
|
||
```
|
||
NAME STATUS
|
||
websopy-app running
|
||
websopy-worker running
|
||
websopy-postgres running
|
||
websopy-redis running
|
||
websopy-nginx running
|
||
```
|
||
|
||
### 第五步:访问平台
|
||
|
||
服务启动后,通过浏览器访问:
|
||
|
||
- 前端界面:`http://your-server-ip:80`
|
||
- 管理后台:`http://your-server-ip:80/admin`
|
||
- API 端点:`http://your-server-ip:8080/api/v1`
|
||
|
||
首次登录使用配置的 `ADMIN_EMAIL` 和 `ADMIN_PASSWORD`。
|
||
|
||
## 🔒 HTTPS 配置
|
||
|
||
### 使用 Let's Encrypt(推荐)
|
||
|
||
```bash
|
||
# 编辑 nginx 配置
|
||
nano nginx/conf.d/ssl.conf
|
||
```
|
||
|
||
```nginx
|
||
server {
|
||
listen 443 ssl http2;
|
||
server_name your-domain.com;
|
||
|
||
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
|
||
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
|
||
|
||
# 其他配置...
|
||
}
|
||
|
||
server {
|
||
listen 80;
|
||
server_name your-domain.com;
|
||
return 301 https://$server_name$request_uri;
|
||
}
|
||
```
|
||
|
||
```bash
|
||
# 申请 SSL 证书
|
||
certbot --nginx -d your-domain.com
|
||
|
||
# 重启 nginx
|
||
docker-compose restart nginx
|
||
```
|
||
|
||
### 使用自有证书
|
||
|
||
```bash
|
||
# 创建证书目录
|
||
mkdir -p nginx/ssl
|
||
|
||
# 复制证书文件
|
||
cp your-cert.crt nginx/ssl/cert.pem
|
||
cp your-cert.key nginx/ssl/key.pem
|
||
```
|
||
|
||
## 💾 备份策略
|
||
|
||
### 自动备份脚本
|
||
|
||
创建 `backup.sh`:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
BACKUP_DIR=/data/backups/websopy
|
||
DATE=$(date +%Y%m%d_%H%M%S)
|
||
|
||
# 创建备份目录
|
||
mkdir -p $BACKUP_DIR
|
||
|
||
# 备份数据库
|
||
docker exec websopy-postgres pg_dump -U websopy > $BACKUP_DIR/db_$DATE.sql
|
||
|
||
# 备份上传文件
|
||
tar -czf $BACKUP_DIR/uploads_$DATE.tar.gz /data/websopy/uploads
|
||
|
||
# 备份配置
|
||
tar -czf $BACKUP_DIR/config_$DATE.tar.gz /data/websopy/config
|
||
|
||
# 保留最近 30 天的备份
|
||
find $BACKUP_DIR -mtime +30 -delete
|
||
|
||
echo "备份完成: $DATE"
|
||
```
|
||
|
||
```bash
|
||
# 添加执行权限
|
||
chmod +x backup.sh
|
||
|
||
# 设置定时任务(每天凌晨 3 点执行)
|
||
crontab -e
|
||
# 添加行: 0 3 * * * /data/websopy/backup.sh >> /var/log/backup.log 2>&1
|
||
```
|
||
|
||
### 数据恢复
|
||
|
||
```bash
|
||
# 停止服务
|
||
docker-compose down
|
||
|
||
# 恢复数据库
|
||
docker exec -i websopy-postgres psql -U websopy < db_backup_file.sql
|
||
|
||
# 恢复上传文件
|
||
tar -xzf uploads_backup.tar.gz -C /data/websopy/uploads
|
||
|
||
# 重启服务
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 🔄 版本升级
|
||
|
||
### 查看当前版本
|
||
|
||
```bash
|
||
docker exec websopy-app websopy --version
|
||
```
|
||
|
||
### 升级步骤
|
||
|
||
```bash
|
||
cd ~/websopy
|
||
|
||
# 1. 备份当前数据(必须!)
|
||
./backup.sh
|
||
|
||
# 2. 下载新版本
|
||
wget https://releases.websopy.com/on-premise/v2.3.0.tar.gz
|
||
tar -xzf v2.3.0.tar.gz
|
||
|
||
# 3. 更新环境变量(如有必要)
|
||
nano .env
|
||
# 检查新版本的配置变更
|
||
|
||
# 4. 拉取新镜像
|
||
docker-compose pull
|
||
|
||
# 5. 执行数据库迁移
|
||
docker-compose run --rm websopy-app websopy migrate
|
||
|
||
# 6. 重启服务
|
||
docker-compose up -d
|
||
|
||
# 7. 验证升级
|
||
docker-compose logs -f websopy-app
|
||
```
|
||
|
||
### 紧急回滚
|
||
|
||
```bash
|
||
# 1. 停止当前版本
|
||
docker-compose down
|
||
|
||
# 2. 切换回旧版本
|
||
git checkout v2.2.0
|
||
|
||
# 3. 恢复数据库
|
||
docker exec -i websopy-postgres psql -U websopy < db_backup_file.sql
|
||
|
||
# 4. 启动旧版本
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 🔧 性能优化
|
||
|
||
### 资源调整
|
||
|
||
编辑 `docker-compose.yml`:
|
||
|
||
```yaml
|
||
services:
|
||
websopy-app:
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: '2'
|
||
memory: 4G
|
||
reservations:
|
||
cpus: '1'
|
||
memory: 2G
|
||
|
||
websopy-worker:
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: '4'
|
||
memory: 8G
|
||
```
|
||
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
### PostgreSQL 优化
|
||
|
||
```bash
|
||
docker exec websopy-postgres psql -U websopy -c "
|
||
ALTER SYSTEM SET shared_buffers = '2GB';
|
||
ALTER SYSTEM SET effective_cache_size = '6GB';
|
||
ALTER SYSTEM SET maintenance_work_mem = '512MB';
|
||
ALTER SYSTEM SET checkpoint_completion_target = 0.9;
|
||
"
|
||
|
||
docker-compose restart postgres
|
||
```
|
||
|
||
## 🐛 常见问题
|
||
|
||
### Q: 服务启动失败?
|
||
|
||
```bash
|
||
# 查看日志
|
||
docker-compose logs -f
|
||
|
||
# 检查端口占用
|
||
netstat -tlnp | grep -E '80|443|5432|6379'
|
||
```
|
||
|
||
### Q: 数据库连接失败?
|
||
|
||
1. 检查 `DB_PASSWORD` 是否正确
|
||
2. 确认 postgres 容器是否正常运行
|
||
3. 查看 postgres 日志:`docker-compose logs postgres`
|
||
|
||
### Q: 内存不足?
|
||
|
||
```bash
|
||
# 查看内存使用
|
||
docker stats
|
||
|
||
# 增加 swap
|
||
sudo fallocate -l 4G /swapfile
|
||
sudo chmod 600 /swapfile
|
||
sudo mkswap /swapfile
|
||
sudo swapon /swapfile
|
||
```
|
||
|
||
### Q: 如何完全卸载?
|
||
|
||
```bash
|
||
# 停止服务
|
||
docker-compose down -v
|
||
|
||
# 删除数据(谨慎!)
|
||
rm -rf ~/websopy
|
||
docker system prune -a
|
||
```
|
||
|
||
## 📞 获取帮助
|
||
|
||
- 📧 邮件支持:support@websopy.com
|
||
- 💬 技术社区:[forum.websopy.com](https://forum.websopy.com)
|
||
- 📖 官方文档:[docs.websopy.com](https://docs.websopy.com)
|
||
|
||
---
|
||
|
||
**上一步:** [AI 智能体接入指南](./ai-agent.md)
|
||
**下一步:** [安装 SDK 与初始化](./sdk-installation.md)
|