将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 访问智能客服系统。

相关推荐
CodeUp.19 分钟前
基于SpringBoot的OA办公系统的设计与实现
spring boot·后端·mybatis
小醉你真好24 分钟前
Spring Boot + ShardingSphere 分库分表实战
java·spring boot·后端·mysql
Jacob02341 小时前
Node.js 性能瓶颈与 Rust + WebAssembly 实战探索
后端·rust·node.js
王中阳Go1 小时前
分库分表之后如何使用?面试可以参考这些话术
后端·面试
知其然亦知其所以然1 小时前
ChatGPT太贵?教你用Spring AI在本地白嫖聊天模型!
后端·spring·ai编程
kinlon.liu2 小时前
内网穿透 FRP 配置指南
后端·frp·内网穿透
kfyty7252 小时前
loveqq-mvc 再进化,又一款分布式网关框架可用
java·后端
Dcr_stephen2 小时前
Spring 事务中的 beforeCommit 是业务救星还是地雷?
后端
raoxiaoya2 小时前
Golang中的`io.Copy()`使用场景
开发语言·后端·golang
二闹2 小时前
高效开发秘籍:CRUD增强实战
后端·设计模式·性能优化