┌─────────────────────────────────────────────────────────────┐
│ 服务器 (Docker) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ MySQL │ │ Redis │ │ ES │ │ Neo4j │ │
│ │ :3306 │ │ :6379 │ │ :9200 │ │ :7687 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │ │
│ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ │
│ │ MinIO │ │ XXL-Job │ │ │ │
│ │ :9000 │ │ :8080 │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────────┘
│
│ 网络连接
▼
┌─────────────────────────────────────────────────────────────┐
│ 本地电脑 (IDEA) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ KnowEngine 应用 (:8009) │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
将以下文件上传到服务器:
# 上传到服务器的 /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/# 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 versioncd /opt/know-engine
# 后台启动所有服务
docker compose up -d
# 查看启动状态
docker compose ps
# 查看日志(等待所有服务启动完成)
docker compose logs -f# 检查 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在云服务器控制台,添加以下端口入站规则:
| 端口 | 协议 | 说明 |
|---|---|---|
| 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 |
# 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打开 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
# ... 其他配置类似langchain4j:
open-ai:
chat-model:
api-key: ${LLM_API_KEY} # 你的 DashScope API Key# 连接服务器 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- 浏览器访问
http://你的服务器IP:9001 - 用户名:
minioadmin,密码:minioadmin - 创建 Bucket:
know-engine - 设置 Bucket 策略为公开读取(或根据需要配置)
- 打开项目
- 设置 Active Profile:
dev- Run/Debug Configuration → Active Profiles:
dev - 或添加 VM options:
-Dspring.profiles.active=dev
- Run/Debug Configuration → Active Profiles:
# 打包
mvn clean package -DskipTests
# 运行(指定 dev profile)
java -jar target/know-engine-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev- 应用地址: http://localhost:8009
- 上传页面: http://localhost:8009/upload.html
- 对话页面: http://localhost:8009/chat.html
原因: 防火墙/安全组未开放端口
解决:
# 测试端口连通性
telnet 你的服务器IP 3306
telnet 你的服务器IP 6379
telnet 你的服务器IP 9200原因: MySQL 未授权远程访问
解决:
# 进入 MySQL 容器
docker compose exec mysql mysql -u root -proot123456
# 授权远程访问
GRANT ALL PRIVILEGES ON know_engine.* TO 'know_engine'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;原因: Redis 默认只监听 127.0.0.1
解决: 已在 docker-compose.yml 中配置为监听所有地址
原因: ES 默认开启安全认证
解决: 已在 docker-compose.yml 中关闭安全认证
原因: Neo4j 需要等待启动完成
解决: 等待 1-2 分钟后重试
- 修改默认密码: 生产环境必须修改所有默认密码
- 配置 SSL: 为 MySQL、Redis、ES 配置 SSL 加密
- 限制访问 IP: 安全组只允许本地 IP 访问
- 定期备份: 定期备份 MySQL、Neo4j、MinIO 数据
- 监控告警: 配置 Prometheus + Grafana 监控