Files
jczxw-pc/public/docs/deployment.md
2026-04-23 16:30:57 +08:00

394 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 私有化部署完全指南
> 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
# 安装 DockerUbuntu/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)