问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Dify本地安装教程:Docker与源码两种方式详解

创作时间:
作者:
@小白创作中心

Dify本地安装教程:Docker与源码两种方式详解

引用
CSDN
1.
https://m.blog.csdn.net/m0_48594855/article/details/145668453

Dify是一个基于大语言模型的开源项目,它可以帮助用户快速构建和部署自己的AI应用。本文将详细介绍如何在本地环境中安装Dify,包括使用Docker容器化部署和从源码编译部署两种方式。

Dify本地安装可以用docker方式,和源码编译方式。
先到云厂商平台申请一台Centos系统云主机,网络选择海外,需要公网IP,再按一下流程操作:

方式一:Docker安装

安装docker compose

参考:https://blog.csdn.net/weixin_56781779/article/details/132258636

安装Dify并启动

git clone https://github.com/langgenius/dify.git
cd dify/docker
export EXPOSE_NGINX_PORT=8080
docker compose up -d

启动后docker ps 可以看到以下容器
netstat -natp可以看到docker监听的端口是8080,设置安全组开发8080端口
访问 http://虚拟机ip:8080 根据情况输邮箱,用户名,密码 完成本地注册可以开始使用

方式二:源码安装

源码安装主要可以参考文档
https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/local-source-code

安装数据库

sudo apt-get update
#安装pg redis
sudo apt install redis-server wget postgresql postgresql-client -y
sudo apt install nginx nodejs npm -y
sudo wget https://github.com/weaviate/weaviate/releases/download/v1.27.12/weaviate-v1.27.12-linux-amd64.tar.gz
sudo tar -zxf weaviate-v1.27.12-linux-amd64.tar.gz
#安装向量数据库
sudo chmod +x weaviate
sudo mv weaviate /opt  

设置数据库密码

修改/etc/redis/redis.conf,添加:requirepass difyai123456

启动redis

service redis-server start  

启动pg

service postgresql start  

修改pg密码

su - postgres
psql
CREATE DATABASE dify;
ALTER USER postgres WITH PASSWORD 'difyai123456';
quit;  

启动weaviate

export PERSISTENCE_DATA_PATH=/var/lib/weaviate
export QUERY_DEFAULTS_LIMIT=25
export AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false
export DEFAULT_VECTORIZER_MODULE=none
export CLUSTER_HOSTNAME=node1
export AUTHENTICATION_APIKEY_ENABLED=true
export AUTHENTICATION_APIKEY_ALLOWED_KEYS=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih
export AUTHENTICATION_APIKEY_USERS=hello@dify.ai
export AUTHORIZATION_ADMINLIST_ENABLED=true
export AUTHORIZATION_ADMINLIST_USERS=hello@dify.ai
cd /opt
nohup ./weaviate --host 0.0.0.0 --port '8080' --scheme http |tee ./weaviate.log 2>&1 &

源码安装

如果执行poetry shell失败的话以下命令要带上poetry run,否则会报错

poetry run flask db upgrade

启动前端,后端,和worker

#启动前端
export NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
export NEXT_PUBLIC_EDITION=SELF_HOSTED
export NEXT_PUBLIC_API_PREFIX=/console/api  #不设置默认访问http://localhost/console/api
export NEXT_PUBLIC_PUBLIC_API_PREFIX=/api  #不设置默认访问http://localhost/api
export NEXT_PUBLIC_SENTRY_DSN=
export NEXT_TELEMETRY_DISABLED=1
export NEXT_PUBLIC_UPLOAD_IMAGE_AS_ICON=false
export NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS=60000
export NEXT_PUBLIC_CSP_WHITELIST=
export NEXT_PUBLIC_TOP_K_MAX_VALUE=10
export NEXT_PUBLIC_INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000
nohup npm run start &
#启动worker
#start backend
export CONSOLE_API_URL=
export APP_API_URL=
export WEB_SENTRY_DSN=
export NEXT_TELEMETRY_DISABLED=0
export TEXT_GENERATION_TIMEOUT_MS=60000
export CSP_WHITELIST=
export TOP_K_MAX_VALUE=10
export INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000
cd /app/dify/api
nohup poetry run  celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO ./celery.log 2>&1 &
nohup poetry run flask run --host 0.0.0.0 --port=5001 --debug |tee ./backend.log 2>&1 &  

这样跑起来只适合本机访问,如果要从公网访问还要假一层nginx,我们在前面已安装nginx,这里我们就配置nginx,让其可以代理访问dify

配置nginx

修改/etc/nginx/nginx.conf如下:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;
events {
        worker_connections 768;
        # multi_accept on;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
         
    keepalive_timeout  65;
         
    #gzip  on;
    client_max_body_size 15M;
             
    include /etc/nginx/conf.d/*.conf;
}

修改文件 /etc/nginx/conf.d/default.conf

server {
    listen 8080;
    server_name _;
    location /console/api {
      proxy_pass http://127.0.0.1:5001;
    }
    location /api {
      proxy_pass http://127.0.0.1:5001;
    }
    location /v1 {
      proxy_pass http://127.0.0.1:5001;
    }
    location /files {
      proxy_pass http://127.0.0.1:5001;
    }
    location / {
      proxy_pass http://127.0.0.1:3000;
    }
}

重启nginx:systemctl restart nginx
通过命令netstat -natp 确认nginx确实监听8080端口
访问 http://虚拟机ip:8080 后续页面访问同方式一

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号