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

相关推荐
苏三的开发日记4 小时前
grafana里面怎么添加Prometheus数据源监控MySQL
后端
找不到对象就NEW一个4 小时前
wechatapi,微信二次开发-连载篇(二)通讯录模块
后端·微信
Y***98515 小时前
【学术会议论文投稿】Spring Boot实战:零基础打造你的Web应用新纪元
前端·spring boot·后端
q***33375 小时前
SpringMVC新版本踩坑[已解决]
android·前端·后端
武子康5 小时前
大数据-166 Apache Kylin 1.6 Streaming Cubing 实战:Kafka 到分钟级 OLAP
大数据·后端·apache kylin
回家路上绕了弯5 小时前
彻底解决超卖问题:从单体到分布式的全场景技术方案
分布式·后端
8***29315 小时前
能懂!基于Springboot的用户增删查改(三层设计模式)
spring boot·后端·设计模式
IT_陈寒6 小时前
Python高手都在用的5个隐藏技巧,让你的代码效率提升50%
前端·人工智能·后端
Qiuner6 小时前
Spring Boot 机制二:配置属性绑定 Binder 源码解析(ConfigurationProperties 全链路)
java·spring boot·后端·spring·binder
Victor3566 小时前
Redis(151)Redis的内存使用如何监控?
后端