本AIKE智能PHP在线客服系统安装教程从零部署本系统所需的**环境要求**、**Web 安装向导**、**安装后必改配置文件**、**相关服务启动**及**验收检查**。演示地址:AIKE智能PHP在线客服系统

## 一、系统组成
PHP Web 应用:public/` 为网站根目录
实时推送服务:`aike_pusher/`(Workerman,WebSocket + HTTP API)
数据库结构:install/data.sql`(安装向导自动导入)
向量检索(可选):知识库导入插件依赖 Qdrant;**一键安装:`bash install_qdrant.sh`**
## 二、环境要求
### 2.1 服务器
- **操作系统**:Linux(推荐)
- **PHP**:推荐 7.3+
- **MySQL**:5.6+,字符集 **utf8mb4**

### 2.2 PHP 扩展(安装向导会检测)
| 扩展名 | 主要用途 |
|---|---|
| mbstring | 多字节字符串 |
| gd | 图片处理 |
| curl | HTTP 请求、AI 接口 |
| pdo_mysql | 数据库 |
建议额外启用:`json`、`openssl`、`fileinfo`、`zip`。
### 2.3 目录写权限
以下目录需对 Web 运行用户可写:
```
config/
application/extra/
public/
public/upload/
runtime/
public/assets/front/
public/assets/layer/
```
### 2.4 端口规划
| 端口 | 默认值 | 说明 |
|---|---|---|
| HTTP/HTTPS | 80 / 443 | 网站访问 |
WebSocket(wport) | 456 | 访客端 / 客服端实时消息(aike_pusher 监听) |
Pusher API(aport) | 2080 | PHP 后端与推送服务通讯(建议仅本机或内网) |
| Qdrant HTTP | 6333 | 向量检索(可选) |
| Qdrant gRPC | 6334 | 向量检索(可选,SDK 直连时用) |
> **HTTPS 站点**:`whost` 建议填 `wss://你的域名`,由 Nginx 反代到本机 `456`;`wport` 填 **443**(对外)或 **456**(直连),须与 Nginx / 防火墙配置一致。
## 三、部署教程
### 3.1 上传代码
将项目上传到服务器,例如:
/www/wwwroot/your-domain.com/
网站根目录指向 **`public`**,不要将整个项目根目录直接暴露给外网。
### 3.2 创建数据库
宝塔创建数据库
安装向导也可自动创建数据库。
### 3.3 开始安装
- 若 `public/index.php` **已存在**,安装向导会提示「已经安装成功」。
重新安装:https://你的域名/install.php

修改数据库参数和管理账号即可,其它不懂的建议默认。
### 3.4 安装成功:

### 3.5总后台
https://你的域名/platform/passport/login.html
账号:安装时创建
密码:安装时创建

### 3.6 客服后台
总后台创建客服账号:

登陆客服后台:
https://你的域名/admin/login/index/business_id/1.html

## 四、Web 服务器配置
### Nginx配置
站点配置文件后面加上:
access_log /dev/null;
error_log /www/wwwlogs/ai.lw50.com.error.log;
location /app {
proxy_pass http://127.0.0.1:456;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
}若前端直连 `ws://IP:456`,需在安全组放行 **456** 端口。
### Linux伪静态
# ========== ThinkPHP 5 短期加固 + 原有静态规则 ==========
# 1. 禁止访问敏感目录(在原 runtime|application 基础上扩展)
location ~* ^/(runtime|application|config|thinkphp|vendor|extend)/ {
return 403;
}
# 2. 禁止访问示例/调试目录
location ~* ^/assets/libs/myeditor/examples/ {
return 403;
}
# 3. 禁止 uploads、assets 下直接执行 PHP
location ~* ^/upload/.*\.php$ {
return 403;
}
location ~* ^/assets/.*\.php$ {
return 403;
}
# 4. 拦截 ThinkPHP 5 常见 exploit 查询串
# 只拦截 s= 路由参数中的 exploit,勿扫描整段 query_string(会误伤 ?code= token)
if ($arg_s ~* "(invokefunction|call_user_func|call_user_func_array|pearcmd|config-create)") {
return 403;
}
if ($arg_s ~* "think(%2f|%5c|/)") {
return 403;
}
if ($arg_s ~* "(php://|phar://)") {
return 403;
}
if ($arg_s ~* "(\.\.|%2e%2e)") {
return 403;
}
# 5. 原有伪静态(保持不变)
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}## 五、服务启动说明
### 禁用函数
在宝塔:软件商店 → PHP 7.3 → 禁用函数,删掉与进程控制相关的项,至少包括:
pcntl_fork、pcntl_waitpid、pcntl_wait、pcntl_signal、pcntl_signal_dispatch、pcntl_alarm、pcntl_exec 以及列表里其它 pcntl_*
### 修改app_secrets.php
看图修改WSS、http、端口

