Skip to content

Latest commit

 

History

History
275 lines (199 loc) · 7.72 KB

File metadata and controls

275 lines (199 loc) · 7.72 KB

服务器部署 + 本地开发 指南

架构说明

┌─────────────────────────────────────────────────────────────┐
│                      服务器 (Docker)                        │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │ MySQL   │ │ Redis   │ │ ES      │ │ Neo4j   │          │
│  │ :3306   │ │ :6379   │ │ :9200   │ │ :7687   │          │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘          │
│       │           │           │           │                │
│  ┌────┴────┐ ┌────┴────┐ ┌────┴────┐                      │
│  │ MinIO   │ │ XXL-Job │ │         │                      │
│  │ :9000   │ │ :8080   │ │         │                      │
│  └─────────┘ └─────────┘ └─────────┘                      │
└─────────────────────────────────────────────────────────────┘
                            │
                            │ 网络连接
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                      本地电脑 (IDEA)                        │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              KnowEngine 应用 (:8009)                │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

第一步:服务器部署 Docker 中间件

1.1 上传文件到服务器

将以下文件上传到服务器:

# 上传到服务器的 /opt/know-engine 目录
scp docker-compose.yml root@你的服务器IP:/opt/know-engine/
scp -r src/main/resources/sql root@你的服务器IP:/opt/know-engine/src/main/resources/

1.2 服务器安装 Docker

# CentOS/RHEL
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Ubuntu/Debian
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动 Docker
systemctl start docker
systemctl enable docker

# 验证安装
docker --version
docker compose version

1.3 启动服务

cd /opt/know-engine

# 后台启动所有服务
docker compose up -d

# 查看启动状态
docker compose ps

# 查看日志(等待所有服务启动完成)
docker compose logs -f

1.4 验证服务

# 检查 MySQL
mysql -h 你的服务器IP -u know_engine -pknow_engine -e "SELECT 1"

# 检查 Redis
redis-cli -h 你的服务器IP -a knowengine ping

# 检查 Elasticsearch
curl http://你的服务器IP:9200/_cluster/health

# 检查 Neo4j
curl http://你的服务器IP:7474

# 检查 MinIO
curl http://你的服务器IP:9000/minio/health/live

# 检查 XXL-Job
curl http://你的服务器IP:8080/xxl-job-admin

第二步:配置服务器防火墙/安全组

2.1 阿里云/腾讯云安全组

在云服务器控制台,添加以下端口入站规则:

端口 协议 说明
3306 TCP MySQL
6379 TCP Redis
9200 TCP Elasticsearch
7687 TCP Neo4j Bolt
7474 TCP Neo4j Web UI
9000 TCP MinIO API
9001 TCP MinIO Web UI
8080 TCP XXL-Job Admin

2.2 服务器防火墙(如果开启)

# CentOS 7+
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --permanent --add-port=9200/tcp
firewall-cmd --permanent --add-port=7687/tcp
firewall-cmd --permanent --add-port=7474/tcp
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=9001/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

# Ubuntu
ufw allow 3306/tcp
ufw allow 6379/tcp
ufw allow 9200/tcp
ufw allow 7687/tcp
ufw allow 7474/tcp
ufw allow 9000/tcp
ufw allow 9001/tcp
ufw allow 8080/tcp

第三步:本地配置连接服务器

3.1 修改 application-dev.yml

打开 src/main/resources/application-dev.yml,将所有 你的服务器IP 替换为实际的服务器 IP 地址:

# 示例:假设服务器 IP 是 47.104.64.223
spring:
  datasource:
    url: jdbc:mysql://47.104.64.223:3306/know_engine?rewriteBatchedStatements=true
  data:
    redis:
      host: 47.104.64.223

# ... 其他配置类似

3.2 配置 DashScope API Key

langchain4j:
  open-ai:
    chat-model:
      api-key: ${LLM_API_KEY}  # 你的 DashScope API Key

3.3 初始化 XXL-Job 数据库

# 连接服务器 MySQL
mysql -h 你的服务器IP -u root -proot123456

# 创建 XXL-Job 数据库
CREATE DATABASE IF NOT EXISTS xxl_job DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# 下载并执行 XXL-Job 初始化脚本
# 脚本位置: https://github.com/xuxueli/xxl-job/blob/master/doc/db/tables_xxl_job.sql

3.4 初始化 MinIO Bucket

  1. 浏览器访问 http://你的服务器IP:9001
  2. 用户名: minioadmin,密码: minioadmin
  3. 创建 Bucket: know-engine
  4. 设置 Bucket 策略为公开读取(或根据需要配置)

第四步:本地运行应用

4.1 IDEA 配置

  1. 打开项目
  2. 设置 Active Profile: dev
    • Run/Debug Configuration → Active Profiles: dev
    • 或添加 VM options: -Dspring.profiles.active=dev

4.2 命令行运行

# 打包
mvn clean package -DskipTests

# 运行(指定 dev profile)
java -jar target/know-engine-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev

4.3 访问应用


常见问题

Q1: 连接超时

原因: 防火墙/安全组未开放端口

解决:

# 测试端口连通性
telnet 你的服务器IP 3306
telnet 你的服务器IP 6379
telnet 你的服务器IP 9200

Q2: MySQL 连接拒绝

原因: MySQL 未授权远程访问

解决:

# 进入 MySQL 容器
docker compose exec mysql mysql -u root -proot123456

# 授权远程访问
GRANT ALL PRIVILEGES ON know_engine.* TO 'know_engine'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Q3: Redis 连接失败

原因: Redis 默认只监听 127.0.0.1

解决: 已在 docker-compose.yml 中配置为监听所有地址

Q4: Elasticsearch 连接失败

原因: ES 默认开启安全认证

解决: 已在 docker-compose.yml 中关闭安全认证

Q5: Neo4j 连接失败

原因: Neo4j 需要等待启动完成

解决: 等待 1-2 分钟后重试


生产环境建议

  1. 修改默认密码: 生产环境必须修改所有默认密码
  2. 配置 SSL: 为 MySQL、Redis、ES 配置 SSL 加密
  3. 限制访问 IP: 安全组只允许本地 IP 访问
  4. 定期备份: 定期备份 MySQL、Neo4j、MinIO 数据
  5. 监控告警: 配置 Prometheus + Grafana 监控