Skip to content

搭建文档 - 快速开始

🎬 视频教程

phpSearch 完整部署教程

📺 点击观看完整部署视频教程


📋 环境要求

服务器配置

服务要求推荐
操作系统LinuxUbuntu 24.X
CPU4核4核+
内存8GB8GB+
磁盘50GB+100GB SSD
带宽5Mbps+10Mbps+

软件环境

软件要求推荐
Nginx1.20+1.26+
PHP7.47.4(必须)
MySQL5.7+5.7.44
Redis6.0+7.2+
Elasticsearch8.x8.x
Swoole4.x4.8+

第三方服务

服务用途申请地址
Telegram Bot Token机器人功能@BotFather
TronGrid API KeyUSDT 支付查询TronGrid
OpenAI API KeyAI 审核和关键词提取OpenAI

🚀 三步快速部署

第一步:准备服务器

1.1 购买服务器

  • 推荐使用国外云服务商(AWS、DigitalOcean、Linode 等)
  • 选择 Ubuntu 24.X 系统
  • 配置:4核8G,100GB SSD

1.2 安装宝塔面板

bash
# 连接到服务器
ssh root@your_server_ip

# 安装宝塔面板(官方推荐)
wget -O install.sh http://download.bt.cn/install/install_lts.sh && bash install.sh ed8484bec

1.3 在宝塔面板中安装软件

  1. 登录宝塔面板(http://your_server_ip:8888)
  2. 进入"软件商店"
  3. 安装以下软件:
    • Nginx 1.26+
    • PHP 7.4
    • MySQL 5.7.44
    • Redis 7.2+
    • Elasticsearch 8.x

1.4 安装 Swoole 扩展

php.ini 中添加以下配置:

ini
extension = 网站运行目录下的/extend/swoole_loader74_nts.so

然后重启 PHP-FPM:

bash
sudo systemctl restart php-fpm

第二步:部署项目

2.1 上传项目文件

  1. 在宝塔面板中创建网站
  2. 上传 phpSearch 项目文件到网站根目录
  3. 设置目录权限(755)

2.2 配置数据库

bash
# 1. 在宝塔面板中创建数据库
# 数据库名:phpsearch
# 用户名:phpsearch
# 密码:自定义强密码

# 2. 导入数据库文件
# 在宝塔面板中导入 phpSearch.sql 文件

2.3 配置项目参数

编辑根目录下的 .env 文件,修改以下配置项:

ini
[app]
debug = false
trace = false

[database]
hostname = 127.0.0.1
database = your_database_name
username = your_username
password = your_password
hostport = 3306
prefix = fa_

[demo]
isdemo = false
groups = -1002668998579

[jwt]
key = your_jwt_key

配置说明:

  • debug = false:关闭调试模式(生产环境必须关闭)
  • trace = false:关闭跟踪模式(生产环境必须关闭)
  • database:修改为你的数据库信息
  • isdemo = false:关闭演示模式
  • jwt.key:修改为你的 JWT 密钥

2.4 配置 Nginx 伪静态

在宝塔面板中设置伪静态规则:

nginx
location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=$1 last;
    }
}