### 实时推送 `aike_pusher`(必须)
cd /www/wwwroot/你的目录/aike_pusher php start.php restart -d

常用指令:
php start.php start # 前台调试
php start.php start -d # 后台守护
php start.php stop # 停止
php start.php reload # 平滑重启
php start.php status # 状态
### 进程守护
`run.sh` 每分钟检测 Workerman,未运行则启动:
cd /www/wwwroot/你的目录/ sudo bash run.sh
###添加计划任务
cd /www/wwwroot/你的目录/ sudo bash init.sh
### 前端验证

### 安装 Qdrant 向量数据库
启用知识库**语义检索 / 向量化**时需要。项目已提供**一键安装脚本**,请在**项目根目录**执行(与 `public/` 同级):
cd /www/wwwroot/你的目录 sudo bash install_qdrant.sh
> 若系统尚未安装 Docker,脚本会先自动安装 Docker,再部署 Qdrant;Docker 已就绪则直接进入 Qdrant 安装。
### 前置条件
**Linux** 服务器(脚本不支持 Windows 直接运行)
2. 未安装 Docker 时,脚本会**自动安装并启动 Docker**(需 **root**:`sudo bash install_qdrant.sh`)
3. 已安装且 Docker 服务正常时,**跳过 Docker 步骤**,直接安装 Qdrant
4. 本机可访问 `curl`(健康检查用;安装 Docker 时脚本会尝试自动安装 curl)
### 安装后验证
bash scripts/qdrant/status.sh
或手动检查:
curl http://127.0.0.1:6333/ curl http://127.0.0.1:6333/readyz docker ps | grep wolive-qdrant
输出 `Qdrant installed successfully` 且 REST API 为 `http://127.0.0.1:6333` 即表示就绪:

