智能机器人的部署
🧩 第一步:在 Windows Server 安装 Python
1️⃣ 下载 Python 3.9 地址:Python Releases for Windows | Python.org

下载到服务器以后以管理员身份进行安装,安装时勾选:
✔ Add Python to PATH

安装完成后 CMD 测试:
python --version

🧩 第二步:安装必要库
🟢 第一步:升级 pip(非常重要)
在 CMD 输入:
python -m pip install --upgrade pip

等它自动完成。成功会看到:
Successfully installed pip
🟢 第二步:安装 FastAPI
在 CMD 输入:
pip install fastapi

等安装完成。如果成功,会看到:
Successfully installed fastapi
🟢 第三步:安装 uvicorn
pip install uvicorn

成功会显示:
Successfully installed uvicorn
🟢 第四步:安装 pymysql
pip install pymysql
🟢 第五步:安装 requests
pip install requests

🟢 第七步:安装 jieba(中文分词)
pip install jieba

🟢 第七步:验证是否全部安装成功
输入:
pip list
你应该能看到:如果都在,说明安装成功 ✅
fastapi
uvicorn
pymysql
requests
jieba

在cmd中如果你能执行:
python
然后在里面输入:
import fastapi
import pymysql
import jieba
import requests
没有报错,就说明全部成功。退出:
exit()
🧩 第三步:确认 WordPress 数据库信息
🟢 ① 打开 WordPress 配置文件
进入你的网站目录,例如:
C:\phpstudy_pro\WWW\
找到文件:
wp-config.php
用记事本打开。找到这一段:
define('DB_NAME', '数据库名');
define('DB_USER', '用户名');
define('DB_PASSWORD', '密码');
define('DB_HOST', 'localhost');
把这四个信息记下来。
例如:
DB_NAME = wordpress
DB_USER = root
DB_PASSWORD = 123456
DB_HOST = localhost
🧩 第四步:写数据库测试脚本
在服务器桌面新建一个文件:
test_db.py
右键 → 编辑 → 粘贴下面代码:
import pymysql
try:
conn = pymysql.connect(
host="127.0.0.1",
user="你的DB_USER",
password="你的DB_PASSWORD",
database="你的DB_NAME",
charset="utf8mb4"
)
cursor = conn.cursor()
cursor.execute("SELECT post_title FROM wp_posts WHERE post_status='publish' LIMIT 5")
results = cursor.fetchall()
print("数据库连接成功!")
print("前5篇文章标题:")
for row in results:
print("-", row[0])
conn.close()
except Exception as e:
print("连接失败:", e)
⚠ 把:
你的DB_USER、你的DB_PASSWORD、你的DB_NAME替换成你真实的。保存文件。
🧩 第五步:运行测试脚本
打开 CMD
切换到桌面:
cd %USERPROFILE%\Desktop
然后运行:
python test_db.py

C:\Users\Administrator\Desktop>python test_db.py SyntaxError: Non-UTF-8 code starting with '\xca' in file C:\Users\Administrator\ Desktop\test_db.py on line 16, but no encoding declared; see https://python.org/ dev/peps/pep-0263/ for details C:\Users\Administrator\Desktop>
以上报错是编码错误,可以将test_db.py这个文件保存为UFT-8格式;

✅ 如果成功
你会看到:
数据库连接成功!
前5篇文章标题:
- xxxx
- xxxx
- xxxx