2.5 配置 SSL 证书

  1. 在宝塔面板中申请 SSL 证书(Let's Encrypt 免费)
  2. 启用 HTTPS
  3. 配置强制 HTTPS

第三步:配置机器人

3.1 申请 Telegram Bot Token

  1. 在 Telegram 中找到 @BotFather
  2. 发送 /newbot 创建新机器人
  3. 按照提示设置机器人名称和用户名
  4. 获取 Bot Token

3.2 申请支付机器人 Token

  1. 在 Telegram 中找到 @BotFather
  2. 发送 /newbot 创建支付机器人
  3. 获取支付机器人 Token

3.3 配置 Webhook

无需手动配置 Webhook,系统会在后台保存 Bot Token 后自动配置。只需在后台管理系统中填入 Bot Token 即可。

3.4 设置机器人命令

在 Telegram 中找到 @BotFather,选择你的机器人,发送 /setcommands 添加以下命令:

my - 我的
getinfo - 获取群组数据统计
getadv - 获取广告数据统计
help - 帮助命令
start - 开始命令
quit - 退出输入模式
update - 收录或更新群组
hotkey - 旧版本查询关键词
buy - 新版本查询关键词

命令说明:

  • /start - 启动机器人
  • /my - 查看我的信息
  • /getinfo - 获取群组数据统计
  • /getadv - 获取广告数据统计
  • /help - 获取帮助信息
  • /quit - 退出当前输入模式
  • /update - 在群组中设置管理员后发送,第一次代表收录群组,第二次代表更新群组
  • /hotkey <关键词> - 旧版本查询关键词(例:/hotkey 测试
  • /buy <关键词> - 新版本查询关键词(例:/buy 测试

⚙️ 配置指南

数据库配置

在宝塔面板中创建数据库

  1. 登录宝塔面板
  2. 进入"数据库"菜单
  3. 点击"添加数据库"按钮
  4. 填写以下信息:
    • 数据库名:phpsearch
    • 用户名:phpsearch
    • 密码:自定义强密码(建议使用复杂密码)
    • 字符集:utf8mb4
  5. 点击"提交"创建数据库

在宝塔面板中导入数据

  1. 进入"数据库"菜单
  2. 找到刚创建的 phpsearch 数据库
  3. 点击"管理"按钮
  4. 进入 phpMyAdmin 界面
  5. 点击"导入"选项卡
  6. 选择 phpSearch.sql 文件
  7. 点击"执行"导入数据

提示:phpSearch.sql 文件应该在项目根目录下的 database 文件夹中

Redis 配置

Redis 已在宝塔面板中安装,默认配置即可使用,无需设置密码。

Elasticsearch 配置

Elasticsearch 已在宝塔面板中安装。需要修改配置文件以禁用安全认证:

修改 Elasticsearch 配置

  1. 在宝塔面板进入"软件商店"
  2. 找到已安装的 Elasticsearch
  3. 点击"配置修改"或进入配置文件编辑
  4. 找到 elasticsearch.yml 文件
  5. 修改以下配置项为 false
yaml
xpack.security.enabled: false
xpack.security.enrollment.enabled: false

# Enable encryption for HTTP API client connections
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: false
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12

安装 IK 分词器

IK 分词器是中文分词必需的插件,需要在 Elasticsearch 目录下安装:

  1. 在宝塔面板中找到 Elasticsearch 的安装目录(通常为 /www/server/elasticsearch
  2. 进入 Elasticsearch 目录
  3. 执行以下命令安装 IK 分词器:
bash
cd /www/server/elasticsearch
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.x.x/elasticsearch-analysis-ik-8.x.x.zip

注意:将 8.x.x 替换为你安装的 Elasticsearch 版本号(例如 8.10.0

  1. 安装完成后重启 Elasticsearch

TronGrid API 配置

申请 API Key

  1. 访问 TronGrid
  2. 注册账户
  3. 创建 API Key
  4. 复制 API Key

OpenAI API 配置

申请 API Key

  1. 访问 OpenAI
  2. 注册账户
  3. 创建 API Key
  4. 复制 API Key

🔄 定时任务配置

在宝塔面板中添加定时任务

系统提供了多个定时任务命令。在宝塔面板中添加定时任务时,使用以下命令:

bash
# 基础语法
php /www/wwwroot/your_path/think 命令名称

可用的定时任务命令:

  • sync:elasticsearch - Elasticsearch 数据同步
  • clean:emoji-groups - 清理表情符号群组
  • clean:keyword - 清理关键词
  • clean:redis-cache - 清理 Redis 缓存
  • deduplicate:groups - 去重群组
  • deduplicate:groups-simple - 简单去重群组
  • elasticsearch:backup - Elasticsearch 备份
  • keyword:available - 关键词可用性检查
  • migrate:search-logs - 迁移搜索日志
  • migration - 数据迁移
  • promote:bot-in-groups - 在群组中推广机器人
  • score:system - 评分系统
  • score:system-optimized - 优化评分系统
  • super:amount - 超级金额处理
  • tasks:group-msg - 群组消息任务
  • tasks:group-top - 群组置顶任务

示例

bash
# 每5分钟执行一次 Elasticsearch 数据同步
*/5 * * * * php /www/wwwroot/your_path/think sync:elasticsearch

# 每天凌晨2点清理 Redis 缓存
0 2 * * * php /www/wwwroot/your_path/think clean:redis-cache

# 每小时执行一次去重群组
0 * * * * php /www/wwwroot/your_path/think deduplicate:groups

配置步骤

  1. 登录宝塔面板
  2. 进入"计划任务"菜单
  3. 点击"添加任务"
  4. 选择"Shell 脚本"
  5. 输入命令和执行周期
  6. 点击"提交"保存

🎯 启动队列

使用进程守护管理器

1. 安装进程守护管理器

bash
# 在宝塔面板中安装 Supervisor
- 添加守护进程,名称随意,启动用户默认,运行目录为项目根目录
- 启动命令 php think queue:listen

✅ 部署验证

检查清单

  • [ ] 服务器环境已安装
  • [ ] 项目文件已上传
  • [ ] 数据库已导入
  • [ ] 配置文件已修改
  • [ ] Nginx 伪静态已配置
  • [ ] SSL 证书已安装
  • [ ] Telegram Bot Token 已获取
  • [ ] 定时任务已添加
  • [ ] 队列已启动

测试步骤

1. 测试网站访问

bash
curl https://yourdomain.com

2. 测试机器人

  1. 在 Telegram 中找到你的机器人
  2. 发送 /start
  3. 检查是否收到欢迎信息

3. 访问管理后台

  1. 访问 https://yourdomain.com/hDKsVnTZui.php
  2. 使用默认账号登录(admin / Qwe12345.)
  3. 修改管理员密码

🆘 常见问题

Q: 部署后无法访问网站

A: 检查以下几点:

  1. 域名 DNS 解析是否正确
  2. 防火墙是否开放 80 和 443 端口
  3. Nginx 是否正常运行
  4. 网站根目录权限是否正确

Q: 数据库导入失败

A: 检查以下几点:

  1. 数据库用户是否有足够权限
  2. 数据库字符集是否为 utf8mb4
  3. SQL 文件是否完整
  4. MySQL 版本是否满足要求

Q: Elasticsearch 无法连接

A: 检查以下几点:

  1. Elasticsearch 服务是否启动
  2. 防火墙是否开放 9200 端口
  3. Elasticsearch 配置是否正确
  4. 网络连接是否正常

Q: 机器人无法接收消息

A: 检查以下几点:

  1. Bot Token 是否正确
  2. Webhook URL 是否正确
  3. Webhook 是否已成功设置
  4. 服务器是否可以被 Telegram 服务器访问

� 需要帮助?程

如果部署过程中遇到问题,请联系技术支持: