将dify部署到服务器上

将本地 Docker 部署的 Dify 迁移到自己的服务器,需要完成以下关键步骤:


一、迁移前准备工作

  1. 环境检查

    • 确保服务器满足:

      • OS: Ubuntu 20.04+/CentOS 7+
      • 内存: ≥4GB(推荐8GB)
      • 存储: ≥50GB SSD
      • 开放端口:80 (HTTP), 443 (HTTPS), 22 (SSH)
  2. 备份本地数据

    bash

    bash 复制代码
    # 备份数据库
    docker exec -t dify-postgres pg_dumpall -c -U postgres > dify_db_backup.sql
    
    # 备份知识库文件
    tar czvf knowledgebase_backup.tar.gz ./volumes/storage

二、服务器环境配置

1. 安装基础依赖

bash

bash 复制代码
# Ubuntu
sudo apt update && sudo apt install -y docker.io docker-compose git nginx

# CentOS
sudo yum install -y docker git nginx
sudo systemctl start docker
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 配置防火墙

bash

bash 复制代码
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

三、部署 Dify 到服务器

1. 获取部署文件

bash

bash 复制代码
git clone https://github.com/langgenius/dify.git
cd dify/docker

2. 配置环境变量

编辑 .env 文件:

env

ini 复制代码
# 关键配置项
NGINX_HTTP_PORT=80
NGINX_HTTPS_PORT=443
APP_SECRET_KEY=your_strong_secret_key  # 生成命令:openssl rand -hex 32
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/dify

3. 启动服务

bash

复制代码
docker-compose up -d

4. 验证部署

bash

css 复制代码
docker ps -a  # 应看到3个容器:app, worker, nginx
curl http://localhost/api/system/status  # 返回{"status":"ok"}即成功

四、恢复数据

1. 恢复数据库

bash

bash 复制代码
# 将备份文件复制到容器
docker cp dify_db_backup.sql dify-postgres:/tmp/

# 执行恢复
docker exec -it dify-postgres psql -U postgres -f /tmp/dify_db_backup.sql

2. 恢复知识库

bash

bash 复制代码
# 解压备份到存储卷
tar xzvf knowledgebase_backup.tar.gz -C ./volumes/storage

五、配置域名访问(Nginx 反向代理)

1. 创建 Nginx 配置

/etc/nginx/sites-available/dify.conf

nginx

ini 复制代码
server {
    listen 80;
    server_name ai.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2. 启用配置

bash

bash 复制代码
sudo ln -s /etc/nginx/sites-available/dify.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

六、启用 HTTPS(Let's Encrypt)

bash

bash 复制代码
# 安装 certbot
sudo apt install certbot python3-certbot-nginx

# 获取证书
sudo certbot --nginx -d ai.yourdomain.com

# 自动续期测试
sudo certbot renew --dry-run

七、系统优化

1. 开机自启

bash

bash 复制代码
sudo systemctl enable docker nginx

2. 日志管理

bash

bash 复制代码
# 查看实时日志
docker-compose logs -f app

# 日志轮转(创建 /etc/logrotate.d/dify)
/var/lib/docker/containers/*/*.log {
  daily
  rotate 7
  compress
  delaycompress
  missingok
  copytruncate
}

八、故障排查指南

问题现象 解决方案
502 Bad Gateway 检查容器状态:docker-compose ps
数据库连接失败 验证 .env 中的 DATABASE_URL
知识库加载失败 检查存储卷权限:chmod -R 755 volumes
HTTPS 重定向循环 在 Nginx 配置中添加:proxy_set_header X-Forwarded-Proto $scheme;

九、升级维护

bash

bash 复制代码
# 更新代码
cd dify/docker
git pull origin main

# 重建服务
docker-compose down
docker-compose up -d --build

💡 建议

  1. 使用 watch -n 5 docker stats 监控资源占用

  2. 重要更新前创建快照:docker commit dify-app dify-backup-$(date +%F)

  3. 设置每日自动备份数据库(通过 crontab)

完成以上步骤后,您的 Dify 已稳定运行在自有服务器上。可通过 https://ai.yourdomain.com 访问智能客服系统。

相关推荐
不会c+1 小时前
02-SpringBoot配置文件
java·spring boot·后端
雨辰AI2 小时前
生产级实战:人大金仓 V9 标准化运维手册(日常巡检 + 监控告警 + 应急处置)
java·运维·数据库·后端
TeamDev3 小时前
JxBrowser 9.3.0 版本发布啦!
java·后端·c#·混合应用·jxbrowser·浏览器控件·异步媒体设备
陈随易3 小时前
Rust、Golang、MoonBit 编译成 WASM,体积和速度差距有多大?
前端·后端·程序员
IT_陈寒3 小时前
Python多线程的坑,我居然现在才踩到
前端·人工智能·后端
魏祖潇4 小时前
DDD 完整指南——AI 时代工程师的第一道秩序分水岭
人工智能·后端
im_lanny4 小时前
如何给 Agent 打造“最强大脑“?深度解析短期记忆与长期记忆的分层设计
后端
Fanta丶4 小时前
2.Activiti表结构介绍 类关系
后端
触底反弹4 小时前
AI Tool Use 深度解析:大模型是如何"突破物理限制"调用外部工具的?
javascript·人工智能·后端
ClouGence4 小时前
SQL Server CDC 如何降低主库压力?Always On 备库读取实践
数据库·后端·sql·sqlserver