当前位置: 首页 > news >正文

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

修改/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  后续页面访问同方式一

相关文章:

  • 开源在线考试系统开源在线考试系统:支持数学公式的前后端分离解决方案
  • 动态内存管理
  • 栈与队列(C语言版)
  • 数据分析简介及其常用指标与方法
  • 毕业设计—基于Spring Boot的社区居民健康管理平台的设计与实现
  • java接口
  • DeepSeek教unity------Dotween
  • 部署postgresql_exporter监控pgsql
  • mysql增加字段操作以及关键字报错
  • MATLAB中regexpi函数用法
  • 想要追踪一个在传送带上运动的东西,该怎么选择工业相机呢,需要考虑哪些因素
  • 国产Linux OS:网络性能调优关键内核参数
  • 【医学影像AI】50个眼科影像数据集(1)分类任务
  • 软件测试技术之跨平台的移动端UI自动化测试(上)
  • VSCode 中使用 Snippets 设置常用代码块
  • 数据结构:顺序表(Sequence List)及其实现
  • Natural Language Processing NLP
  • Ubuntu轻松部署ToolJet低代码开发平台结合内网穿透远程访问
  • Blackbox.AI:高效智能的生产力工具新选择
  • 实用且美观,一款简单且模块化的UI组件库!
  • 山东茌平民企巨头实控人省外再出手:斥资16亿拿下山西一宗探矿权
  • 芬兰直升机相撞坠毁事故中五名人员全部遇难
  • 大环线呼之欲出,“金三角”跑起来了
  • 江苏省委组织部副部长高颜已任南京市委常委、组织部部长
  • 标普500指数连涨四日,大型科技股多数下跌
  • 马上评|清理“滥竽充数者”,为医者正名