ワンクリックで
btpanel-phpsite
宝塔面板 PHP 网站管理技能,提供站点创建、删除、启停、PHP 版本切换、域名管理、SSL 证书管理、伪静态管理、数据库管理等功能
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
宝塔面板 PHP 网站管理技能,提供站点创建、删除、启停、PHP 版本切换、域名管理、SSL 证书管理、伪静态管理、数据库管理等功能
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
宝塔面板文件管理技能,提供远程服务器文件/目录浏览、读取、编辑、创建、删除、权限管理等基本文件操作能力
宝塔面板(BT-Panel)运维监控技能,提供服务器资源监控、网站状态检查、服务状态检查、SSH安全审计、计划任务管理、日志读取等功能
宝塔面板文件管理技能,提供远程服务器文件/目录浏览、读取、编辑、创建、删除、权限管理等基本文件操作能力
宝塔面板 PHP 网站管理技能,提供站点创建、删除、启停、PHP 版本切换、域名管理、SSL 证书管理、伪静态管理、数据库管理等功能
宝塔面板(BT-Panel)运维监控技能,提供服务器资源监控、网站状态检查、服务状态检查、SSH安全审计、计划任务管理、日志读取等功能
| name | btpanel_phpsite |
| description | 宝塔面板 PHP 网站管理技能,提供站点创建、删除、启停、PHP 版本切换、域名管理、SSL 证书管理、伪静态管理、数据库管理等功能 |
| user-invocable | true |
| disable-model-invocation | false |
| icon | icon/bt.png |
| metadata | {"openclaw":{"requires":{"bins":["python3"]},"keywords":["宝塔面板","BT-Panel","PHP 网站","站点管理","域名管理","SSL 证书","数据库管理","伪静态"]}} |
宝塔面板 PHP 网站管理技能,提供完整的 PHP 网站生命周期管理功能,包括站点创建、删除、启停、PHP 版本切换、域名管理、SSL 证书管理、伪静态规则配置、数据库管理等。
技能包提供以下图标文件,可在生成报告时引用:
| 文件 | 格式 | 用途 |
|---|---|---|
icon/bt-logo.svg | SVG | 矢量图标,适合缩放 |
本技能用于管理和修改服务器上的 PHP 网站,AI 应遵循以下原则:
执行流程示例:
AI: 我将为您执行以下操作:
1. 创建新站点 example.com
2. 设置 PHP 版本为 8.2
3. 创建关联数据库
正在获取数据,请稍候...
[执行命令]
[展示结果和站点信息]
当前宝塔面板技能包,共包含 3 个相互关联的技能:
| 技能名称 | 描述 | 依赖关系 |
|---|---|---|
| btpanel | 运维监控技能 | ✅ 基础技能,主要用于资源监控、网站状态检查、服务状态检查等 |
| btpanel-files | 文件管理技能 | ✅ 提供远程服务器文件辅助服务,可以读取文件列表和内容 |
| btpanel-phpsite | PHP 网站管理技能 | ✅ 提供远程服务器 PHP 网站管理功能,能够部署和管理php网站 |
**问题 1: 配置文件不存在**
错误:未找到配置文件 解决:运行 python3 bt-config.py add 添加服务器配置
**问题 2: WordPress 部署失败**
错误:无法下载或解压文件 解决:确保 btpanel-files 技能已安装,提供文件操作能力
**问题 3: PYTHONPATH 未设置**
```bash
# 运行脚本前需要设置
export PYTHONPATH=/path/to/btpanel-skills/src:$PYTHONPATH
# 检查 bt_common 模块
python3 -c "from bt_common.bt_client import BtClient; print('✅ 模块正常')"
# 检查配置文件
ls -la ~/.openclaw/bt-skills.yaml
# 测试站点管理
python3 {baseDir}/scripts/site.py list --server "你的服务器名"
# 测试文件管理(WordPress 部署需要)
python3 {baseDir}/../btpanel_files/scripts/download.py --help
# 1. 检查所有技能目录
ls -la /path/to/btpanel-skills/src/
# 应包含:btpanel/ btpanel_files/ btpanel_phpsite/ bt_common/
# 2. 检查配置文件
cat ~/.openclaw/bt-skills.yaml
# 3. 测试完整流程(WordPress 部署)
python3 {baseDir}/scripts/site.py add -n "test.com:8080" --create-db --server "你的服务器名"
python3 {baseDir}/../btpanel_files/scripts/download.py --url "https://example.com/file.zip" --path "/tmp" --server "你的服务器名"
重要: 没有服务器信息时需要先添加
本技能复用 btpanel 技能的配置系统,使用 bt-config.py 工具管理服务器:
# 查看帮助
python3 {baseDir}/scripts/bt-config.py -h
# 添加服务器
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN
# 列出服务器
python3 {baseDir}/scripts/bt-config.py list
# 删除服务器
python3 {baseDir}/scripts/bt-config.py remove prod-01
获取 API Token 的方法:
重要提示 - SSL 证书验证配置: 添加服务器时,AI 应询问用户:
"您的宝塔面板是否使用了受信任的 SSL 证书(如 Let's Encrypt、商业 CA 证书)?"
--verify-ssl false 参数示例:
# 自签名证书场景
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN --verify-ssl false
# 受信任证书场景(默认)
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN
当用户需要创建新的 PHP 网站时:
# 创建基础 PHP 站点
python3 {baseDir}/scripts/site.py add -n example.com -p /www/wwwroot/example.com -v 82
# 创建站点并关联数据库
python3 {baseDir}/scripts/site.py add -n example.com -v 82 --create-db --db-user example_user --db-password "SecurePass123"
# 创建站点并同时创建 FTP
python3 {baseDir}/scripts/site.py add -n example.com -v 82 --create-ftp --ftp-user ftpuser --ftp-password "FtpPass123"
用户意图识别:
site.py addsite.py addsite.py add --create-db当用户需要查看网站列表或状态时:
# 查看所有站点
python3 {baseDir}/scripts/site.py list
# 查看站点详情
python3 {baseDir}/scripts/site.py info -n example.com
# 查看已安装的 PHP 版本
python3 {baseDir}/scripts/php.py versions
# 查看站点的 PHP 版本
python3 {baseDir}/scripts/php.py get -n example.com
用户意图识别:
site.py listsite.py list 或 site.py infophp.py versions当用户需要修改站点的 PHP 版本时:
# 切换站点 PHP 版本
python3 {baseDir}/scripts/php.py set -n example.com -v 82
# 切换为纯静态站点
python3 {baseDir}/scripts/php.py set -n example.com --static
用户意图识别:
php.py set -v 82php.py set -v 74php.py set --static当用户需要临时停用或启用网站时:
# 停用网站
python3 {baseDir}/scripts/site.py stop -n example.com
# 启用网站
python3 {baseDir}/scripts/site.py start -n example.com
用户意图识别:
site.py stopsite.py startsite.py stop当用户需要删除网站时:
# 删除网站(保留文件和数据库)
python3 {baseDir}/scripts/site.py delete -n example.com
# 删除网站并删除文件目录
python3 {baseDir}/scripts/site.py delete -n example.com --delete-path
# 删除网站并删除关联数据库
python3 {baseDir}/scripts/site.py delete -n example.com --delete-db
# 完全删除(网站 + 文件 + 数据库+FTP)
python3 {baseDir}/scripts/site.py delete -n example.com --delete-path --delete-db --delete-ftp
用户意图识别:
site.py deletesite.py delete --delete-path --delete-db重要:删除操作不可逆,必须先向用户确认并提醒备份。
当用户需要添加或删除绑定域名时:
# 查看站点域名列表
python3 {baseDir}/scripts/domain.py list -n example.com
# 添加域名
python3 {baseDir}/scripts/domain.py add -n example.com -d www.example.com
# 添加多个域名
python3 {baseDir}/scripts/domain.py add -n example.com -d test.example.com,www2.example.com
# 删除域名
python3 {baseDir}/scripts/domain.py delete -n example.com -d www.example.com
用户意图识别:
domain.py adddomain.py adddomain.py delete当用户需要配置 SSL 证书时:
# 查看 SSL 证书信息
python3 {baseDir}/scripts/ssl_cert.py info -n example.com
# 上传 SSL 证书
python3 {baseDir}/scripts/ssl_cert.py upload -n example.com --key /path/to/key.pem --cert /path/to/cert.pem
# 申请免费证书
python3 {baseDir}/scripts/ssl_cert.py apply -n example.com -d example.com,www.example.com
# 开启强制 HTTPS
python3 {baseDir}/scripts/ssl_cert.py https -n example.com --enable
# 关闭强制 HTTPS
python3 {baseDir}/scripts/ssl_cert.py https -n example.com --disable
# 关闭 SSL
python3 {baseDir}/scripts/ssl_cert.py close -n example.com
用户意图识别:
ssl_cert.py infossl_cert.py uploadssl_cert.py applyssl_cert.py https --enableLet's Encrypt 免费证书申请条件:
方式 A: HTTP 文件验证(推荐)
方式 B: DNS 验证
错误 1: 使用 IP 地址申请
❌ 错误:申请 IP 地址 192.168.69.172 的证书
✅ 正确:必须使用域名,如 example.com
错误 2: 域名未解析到服务器
❌ 错误:域名解析到其他服务器
✅ 正确:域名必须解析到当前服务器 IP
错误 3: 80 端口被阻止
❌ 错误:防火墙阻止 80 端口
✅ 正确:开放 80 端口用于 HTTP 验证
错误 4: 内网域名申请
❌ 错误:申请 inner.local 等内网域名
✅ 正确:使用公网可访问的域名
错误 5: DNS 验证未配置
❌ 错误:使用 DNS 验证但未配置 DNS 服务商 API
✅ 正确:先在面板中配置 DNS 服务商 API 凭证
# 1. 检查域名解析
ping example.com
# 应该解析到服务器 IP
# 2. 检查 80 端口
curl -I http://example.com
# 应该能正常访问
# 3. 绑定域名到站点
python3 {baseDir}/scripts/domain.py add -n example.com -d example.com
# 4. 验证网站访问
curl http://example.com
# 应该返回正常内容
# 步骤 1: 绑定域名
python3 {baseDir}/scripts/domain.py add -n example.com -d example.com,www.example.com
# 步骤 2: 申请证书(HTTP 验证)
python3 {baseDir}/scripts/ssl_cert.py apply -n example.com -d example.com,www.example.com
# 步骤 3: 开启强制 HTTPS
python3 {baseDir}/scripts/ssl_cert.py https -n example.com --enable
# 步骤 4: 验证证书
python3 {baseDir}/scripts/ssl_cert.py info -n example.com
提示用户话术:
"申请免费 SSL 证书需要满足以下条件:
- 使用域名(不能用 IP 地址)
- 域名已解析到当前服务器
- 80 端口开放(HTTP 验证方式)
- 如果是通配符证书或在宝塔购买了域名,可以使用 DNS 验证方式
- DNS 验证需要先在面板配置 DNS 服务商 API 凭证
请问您的域名是否已解析到当前服务器?"
日志路径: /www/server/panel/logs/letsencrypt.log
查看日志方法:
# 手动查看
tail -50 /www/server/panel/logs/letsencrypt.log
# 或使用脚本(申请失败时自动查看)
python3 {baseDir}/scripts/ssl_cert.py apply -n example.com -d example.com
申请失败时:
常见日志错误:
Connection refused - 80 端口未开放或域名未解析Invalid domain - 域名格式错误DNS verification failed - DNS 验证失败(检查 API 配置)Rate limit exceeded - 达到申请频率限制(等待一段时间)当用户需要配置伪静态规则时:
# 查看伪静态模板列表
python3 {baseDir}/scripts/rewrite.py list -n example.com
# 查看当前伪静态规则
python3 {baseDir}/scripts/rewrite.py get -n example.com
# 应用 WordPress 伪静态规则
python3 {baseDir}/scripts/rewrite.py set -n example.com -t wordpress
# 应用 ThinkPHP 规则
python3 {baseDir}/scripts/rewrite.py set -n example.com -t thinkphp
# 自定义伪静态规则
python3 {baseDir}/scripts/rewrite.py set -n example.com --custom "location / { try_files $uri $uri/ /index.php?$query_string; }"
用户意图识别:
rewrite.py setrewrite.py set -t wordpressrewrite.py get当用户需要管理 MySQL 数据库时:
# 查看数据库列表
python3 {baseDir}/scripts/database.py list
# 查看数据库详情
python3 {baseDir}/scripts/database.py info -d example_db
# 创建数据库
python3 {baseDir}/scripts/database.py add -n example_db -u example_user -P "SecurePass123"
# 修改数据库密码
python3 {baseDir}/scripts/database.py password -d example_db -P "NewPass123"
# 设置数据库访问权限
python3 {baseDir}/scripts/database.py access -d example_db -a %
# 查看数据库表信息
python3 {baseDir}/scripts/database.py tables -d example_db
# 优化数据库表
python3 {baseDir}/scripts/database.py optimize -d example_db
# 修复数据库表
python3 {baseDir}/scripts/database.py repair -d example_db
# 删除数据库
python3 {baseDir}/scripts/database.py delete -d example_db
用户意图识别:
database.py adddatabase.py listdatabase.py passworddatabase.py optimize# 查看站点列表
python3 {baseDir}/scripts/site.py list
# 创建站点
python3 {baseDir}/scripts/site.py add -n example.com -p /www/wwwroot/example.com -v 82
# 停用站点
python3 {baseDir}/scripts/site.py stop -n example.com
# 启用站点
python3 {baseDir}/scripts/site.py start -n example.com
# 删除站点
python3 {baseDir}/scripts/site.py delete -n example.com
# 查看 PHP 版本列表
python3 {baseDir}/scripts/php.py versions
# 查看站点 PHP 版本
python3 {baseDir}/scripts/php.py get -n example.com
# 设置 PHP 版本
python3 {baseDir}/scripts/php.py set -n example.com -v 82
# 查看域名列表
python3 {baseDir}/scripts/domain.py list -n example.com
# 添加域名
python3 {baseDir}/scripts/domain.py add -n example.com -d www.example.com
# 删除域名
python3 {baseDir}/scripts/domain.py delete -n example.com -d www.example.com
# 查看 SSL 信息
python3 {baseDir}/scripts/ssl_cert.py info -n example.com
# 上传证书
python3 {baseDir}/scripts/ssl_cert.py upload -n example.com --key key.pem --cert cert.pem
# 申请免费证书
python3 {baseDir}/scripts/ssl_cert.py apply -n example.com -d example.com
# 开启/关闭强制 HTTPS
python3 {baseDir}/scripts/ssl_cert.py https -n example.com --enable
python3 {baseDir}/scripts/ssl_cert.py https -n example.com --disable
# 关闭 SSL
python3 {baseDir}/scripts/ssl_cert.py close -n example.com
# 查看模板列表
python3 {baseDir}/scripts/rewrite.py list -n example.com
# 查看当前规则
python3 {baseDir}/scripts/rewrite.py get -n example.com
# 应用模板
python3 {baseDir}/scripts/rewrite.py set -n example.com -t wordpress
# 查看数据库列表
python3 {baseDir}/scripts/database.py list
# 创建数据库
python3 {baseDir}/scripts/database.py add -n testdb -u testuser -P "Password123"
# 修改密码
python3 {baseDir}/scripts/database.py password -d testdb -P "NewPass123"
# 删除数据库
python3 {baseDir}/scripts/database.py delete -d testdb
| 参数 | 说明 | 默认值 |
|---|---|---|
list | 查看站点列表 | - |
add | 创建站点 | - |
stop | 停用站点 | - |
start | 启用站点 | - |
delete | 删除站点 | - |
info | 查看站点详情 | - |
-n, --name | 站点名称 | 必填 |
-p, --path | 站点路径 | /www/wwwroot/域名 |
-v, --version | PHP 版本 | 82 |
--create-db | 创建数据库 | 否 |
--create-ftp | 创建 FTP | 否 |
--delete-path | 删除站点目录 | 否 |
--delete-db | 删除关联数据库 | 否 |
--delete-ftp | 删除关联 FTP | 否 |
| 参数 | 说明 | 默认值 |
|---|---|---|
versions | 查看 PHP 版本列表 | - |
get | 查看站点 PHP 版本 | - |
set | 设置 PHP 版本 | - |
-n, --name | 站点名称 | 必填 |
-v, --version | PHP 版本号 | 必填 |
--static | 设为纯静态 | - |
| 参数 | 说明 | 默认值 |
|---|---|---|
list | 查看域名列表 | - |
add | 添加域名 | - |
delete | 删除域名 | - |
-n, --name | 站点名称 | 必填 |
-d, --domain | 域名(多个用逗号分隔) | 必填 |
| 参数 | 说明 | 默认值 |
|---|---|---|
info | 查看 SSL 信息 | - |
upload | 上传证书 | - |
apply | 申请证书 | - |
https | 设置强制 HTTPS | - |
close | 关闭 SSL | - |
-n, --name | 站点名称 | 必填 |
-d, --domain | 域名列表 | - |
--key | 私钥文件路径 | - |
--cert | 证书文件路径 | - |
| 参数 | 说明 | 默认值 |
|---|---|---|
list | 查看模板列表 | - |
get | 查看当前规则 | - |
set | 设置规则 | - |
-n, --name | 站点名称 | 必填 |
-t, --template | 模板名称 | - |
--custom | 自定义规则 | - |
| 参数 | 说明 | 默认值 |
|---|---|---|
list | 查看数据库列表 | - |
add | 创建数据库 | - |
info | 查看数据库详情 | - |
password | 修改密码 | - |
access | 设置访问权限 | - |
tables | 查看表信息 | - |
optimize | 优化表 | - |
repair | 修复表 | - |
delete | 删除数据库 | - |
-n, --name | 数据库名称 | 必填 |
-u, --user | 数据库用户名 | 同数据库名 |
-P, --password | 密码 | 随机生成 |
-d, --database | 数据库名称 | 必填 |
-a, --access | 访问权限 | 127.0.0.1 |
| 版本 | 说明 |
|---|---|
52 | PHP 5.2 (已淘汰) |
53 | PHP 5.3 (已淘汰) |
54 | PHP 5.4 (已淘汰) |
55 | PHP 5.5 (已淘汰) |
56 | PHP 5.6 |
70 | PHP 7.0 |
71 | PHP 7.1 |
72 | PHP 7.2 |
73 | PHP 7.3 |
74 | PHP 7.4 |
80 | PHP 8.0 |
81 | PHP 8.1 |
82 | PHP 8.2 |
83 | PHP 8.3 |
84 | PHP 8.4 |
00 | 纯静态 |
常见伪静态模板:
wordpress - WordPressthinkphp - ThinkPHPlaravel5 - Laravel 5dedecms - Dedecmsdiscuz - Discuzecshop - ECShoptypecho - Typechozblog - Z-Blogdrupal - Drupalphpcms - PHPCMSmaccms - 苹果 CMScrmeb - CRMEBShopWind - 商派EmpireCMS - 帝国 CMSEduSoho - EduSoho实战更新日期: 2026-04-02
测试环境: 内网 172 (192.168.69.172:8888)
WordPress 版本: 6.9.4 (最新中文版)
当用户需要从头部署一个完整的 WordPress 网站时,按以下步骤执行:
python3 {baseDir}/scripts/php.py versions
python3 {baseDir}/scripts/site.py list
python3 {baseDir}/scripts/site.py add -s "内网 172" \
-n "192.168.69.172:19101" \
-v 74 \
--create-db \
--db-user "wp_db_101"
输出示例:
✅ 站点创建成功:192.168.69.172:19101
路径:/www/wwwroot/192.168.69.172_19101
PHP 版本:74
站点 ID: 24
✅ 数据库创建成功
数据库名:wp_db_101
用户名:wp_db_101
密码:9q87Fbr8On41lzoT
python3 ../btpanel_files/scripts/download.py -s "内网 172" \
download \
--url "https://cn.wordpress.org/latest-zh_CN.zip" \
--path "/www/wwwroot/192.168.69.172_19101" \
--wait \
--timeout 300
python3 ../btpanel_files/scripts/unzip.py -s "内网 172" \
unzip \
--source "/www/wwwroot/192.168.69.172_19101/latest-zh_CN.zip" \
--dest "/tmp/wp-extract"
PYTHONPATH=/mnt/c/Work/lpanel2/btpanel-skills/src python3 -c "
from bt_common.bt_client import BtClient
from bt_common.config import get_servers
servers = get_servers()
for s in servers:
if s.name == '内网 172':
client = BtClient(name=s.name, host=s.host, token=s.token, timeout=s.timeout)
break
client.request('/files?action=CopyFile', {'sfile': '/tmp/wp-extract/wordpress', 'dfile': '/www/wwwroot/192.168.69.172_19101'})
"
# 创建文件
python3 ../btpanel_files/scripts/files.py -s "内网 172" \
touch "/www/wwwroot/192.168.69.172_19101/wp-config.php"
# 准备配置内容
python3 ../btpanel_files/scripts/files.py -s "内网 172" \
cat "/www/wwwroot/192.168.69.172_19101/wp-config-sample.php" > /tmp/wp-config.txt
# 替换数据库配置
sed -i 's/database_name_here/wp_db_101/g; s/username_here/wp_db_101/g; s/password_here/9q87Fbr8On41lzoT/g; s/localhost/127.0.0.1/g' /tmp/wp-config.txt
# 写入配置
python3 ../btpanel_files/scripts/files.py -s "内网 172" \
edit "/www/wwwroot/192.168.69.172_19101/wp-config.php" \
-f /tmp/wp-config.txt
python3 {baseDir}/scripts/rewrite.py -s "内网 172" \
set -n "192.168.69.172_19101" -t wordpress
curl -I http://192.168.69.172:19101
预期输出:
HTTP/1.1 302 Found
X-Redirect-By: WordPress
Location: http://192.168.69.172:19101/wp-admin/install.php
## 🎉 WordPress 部署完成!
| 项目 | 值 |
|------|------|
| 访问地址 | http://192.168.69.172:19101 |
| 数据库名 | wp_db_101 |
| 用户名 | wp_db_101 |
| 密码 | 9q87Fbr8On41lzoT |
| 数据库主机 | 127.0.0.1 |
sql=true 参数% 表示允许远程连接,127.0.0.1 表示仅本地访问sql 和 ftp 参数(脚本已自动处理)