DEPLOY_SERVER.md 8.7 KB

灵越智报 2.0 - 服务器部署指南

部署环境: Ubuntu 22.04 LTS
服务器: lanaipc (RTX 4070 Ti Super 16GB)
更新日期: 2026-01-17
项目路径: /mnt/win_home/lingyue-zhibao


🖥️ 服务器环境

GPU:    NVIDIA GeForce RTX 4070 Ti Super (16GB)
CUDA:   12.5
Driver: 555.42.02
OS:     Ubuntu 22.04.5 LTS
Kernel: 5.15.0-164-generic

已运行的服务(GPU 占用 ~15.7GB):

  • dongshi-hanlp (308MB)
  • subtitle_venv (2.2GB)
  • venv (1.8GB)
  • VLLM::EngineCore (11.3GB)

📋 环境要求

需要安装

组件 版本要求 安装命令
Java 17 OpenJDK 17+ apt install openjdk-17-jdk
Maven 3.6+ apt install maven
PostgreSQL 14+ apt install postgresql postgresql-contrib
Redis 6+ apt install redis-server
RabbitMQ 3.9+ apt install rabbitmq-server
pgvector 0.5+ 见下方步骤

🚀 完整部署步骤

步骤 1:安装基础依赖

# 更新系统
apt update && apt upgrade -y

# 安装 Java 17
apt install -y openjdk-17-jdk

# 安装 Maven
apt install -y maven

# 验证安装
java -version
mvn -version

步骤 2:安装 PostgreSQL + pgvector

# 安装 PostgreSQL
apt install -y postgresql postgresql-contrib

# 安装 pgvector 依赖
apt install -y postgresql-server-dev-all build-essential git

# 编译安装 pgvector
cd /tmp
git clone https://github.com/pgvector/pgvector.git
cd pgvector
make
make install

# 启动 PostgreSQL
systemctl enable postgresql
systemctl start postgresql

步骤 3:创建数据库

# 切换到 postgres 用户
sudo -u postgres psql

# 在 psql 中执行
CREATE USER lingyue WITH PASSWORD '123123';
CREATE DATABASE lingyue_zhibao OWNER lingyue;
GRANT ALL PRIVILEGES ON DATABASE lingyue_zhibao TO lingyue;
\c lingyue_zhibao
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
\q

步骤 4:安装 Redis

apt install -y redis-server
systemctl enable redis-server
systemctl start redis-server

# 验证
redis-cli ping

步骤 5:安装 RabbitMQ

apt install -y rabbitmq-server
systemctl enable rabbitmq-server
systemctl start rabbitmq-server

# 启用管理插件
rabbitmq-plugins enable rabbitmq_management

# 创建用户
rabbitmqctl add_user admin admin123
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

步骤 6:部署项目

# 创建项目目录
mkdir -p /mnt/win_home/lingyue-zhibao
cd /mnt/win_home/lingyue-zhibao

# 克隆项目(或从本地复制)
git clone <your-gitlab-repo-url> .

# 初始化数据库表
psql -U lingyue -d lingyue_zhibao -f database/init.sql
psql -U lingyue -d lingyue_zhibao -f backend/sql/rag_tables.sql

# 编译项目
cd backend
mvn clean package -DskipTests

步骤 7:配置应用

编辑 backend/lingyue-starter/src/main/resources/application.properties:

# 数据库配置
spring.datasource.druid.url=jdbc:postgresql://localhost:5432/lingyue_zhibao
spring.datasource.druid.username=lingyue
spring.datasource.druid.password=123123

# Redis 配置
spring.data.redis.host=localhost
spring.data.redis.port=6379

# RabbitMQ 配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin123

# Ollama 配置(使用本地 vLLM 或远程服务)
ollama.url=http://localhost:11434
ollama.embedding.model=nomic-embed-text

# DeepSeek API(可选,使用本地 vLLM 替代)
# deepseek.api.url=http://localhost:8080/v1
# deepseek.api.key=token-abc123

步骤 8:启动应用

cd /mnt/win_home/lingyue-zhibao/backend

# 前台启动
java -Xms1g -Xmx2g -jar lingyue-starter/target/lingyue-starter.jar

# 或后台启动
nohup java -Xms1g -Xmx2g -jar lingyue-starter/target/lingyue-starter.jar > /var/log/lingyue.log 2>&1 &

🤖 配置 Embedding 服务

方案 A:使用 Ollama(推荐,简单)

