一、环境准备
- 操作系统:Ubuntu 20.04/22.04(推荐),也可用其他 Linux
- Python 3.8 及以上
- 推荐有 NVIDIA GPU(如 A100, V100, 3090, 4090 等)
二、安装 vLLM 并加载 Qwen3
1.安装依赖
python
sudo apt update
sudo apt install python3-pip git -y
pip3 install --upgrade pip
- 安装 vLLM
python
pip3 install vllm
- 下载 Qwen3 模型(以 Qwen1.5-7B-Chat 为例)
资源加速
python
export https_proxy=http://turbo.gpushare.com:30000 http_proxy=http://turbo.gpushare.com:30000
export https_proxy=http://turbo2.gpushare.com:30000 http_proxy=http://turbo2.gpushare.com:30000
下载 Qwen3 模型 👈
python
pip3 install huggingface_hub
python3 -c "from huggingface_hub import snapshot_download; snapshot_download(repo_id='Qwen/Qwen3-8B', local_dir='./Qwen3-8B')"
python3 -c "from huggingface_hub import snapshot_download; snapshot_download(repo_id='Qwen/Qwen3-4B', local_dir='./Qwen3-4B')"
关闭资源加速
python
unset http_proxy && unset https_proxy
- 启动 vLLM OpenAI API 服务
python
python3 -m vllm.entrypoints.openai.api_server --model Qwen3-8B --host 0.0.0.0 --port 8000 --dtype half
python3 -m vllm.entrypoints.openai.api_server --model Qwen3-4B --host 0.0.0.0 --port 8000 --dtype half
python3 -m vllm.entrypoints.openai.api_server \
--model Qwen3-8B \
--host 0.0.0.0 \
--port 8000 \
--dtype half \
--gpu-memory-utilization 0.8 \
--max-num-batched-tokens 2048 \
--trust-remote-code

vLLM OpenAI API 服务已经成功启动了!从日志可以看到:
服务器已经在 http://0.0.0.0:8000 上运行
模型已经成功加载
API 路由都已经正确配置(包括 /v1/chat/completions 等)
先测试一下 vLLM 服务是否正常工作:
python
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-8B",
"messages": [{"role": "user", "content": "你好"}]
}'
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-4B",
"messages": [{"role": "user", "content": "你好"}]
}'
连通成功后效果如下:

三、 使用 tmux 来管理多个终端
首先安装 tmux(如果还没安装):
python
apt-get install tmux
创建一个新的 tmux 会话:
python
tmux
tmux 的基本操作(所有命令都是先按 Ctrl+b,松开后再按其他键):
重要快捷键(先按 Ctrl+b,再按以下键):
-
c:创建新窗口
-
n:切换到下一个窗口
-
p:切换到上一个窗口
-
w:显示所有窗口列表
-
d:暂时断开会话(服务继续运行)
-
:进入复制模式(可以查看历史输出,按 q 退出)
如果不小心退出了:
python
# 重新连接到 tmux 会话
tmux attach
完整操作步骤:
python
# 1. 启动 tmux
tmux
# 2. 在第一个窗口运行 vLLM 服务
python3 -m vllm.entrypoints.openai.api_server --model Qwen3-8B --host 0.0.0.0 --port 8000 --dtype half
# 3. 按 Ctrl+b,再按 c 创建新窗口
# 4. 在新窗口中测试服务
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-8B",
"messages": [{"role": "user", "content": "你好"}]
}'
三、安装 Dify
然后按照步骤安装 Dify,但有几点建议:
注意事项:
- 保持 vLLM 服务在运行状态(不要关闭那个终端)
- 在新的终端窗口中运行 Dify 的安装步骤
python
# 1. 创建新目录(可选,但建议)
mkdir dify_app
cd dify_app
# 2. 克隆代码
git clone https://github.com/langgenius/dify.git
cd dify
# 3. 建议创建虚拟环境(可选,但建议)
python3 -m venv venv
source venv/bin/activate
# 4. 安装依赖
pip3 install -r requirements.txt
# 5. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,添加:
# OPENAI_API_BASE_URL=http://127.0.0.1:8000/v1
# OPENAI_API_KEY=EMPTY
# MODEL_PROVIDER=openai
# 6. 启动 Dify
python3 main.py
安装依赖
python
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv git build-essential
sudo apt-get install -y postgresql postgresql-contrib redis-server
sudo apt-get install -y nodejs npm
建议用 nvm 安装 Node.js 18.x(可选)务必在root或tmp下安装:
python
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 18
nvm use 18
准备数据库
启动 PostgreSQL 和 Redis
python
sudo service postgresql start
sudo service redis-server start
创建数据库和用户(以 dify/dify 为例):
python
sudo -u postgres psql
现在的状态
- PostgreSQL 和 Redis 服务都已启动,正常。
- 你还在 PostgreSQL 的命令行界面(psql),但没有创建数据库和用户。
正确操作方法
我们需要在 postgres=# 提示符下依次输入(每条命令后回车):
sql
CREATE DATABASE dify;
CREATE USER dify WITH PASSWORD 'dify';
GRANT ALL PRIVILEGES ON DATABASE dify TO dify;
\q
- \q 用于退出 psql 命令行。
如果你已经退出 psql,可以重新进入:
python
sudo -u postgres psql

