使用iframe嵌入(推荐简单方法)
- 首先确保你的Gradio应用正在运行:
- 在你的服务器上运行这个Python程序(确保端口7860是开放的)
- 你可以使用
nohup
或tmux
让它在后台持续运行
- 在WordPress中添加iframe代码:
- 编辑你的”Chatbot”页面
- 切换到HTML/代码编辑器
- 添加以下代码:
<iframe
src="http://你的服务器IP:7860"
width="100%"
height="600px"
style="border: none;"
></iframe>
要将你的Gradio聊天机器人集成到WordPress网站的”Chatbot”标签页中,你需要按照以下步骤操作:
方案一:使用iframe嵌入(推荐简单方法)
- 首先确保你的Gradio应用正在运行:
- 在你的服务器上运行这个Python程序(确保端口7860是开放的)
- 你可以使用
nohup
或tmux
让它在后台持续运行
- 在WordPress中添加iframe代码:
- 编辑你的”Chatbot”页面
- 切换到HTML/代码编辑器
- 添加以下代码:
<iframe
src="http://你的服务器IP:7860"
width="100%"
height="600px"
style="border: none;"
></iframe>
方案二:更高级的集成(需要更多配置)
如果你需要更紧密的集成,可以考虑:
- 使用WordPress插件:
- 安装”Embed Code”或”Custom HTML”插件
- 将你的Gradio应用URL嵌入其中
- 配置Nginx反向代理(更专业的方法):
- 修改你的Nginx配置,将某个路径(如
/chatbot
)代理到localhost:7860
- 这样你可以使用
https://你的网站.com/chatbot
访问
- 修改你的Nginx配置,将某个路径(如
配置Nginx反向代理 怎么实现?
1. 确保Gradio应用正在运行
你的Gradio应用应该已经在后台运行(监听0.0.0.0:7860
):
python your_app.py # 或使用 nohup/python -m gunicorn 等保持长期运行
验证是否可访问:
curl http://localhost:7860
2. 修改Nginx配置
搬瓦工服务器通常预装Nginx。假设你的WordPress已通过Nginx运行(如使用LNMP环境):
步骤:
- 找到WordPress的Nginx配置文件,通常在:
/etc/nginx/sites-enabled/your_wordpress_site.conf
或主配置文件:/etc/nginx/nginx.conf
- 编辑配置文件,在
server { ... }
块内添加反向代理规则:
server {
listen 80;
server_name yourdomain.com; # 你的域名
# WordPress原有配置(通常已存在)
root /var/www/html/wordpress;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
# 新增Gradio反向代理配置
location /chatbot {
proxy_pass http://127.0.0.1:7860;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 以下为WebSocket支持(如果Gradio需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 其他原有配置(如PHP处理)
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}
}
3. 测试并重载Nginx
- 测试配置是否正确:
sudo nginx -t
如果显示successful
,继续下一步。 - 重载Nginx使配置生效:
sudo systemctl reload nginx
4. 验证反向代理
访问 http://yourdomain.com/chatbot
,应该能看到Gradio界面。
或者可以换一种方式
路径重写(去除/chatbot前缀)
如果希望Gradio直接响应根路径(而非/chatbot
),修改location
和Gradio的root_path
:
location / {
proxy_pass http://127.0.0.1:7860;
# 其他proxy_set_header...
}
同时在Gradio启动时指定路径:
demo.launch(server_name="0.0.0.0", server_port=7860, root_path="/chatbot")
长期运行各方案对比
方法 | 需要安装 | 断线恢复 | 日志管理 | 开机自启 | 适合场景 |
---|---|---|---|---|---|
nohup | 否 | ❌ | 需手动 | ❌ | 临时测试 |
tmux | 是 | ✅ | 实时 | ❌ | 需要交互的长期运行 |
systemd | 否 | ✅ | 完善 | ✅ | 生产环境服务 |
screen | 是 | ✅ | 实时 | ❌ | 简单会话管理 |
pm2 | 是 | ✅ | 完善 | ✅ | Node/Python混合环境 |
方法 1:使用 nohup
(最简单)
nohup python3 /opt/gradio_app/app.py > /var/log/app.log 2>&1 &
- 效果:程序会在后台运行,输出重定向到日志文件
- 管理命令:
# 查看进程 ps aux | grep app.py # 终止进程 kill -9 $(pgrep -f app.py)
方法 2:使用 tmux
(推荐)
# 安装tmux(如未安装)
sudo apt install tmux -y
# 创建新会话
tmux new -s gradio_app
# 在tmux会话中运行程序
python3 /opt/gradio_app/app.py
# 按 Ctrl+B 然后按 D 退出会话(程序继续运行)
# 重新连接会话
tmux attach -t gradio_app
- 优势:可随时查看/交互程序输出
方法 3:系统服务(最稳定)
方法 4:使用 screen
# 安装screen
sudo apt install screen -y
# 创建新会话
screen -S gradio_app
# 运行程序
python3 /opt/gradio_app/app.py
# 按 Ctrl+A 然后按 D 退出会话
# 重新连接
screen -r gradio_app
方法 5:进程管理工具(如 pm2
)
# 安装Node.js和pm2
sudo apt install nodejs npm -y
sudo npm install -g pm2
# 启动程序
pm2 start /opt/gradio_app/app.py --interpreter python3
# 常用命令
pm2 list # 查看进程
pm2 logs # 查看日志
pm2 save # 保存进程列表
pm2 startup
一些问题排查问题手段:
检查端口冲突:
sudo netstat -tulnp | grep 7860
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx
# 查找占用7860端口的进程 sudo lsof -i :7860
# 杀死占用进程(根据上一步输出的PID) sudo kill -9 <PID>
nohup python your_script.py > gradio.log 2>&1 &