# 安装 Ollama
curl -fsSL https://ollama.ai/install.sh | sh

# 下载 Embedding 模型
ollama pull nomic-embed-text

# 启动服务
nohup ollama serve > /var/log/ollama.log 2>&1 &

方案 B:使用现有的 vLLM(高效)

如果你的 vLLM 已经在运行,可以配置兼容的 Embedding 服务:

# application.properties
ollama.url=http://localhost:8080

方案 C:使用 HuggingFace TEI(专业)

# 使用 Docker(如果可用)
docker run -d --gpus all -p 8081:80 \
  ghcr.io/huggingface/text-embeddings-inference:latest \
  --model-id BAAI/bge-base-zh-v1.5

🔧 Systemd 服务配置

创建 /etc/systemd/system/lingyue.service:

[Unit]
Description=Lingyue Zhibao Application
After=network.target postgresql.service redis.service rabbitmq-server.service

[Service]
Type=simple
User=root
WorkingDirectory=/mnt/win_home/lingyue-zhibao/backend
ExecStart=/usr/bin/java -Xms1g -Xmx2g -jar lingyue-starter/target/lingyue-starter.jar
Restart=always
RestartSec=10

Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

[Install]
WantedBy=multi-user.target

启用服务:

systemctl daemon-reload
systemctl enable lingyue
systemctl start lingyue

# 查看状态
systemctl status lingyue

# 查看日志
journalctl -u lingyue -f

📡 API 接口一览

认证接口

方法 路径 功能
POST /auth/register 用户注册
POST /auth/login 用户登录
POST /auth/logout 用户登出

文件上传接口

方法 路径 功能
POST /api/v1/parse/upload 上传文件
GET /api/v1/parse/file/exists 检查文件是否存在

解析接口

方法 路径 功能
POST /parse/start 启动解析任务
GET /parse/status/{documentId} 查询解析状态

RAG 接口

方法 路径 功能
POST /api/rag/index 索引文档
POST /api/rag/query RAG 问答
GET /api/rag/chunks/{documentId} 获取文档分块
DELETE /api/rag/index/{documentId} 删除索引

🧪 测试部署

# 1. 检查服务状态
curl http://localhost:8000/actuator/health

# 2. 用户注册
curl -X POST http://localhost:8000/auth/register \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","email":"admin@lingyue.com","password":"admin123"}'

# 3. 用户登录
curl -X POST http://localhost:8000/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

# 4. 上传测试文件
curl -X POST http://localhost:8000/api/v1/parse/upload \
  -F "file=@test.pdf" \
  -F "userId=admin"

🌐 Nginx 反向代理(可选)

# /etc/nginx/sites-available/lingyue
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:8000;
        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;
        
        # WebSocket 支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # 文件上传大小限制
    client_max_body_size 100M;
}

启用:

ln -s /etc/nginx/sites-available/lingyue /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

📊 服务端口

服务 端口 说明
灵越智报 8000 主应用
PostgreSQL 5432 数据库
Redis 6379 缓存
RabbitMQ 5672 消息队列
RabbitMQ 管理 15672 Web 管理界面
Ollama 11434 Embedding 服务
vLLM(现有) - LLM 推理服务

🔥 快速部署脚本

在服务器上执行:

#!/bin/bash
# deploy.sh

set -e

PROJECT_DIR="/mnt/win_home/lingyue-zhibao"

echo "=== 检查服务状态 ==="
systemctl is-active postgresql || systemctl start postgresql
systemctl is-active redis-server || systemctl start redis-server
systemctl is-active rabbitmq-server || systemctl start rabbitmq-server

echo "=== 编译项目 ==="
cd $PROJECT_DIR/backend
mvn clean package -DskipTests -q

echo "=== 停止旧进程 ==="
pkill -f "lingyue-starter.jar" || true
sleep 2

echo "=== 启动应用 ==="
nohup java -Xms1g -Xmx2g -jar lingyue-starter/target/lingyue-starter.jar > /var/log/lingyue.log 2>&1 &

sleep 10

echo "=== 检查应用状态 ==="
curl -s http://localhost:8000/actuator/health || echo "启动中,请稍候..."

echo "=== 部署完成 ==="
echo "访问地址: http://$(hostname -I | awk '{print $1}'):8000"

📝 更新日志

  • 2026-01-17: 服务器部署版本,支持 Ubuntu 22.04 + RTX 4070 Ti