### 安装失败:Docker iptables 问题
部分云服务器 / CentOS 会出现端口映射失败,脚本会自动尝试 **host 网络模式**。若仍失败,以 root 执行修复后重试:
```bash
bash scripts/qdrant/fix_docker_iptables.sh
bash install_qdrant.sh
```
### 在系统中启用向量检索
确认 `bash scripts/qdrant/status.sh` 显示 **Health : OK**
1. 登录商户后台 → **知识库导入 / 向量设置**:
- 开启 **向量检索**
- `qdrant_url`:`http://127.0.0.1:6333`
- 填写 Embedding API(URL、Key、模型)
2. 导入 FAQ 或页面后执行向量化
3. 在 **AI 智能回复设置** 中确认已启用知识库召回
### Qdrant 常见问题
| 现象 | 处理 |
|---|---|
Docker not found | 使用 sudo bash install_qdrant.sh 以自动安装 Docker |
Docker auto-install requires root | 加 sudo 后重试 |
Docker daemon not running | 脚本会尝试 systemctl start docker;失败则手动检查 Docker 服务 |
| 健康检查超时 | docker logs wolive-qdrant,或执行 fix_docker_iptables.sh 后重装 |
| 向量化失败 | 检查后台 Embedding API Key,与 Qdrant 无关时先排除 API 问题 |
### 手动执行(调试)
```bash
cd /www/wwwroot/your-domain.com
# 指定商户 business_id=1;-f 忽略后台「蒸馏开关=关」
php think ai:distill-human -b 1
php think ai:distill-human -b 1 -f
# 增量同步(页面 QA + 向量)
php think ai:auto-sync -b 1
php think ai:auto-sync -b 1 -f
```
成功时终端会输出 `scanned` / `pairs` / `inserted` 等统计。
### 后台开关(必配)
Cron 只负责**按时触发**;各商户是否在任务内真正执行,由后台 **AI 智能回复设置 → 知识进化与定时任务** 控制:
| 开关 | 建议 | 作用 |
|---|---|---|
| 人工聊天蒸馏 | 开 | 写入「AI进化池 → 人工聊天学习候选」 |
| 仅人工回复 | 开 | 排除 AI 自动回复与常见问题预设 |
| 定时增量同步 | 按需 | 从已同步页面抽 QA、维护向量 |
| 同步向量库 | 开(若已装 Qdrant) | FAQ 增量写入 Qdrant |
| 同步含蒸馏 | 关 | auto-sync 内再跑蒸馏(与 hourly 重复,一般关) |
阈值(质量分、出现次数、更新 FAQ 次数等)也在同一区块配置,保存后写入 `wolive_ai_config.distill_config_json` / `auto_sync_json`。
> **注意:** 仅注册 cron、未在后台开启对应开关时,任务会跳过该商户。向量 FAQ 直答依赖 **7.2 Qdrant** 与后台 Embedding 配置。
## 六、自动化说明
“自动 vs 人工”环节:
| 环节 | 是否自动 |
|---|---|
| cron 扫描聊天、写候选 | ✅ |
| cron 页面 QA、向量同步 | ✅(需开开关) |
| 高质量新问题自动入 FAQ | ✅(进化池开关 + 阈值) |
| 同问不同答更新已有 FAQ | ❌ 需人工点「更新 FAQ」 |
| 意图关键词应用 | ❌ 需人工勾选并选意图 |
| 未命中 → 加 FAQ | ❌ 需人工确认 |
## 七、常见问题
### Q1:SQL 导入失败?
检查 MySQL 版本、账号权限、`install/data.sql` 是否完整,查看安装页报错详情。
### Q2:消息不实时?
`php start.php status` 确认 pusher 运行
2. `app_secrets.php` 中 `app_key` / `app_secret` / `aport` / `websocket_port` 正确(改完需重启 pusher)
3. `whost`、`wport`(对外)与 `websocket_port`(监听,默认 456)与 Nginx / 防火墙一致
4. 浏览器控制台查看 WebSocket 连接
###Q3:`Missing application/extra/app_secrets.php`?
重新安装,或从 `app_secrets.example.php` 复制并填写(含 `websocket_port`、`aport`)。
### Q4:HTTPS 下 WebSocket 失败?
`whost` 用 `wss://域名`,Nginx `/app` 反代到 `127.0.0.1:456`,或配置 **6.4** SSL 直连
### Q5:向量检索无结果?
确认已执行 `bash install_qdrant.sh` 且 `status.sh` 正常,后台 `qdrant_url` 为 `http://127.0.0.1:6333`,Embedding API 可用并已执行向量化。
### Q6:AI 进化 cron 不跑?
`crontab -l` 是否含 `ai:distill-human`、`ai:auto-sync`(无则 `sudo bash init.sh`)
2. 后台 **知识进化与定时任务** 对应开关是否开启
3. 查看 `runtime/log/ai_distill_cron.log`、`ai_auto_sync.log` 是否有 PHP 报错
4. 手动 `php think ai:distill-human -b 商户ID -f` 验证 CLI 是否正常
### Q7:蒸馏有候选但不会自动进 FAQ?
自动入库仅针对 **FAQ 中尚不存在的新问题**,且需同时满足:进化池开启 **高质量自动入 FAQ**、质量分 ≥ 阈值、出现次数 ≥ 阈值。同问不同答只会标「可更新 FAQ」,须人工确认。
END!!!
- ### 2.1 服务器
- ### 2.2 PHP 扩展(安装向导会检测)
- ### 2.3 目录写权限
- ### 2.4 端口规划
- ### 3.1 上传代码
- ### 3.2 创建数据库
- ### 3.3 开始安装
- ### 3.4 安装成功:
- ### 3.5总后台
- ### 3.6 客服后台
- ### Nginx配置
- ### Linux伪静态
- ### 禁用函数
- ### 修改app_secrets.php
- ### 实时推送 `aike_pusher`(必须)
- ### 进程守护
- ###添加计划任务
- ### 前端验证
- ### 安装 Qdrant 向量数据库
- ### 前置条件
- ### 安装后验证
- ### 安装失败:Docker iptables 问题
- ### 在系统中启用向量检索
- ### Qdrant 常见问题
- ### 手动执行(调试)
- ### 后台开关(必配)
- ### Q1:SQL 导入失败?
- ### Q2:消息不实时?
- ###Q3:`Missing application/extra/app_secrets.php`?
- ### Q4:HTTPS 下 WebSocket 失败?
- ### Q5:向量检索无结果?
- ### Q6:AI 进化 cron 不跑?
- ### Q7:蒸馏有候选但不会自动进 FAQ?






































发表评论