这说明我们已经能读取 WordPress 文章了。
🚀 第四步:做“站内优先搜索”功能
我们现在做一个:
输入问题 → 在文章内容里搜索 → 返回最相关文章
先做一个简单但稳定的版本(适合你2GB服务器)。
🧩 第一步:创建真正的机器人程序
在桌面新建:
ai_server.py
用 UTF-8 编码保存(一定要UTF-8)。
把下面完整代码粘进去:
# -*- coding: utf-8 -*-
from fastapi import FastAPI
import pymysql
import jieba
import uvicorn
app = FastAPI()
# ===== 数据库连接 =====
def get_articles():
conn = pymysql.connect(
host="127.0.0.1",
user="你的DB_USER",
password="你的DB_PASSWORD",
database="你的DB_NAME",
charset="utf8mb4"
)
cursor = conn.cursor()
cursor.execute("SELECT post_title, post_content FROM wp_posts WHERE post_status='publish'")
data = cursor.fetchall()
conn.close()
return data
# ===== 站内搜索函数 =====
def search_local(question):
articles = get_articles()
keywords = list(jieba.cut(question))
best_match = None
best_score = 0
for title, content in articles:
score = 0
for word in keywords:
if len(word) > 1 and word in content:
score += 1
if score > best_score:
best_score = score
best_match = (title, content)
if best_score > 0:
return f"根据本站文章《{best_match[0]}》:\n\n{best_match[1][:400]}..."
else:
return None
# ===== API接口 =====
@app.get("/ask")
def ask(question: str):
answer = search_local(question)
if answer:
return {"answer": answer}
else:
return {"answer": "本站未找到相关内容,请换个问法。"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=9000)
⚠ 记得把:
你的DB_USER、你的DB_PASSWORD、你的DB_NAME替换成真实数据库信息。保存。
🧩 第二步:启动机器人服务
在 CMD 输入:
cd %USERPROFILE%\Desktop
python ai_server.py
如果成功会看到:
Uvicorn running on http://0.0.0.0:9000
说明机器人启动成功。
🧩 第三步:浏览器测试
在浏览器打开:
http://服务器IP:9000/ask?question=ACS510怎么停机
如果一切正常,你会看到 JSON 格式:
{
"answer": "根据本站文章《ACS510操作助手拔掉是否停机》:..."
}
🎉 恭喜,这就是你的“站内优先智能机器人”。
🧩 第四步:打开服务器的9000端口

🧩 第五步:在云服务器的防火墙也要打开9000端口

🚀 简易实现方法(Windows + phpStudy)
你现在用的是 Apache。
🧩 第一步:确认 Apache 开启代理模块
打开:
phpStudy → Apache → 配置文件 → httpd.conf
找到下面内容(如果有#,去掉#):
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
确保它们是启用状态。保存。
🧩 第二步:修改你的站点 SSL 配置
打开:
C:\phpstudy_pro\Extensions\Apache2.4.39\conf\extra
找到你的 HTTPS 虚拟主机:
类似:
<VirtualHost *:443>
ServerName cntworld.cn
在里面加:
ProxyPreserveHost On
ProxyPass /ask http://127.0.0.1:9000/ask
ProxyPassReverse /ask http://127.0.0.1:9000/ask
完整示例:
<VirtualHost *:443>
ServerName cntworld.cn
SSLEngine on
SSLCertificateFile "你的证书路径"
SSLCertificateKeyFile "你的私钥路径"
ProxyPreserveHost On
ProxyPass /ask http://127.0.0.1:9000/ask
ProxyPassReverse /ask http://127.0.0.1:9000/ask
</VirtualHost>
保存。
🧩 第三步:重启 Apache
在 phpStudy 里点击:重启 Apache
🧩 第四步:测试
现在访问:
https://cntworld.cn/ask?question=ACS510怎样停机
⚠ 注意:现在不要写 :9000,应该直接访问:
https://cntworld.cn/ask
🎯 成功后效果
| 访问方式 | 是否成功 |
|---|---|
| http://cntworld.cn/ask | ✅ |
| https://cntworld.cn/ask | ✅ |
| http://cntworld.cn:9000 | ❌(可以关) |
🎯 正确解决思路(推荐注意)
不要让 Python 自己搞 SSL,而是:
让 Apache 代理 9000,统一走 443 端口
这叫:
✅ 反向代理(Reverse Proxy)
结构变成:
浏览器 https://cntworld.cn/ask
↓
Apache (443 + SSL)
↓
转发到 http://127.0.0.1:9000
这样:
- ✔ 外部永远访问 443
- ✔ Python 不需要 SSL
- ✔ http / https 都统一
- ✔ 最安全
- ✔ 最标准
其中有几点需要注意:
C:\phpstudy_pro\Extensions\Apache2.4.39\conf\vhosts目录下的
cntworld.cn_443.conf是SSL证书内容;
C:\phpstudy_pro\Extensions\Apache2.4.39\conf\ssl目录下的对应的key,crt等证书
与C:\phpstudy_pro\Extensions\Apache2.4.39\conf\extra\httpd-ssl.conf文件里的内容是关联的;