克隆 Dify 源码并安装后端(请逐条执行)
python
git clone https://github.com/langgenius/dify.git
cd dify
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Dify 项目结构近期有变化导致 requirements.txt被替代为~/dify/api 目录下 pyproject.toml 文件,这说明 Dify 后端现在采用了新的 Python 包管理方式(PEP 517/518 标准),通常用 pip 或 poetry、uv、pipx 等工具来安装依赖。
因此我们使用 pip 安装依赖
python
pip install .
这会根据 pyproject.toml 自动安装所有依赖。
如遇到报错:
Apply to .bash_histor...
× Cannot uninstall blinker 1.4
╰─> It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
可以用 --ignore-installed 参数强制安装:
python
pip install . --ignore-installed blinker
五、配置环境变量
在 ~/dify 目录下手动创建 .env 文件,内容如下(根据你的数据库和 Redis 配置调整):
python
# PostgreSQL
DATABASE_URL=postgresql://dify:dify@localhost:5432/dify
# Redis
REDIS_URL=redis://localhost:6379/0
# 端口
PORT=5000
# 其他可选配置
# OPENAI_API_KEY=sk-xxx
# 参考官方文档补充更多配置项
六、初始化数据库
进入 api 目录
python
cd ~/dify/api
安装 uv(如果还没装)
python
pip install uv
安装依赖
在 ~/dify/api 目录下执行:
python
uv sync --dev
复制并编辑 .env 文件
如果 api 目录下没有 .env.example,你可以手动创建 .env 文件,内容参考前述建议(数据库、Redis、SECRET_KEY 等)。
生成 SECRET_KEY:
python
echo "SECRET_KEY=$(openssl rand -base64 42)" >> .env

数据库迁移(初始化)
在 ~/dify/api 目录下执行:
python
uv run flask db upgrade
这一步会自动根据你的 .env 配置连接数据库并初始化表结构。
查看 api 目录下的 README 或官方文档
Dify 近期有较大结构调整,数据库迁移命令可能有变化。
如果 flask db upgrade 依然不可用,可以尝试:
python
flask db upgrade
七、启动后端服务
python
python3 main.py
默认监听 5000 端口。
八、安装并构建前端
python
cd web
npm install
npm run build
构建完成后,静态文件会在 web/dist 目录。
九、启动前端服务
你可以用 nginx 或 serve 工具托管 web/dist 静态文件。例如:
python
npm install -g serve
serve -s dist -l 3000
现在前端服务在 3000 端口。
十、访问和配置
- 访问 http://localhost:3000 进入 Dify 前端
- 注册账号,后台配置你的 vLLM+Qwen3 服务