通过vLLM 搭建自己的API服务(内置国内top模型)
OnethingAI
发布于:2025-06-12
一,创建vLLM 实例
二,选择需要启动的内置模型(模型文件已内置,需要补充meta)启动服务
目前已经内置两套模型:deepseek 系列蒸馏模型,Qwen QwQ和VL的模型
Deepseek的模型路径在(/app/deepseek)
Qwen的模型路径在(/root/.cache/modelscope/hub/models/Qwen)
选中需要的模型,补全meta信息,以Qwen/QwQ-32B为例
cd /root/.cache/modelscope/hub/models/Qwen modelscope download --model Qwen/QwQ-32B --exclude *.safetensors \ --local_dir ./QwQ-32B
deepseek 模型操作如下:
cd /app/deepseek; modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-14B \ --exclude *.safetensors --local_dir ./DeepSeek-R1-Distill-Qwen-14B
补全信息如图
启动模型
vllm serve /root/.cache/modelscope/hub/models/Qwen/QwQ-32B \ --host 0.0.0.0 --port 6006 --served-model-name Qwen/QwQ-32B
加载过程如图
三,配置公网访问的能力
验证是否可以访问
curl -v http://your_url_here/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/QwQ-32B",
"messages": [
{"role": "user", "content": "C++ 写一个快排"}
],
"stream": true
}'
启动成功后运行如图所示
四,增加nginx简单的鉴权
apt update
apt install nginx -y
安装完成如下
配置nginx 反向代理到6006:
vim /etc/nginx/sites-available/default
修改内容如下:
# 定义反向代理的上游服务
upstream local_service {
server 127.0.0.1:6006;
}
# 默认服务器配置
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _; # 匹配所有未定义的域名
# 反向代理到本地 6006 端口
location / {
proxy_pass http://local_service; # 或直接使用 http://127.0.0.1:6006
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 可选:记录访问日志
access_log /var/log/nginx/default_access.log;
error_log /var/log/nginx/default_error.log;
}
配置后启动shell 上执行nginx,启动nginx进程
nginx
新增一个公网配置80端口,配置方法参见第三章节
让nginx 支持简单的权限校验:
server {
listen 80 default_server;
server_name _;
location / {
# 检查 Authorization 头是否存在且格式正确
if ($http_authorization = "") {
return 401 "Unauthorized: Missing Token";
}
# 验证 Bearer Token(替换 YOUR_EXPECTED_TOKEN 为实际值)
if ($http_authorization !~* "Bearer YOUR_EXPECTED_TOKEN") {
return 403 "Forbidden: Invalid Token";
}
# 反向代理到本地服务
proxy_pass http://127.0.0.1:6006;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Authorization $http_authorization; # 传递 Token 到后端
}
其他更复杂的使用场景(比如和自己的后台打通,支持动态的token),参考nginx 官方文档
核心架构: