SuperAPI AI Directory

btpanel_phpsite

Deployment & operations

View repository

Updated 10-15 10:25

About this skill

BT Panel PHP Website Management

BT Panel PHP website management skill, providing complete PHP website lifecycle management functions, including site creation, deletion, start/stop, PHP version switching, domain management, SSL certificate management, pseudo-static rule configuration, database management, etc.

BT Panel

Icon Resources

The skill package provides the following icon files, which can be referenced when generating reports:

File Format Purpose
icon/bt-logo.svg SVG Vector icon, suitable for scaling

AI Usage Constraints

This skill is used to manage and modify PHP websites on the server. AI should follow the following principles:

  1. Confirm Before Operation: Before operations such as deleting or disabling websites, user confirmation must be obtained
  2. Notify Before Execution: Website management will affect online services. AI should first briefly explain the operation steps to be executed to the user
  3. Data Security: When deleting a website, remind the user to back up data and databases
  4. Privacy Protection: Do not proactively disclose sensitive information (such as database passwords, SSL private keys, etc.)
  5. Impact Assessment: Before operations such as modifying the PHP version or SSL certificate, inform the user of the possible impact

Execution Flow Example:

AI: 我将为您执行以下操作:
    1. 创建新站点 example.com
    2. 设置 PHP 版本为 8.2
    3. 创建关联数据库
    正在获取数据,请稍候...
    [执行命令]
    [展示结果和站点信息]

BT Panel Related Skill Matrix

The current BT Panel skill package contains 3 interrelated skills:

Skill Name Description Dependencies
btpanel Operations Monitoring Skill ✅ Basic skill, mainly used for resource monitoring, website status checks, service status checks, etc.
btpanel-files File Management Skill ✅ Provides remote server file assistance services, and can read file lists and contents
btpanel-phpsite PHP Website Management Skill ✅ Provides remote server PHP website management functions, and can deploy and manage PHP websites

⚠️ Common Issues


**问题 1: 配置文件不存在**

Error: Configuration file not found Solution: Run python3 bt-config.py add to add a server configuration


**问题 2: WordPress 部署失败**

Error: Unable to download or extract files Solution: Ensure the btpanel-files skill is installed to provide file operation capabilities


**问题 3: PYTHONPATH 未设置**
```bash
# 运行脚本前需要设置
export PYTHONPATH=/path/to/btpanel-skills/src:$PYTHONPATH

Check Command

# 检查 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

Complete Installation Verification

# 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 "你的服务器名"

Server Configuration Management

Important: If there is no server information, it needs to be added first

This skill reuses the configuration system of the btpanel skill, using the bt-config.py tool to manage servers:

# 查看帮助
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

How to Obtain an API Token:

  1. Log in to the BT Panel
  2. Go to "Panel Settings" -> "API Interface"
  3. Click "Get API Token"

Important Note - SSL Certificate Verification Configuration: When adding a server, AI should ask the user:

"Does your BT Panel use a trusted SSL certificate (such as Let's Encrypt or a commercial CA certificate)?"

  • ✅ Yes(trusted certificate) → Use the default configuration, no additional parameters are needed
  • ⚠️ No(self-signed certificate) → Add the --verify-ssl false parameter

Example:

# 自签名证书场景
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

Common Scenarios

Scenario 1: Create a New PHP Website

When the user needs to create a new PHP website:

# 创建基础 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"

User Intent Recognition:

  • "Help me create a new website" → Execute site.py add
  • "Create a new PHP site" → Execute site.py add
  • "Create a website and configure a database" → Execute site.py add --create-db

Scenario 2: View Website List and Status

When the user needs to view the website list or status:

# 查看所有站点
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

User Intent Recognition:

  • "See what websites there are" → Execute site.py list
  • "View website status" → Execute site.py list or site.py info
  • "Which PHP versions are supported" → Execute php.py versions

Scenario 3: Switch PHP Version

When the user needs to change a site's PHP version:

# 切换站点 PHP 版本
python3 {baseDir}/scripts/php.py set -n example.com -v 82

# 切换为纯静态站点
python3 {baseDir}/scripts/php.py set -n example.com --static

User Intent Recognition:

  • "Upgrade this site's PHP version to 8.2" → Execute php.py set -v 82
  • "Switch to PHP 7.4" → Execute php.py set -v 74
  • "Change to a static site" → Execute php.py set --static

Scenario 4: Disable/Enable Website

When the user needs to temporarily disable or enable a website:

# 停用网站
python3 {baseDir}/scripts/site.py stop -n example.com

# 启用网站
python3 {baseDir}/scripts/site.py start -n example.com

User Intent Recognition:

  • "Temporarily shut down this website" → Execute site.py stop
  • "Enable the disabled site" → Execute site.py start
  • "Stop this site first" → Execute site.py stop

Scenario 5: Delete Website

When the user needs to delete a website:

# 删除网站(保留文件和数据库)
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

User Intent Recognition:

  • "Delete this website" → Execute after confirmation site.py delete
  • "Completely delete the website and all data" → Execute after confirmation site.py delete --delete-path --delete-db

Important: The deletion operation is irreversible; you must first confirm with the user and remind them to back up.

Scenario 6: Manage Domain Binding

When the user needs to add or delete a bound domain:

# 查看站点域名列表
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

User Intent Recognition:

  • "Add a domain to this site" → Execute domain.py add
  • "Bind a new domain" → Execute domain.py add
  • "Delete the bound domain" → Execute domain.py delete

Scenario 7: Manage SSL Certificates

When the user needs to configure an SSL certificate:

# 查看 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

User Intent Recognition:

  • "View certificate status" → Execute ssl_cert.py info
  • "Upload SSL certificate" → Execute ssl_cert.py upload
  • "Apply for a free certificate" → Execute ssl_cert.py apply
  • "Enable forced HTTPS" → Execute ssl_cert.py https --enable

⚠️ Important Notes for Applying for a Free SSL Certificate

Requirements for applying for a Let's Encrypt free certificate:

1. Domain verification method (choose one)

Method A: HTTP file verification (recommended)

  • ✅ The domain must be able to resolve normally to the server IP
  • ✅ Port 80 must be open(not blocked by a firewall)
  • ✅ The website must be accessible normally over HTTP
  • ✅ The verification file must be accessible by the Let's Encrypt server
  • ✅ Suitable for a single domain or multiple domains without wildcards

Method B: DNS verification

  • ✅ The domain provider must support modifying DNS records via API
  • ✅ The domain provider's API Key/Secret must be provided
  • ✅ Suitable for wildcard certificates (*.example.com)
  • ✅ Port 80 does not need to be open
  • ✅ Baota purchase domain: If you have purchased domain services in the BT Panel, using its built-in DNS capability is equivalent to having configured the domain service provider API
  • ⚠️ Configuration Method: Configure the DNS service provider API credentials in BT Panel -> Website -> SSL -> DNS Verification

2. Domain Requirements

  • ❌ IP addresses are not supported for certificate applications(Let's Encrypt only supports domains)
  • ❌ Internal IPs are not supported (Let's Encrypt cannot access for verification)
  • ✅ The domain must be filed for ICP registration (Mainland China servers)
  • ✅ A single certificate can contain up to 100 domains

3. Certificate Limitations

  • ⚠️ Let's Encrypt certificates are valid for 90 days
  • ⚠️ Renewal is required every 3 months (BT Panel supports automatic renewal)
  • ⚠️ Weekly application limit (approximately 50 times/week/domain)

4. Common Error Scenarios

Error 1: Applying with an IP address

❌ 错误:申请 IP 地址 192.168.69.172 的证书
✅ 正确:必须使用域名,如 example.com

Error 2: The domain does not resolve to the server

❌ 错误:域名解析到其他服务器
✅ 正确:域名必须解析到当前服务器 IP

Error 3: Port 80 is blocked

❌ 错误:防火墙阻止 80 端口
✅ 正确:开放 80 端口用于 HTTP 验证

Error 4: Applying for an internal network domain

❌ 错误:申请 inner.local 等内网域名
✅ 正确:使用公网可访问的域名

Error 5: DNS verification not configured

❌ 错误:使用 DNS 验证但未配置 DNS 服务商 API
✅ 正确:先在面板中配置 DNS 服务商 API 凭证

5. Pre-application Checklist

# 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
# 应该返回正常内容

6. Recommended Application Process

# 步骤 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

Suggested user script:

"Applying for a free SSL certificate requires meeting the following conditions:

  1. Use a domain (IP addresses cannot be used)
  2. The domain has been resolved to the current server
  3. Port 80 is open (HTTP verification method)
  4. If it is a wildcard certificate or the domain was purchased from BT Panel, the DNS verification method can be used
  5. DNS verification requires configuring the DNS service provider API credentials in the panel first

May I ask whether your domain has been resolved to the current server?"


📄 Certificate Application Log

Log path: /www/server/panel/logs/letsencrypt.log

How to view the log:

# 手动查看
tail -50 /www/server/panel/logs/letsencrypt.log

# 或使用脚本(申请失败时自动查看)
python3 {baseDir}/scripts/ssl_cert.py apply -n example.com -d example.com

When the application fails:

  • The script will automatically read the last 50 lines of the log
  • Filter out error-related log entries
  • Display the most recent 10 error messages
  • Provide solution suggestions

Common log errors:

  • Connection refused - Port 80 is not open or the domain is not resolved
  • Invalid domain - Incorrect domain format
  • DNS verification failed - DNS verification failed (check the API configuration)
  • Rate limit exceeded - Application rate limit reached (wait for a period of time)

Scenario 8: Managing pseudo-static rules

When the user needs to configure pseudo-static rules:

# 查看伪静态模板列表
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; }"

User Intent Recognition:

  • "Set pseudo-static rules" → Execute rewrite.py set
  • "Use WordPress pseudo-static" → Execute rewrite.py set -t wordpress
  • "View the current pseudo-static" → Execute rewrite.py get

Scenario 9: Managing databases

When the user needs to manage MySQL databases:

# 查看数据库列表
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

User Intent Recognition:

  • "Create a database" → Execute database.py add
  • "View which databases exist" → Execute database.py list
  • "Change the database password" → Execute database.py password
  • "Optimize the database" → Execute database.py optimize

Version Requirements

  • BT Panel: >= 9.0.0
  • Python: >= 3.10

Usage

Website Management

# 查看站点列表
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 Version Management

# 查看 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

Domain Management

# 查看域名列表
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 Certificate Management

# 查看 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

Pseudo-static Management

# 查看模板列表
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

Database Management

# 查看数据库列表
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

Parameter Description

site.py Parameters

Parameter Description Default Value
list View site list -
add Create site -
stop Disable site -
start Enable site -
delete Delete site -
info View site details -
-n, --name Site name Required
-p, --path Site path /www/wwwroot/域名
-v, --version PHP version 82
--create-db Create database No
--create-ftp Create FTP No
--delete-path Delete site directory No
--delete-db Delete associated database No
--delete-ftp Delete associated FTP No

php.py Parameters

Parameter Description Default Value
versions View PHP version list -
get View site PHP version -
set Set PHP version -
-n, --name Site name Required
-v, --version PHP version number Required
--static Set to static only -

domain.py Parameters

Parameter Description Default Value
list View domain list -
add Add domain -
delete Delete domain -
-n, --name Site name Required
-d, --domain Domain (multiple separated by commas) Required

ssl_cert.py Parameters

Parameter Description Default Value
info View SSL information -
upload Upload certificate -
apply Apply for certificate -
https Set force HTTPS -
close Disable SSL -
-n, --name Site name Required
-d, --domain Domain list -
--key Private key file path -
--cert Certificate file path -

rewrite.py Parameters

Parameter Description Default Value
list View template list -
get View current rules -
set Set rules -
-n, --name Site name Required
-t, --template Template name -
--custom Custom rules -

database.py Parameters

Parameter Description Default Value
list View database list -
add Create database -
info View database details -
password Change password -
access Set access permissions -
tables View table information -
optimize Optimize table -
repair Repair table -
delete Delete database -
-n, --name Database name Required
-u, --user Database username Same as database name
-P, --password Password Randomly generated
-d, --database Database name Required
-a, --access Access permissions 127.0.0.1

Supported PHP Versions

Version Description
52 PHP 5.2 (Deprecated)
53 PHP 5.3 (Deprecated)
54 PHP 5.4 (Deprecated)
55 PHP 5.5 (Deprecated)
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 Pure Static

Supported Pseudo-static Templates

Common pseudo-static templates:

  • wordpress - WordPress
  • thinkphp - ThinkPHP
  • laravel5 - Laravel 5
  • dedecms - Dedecms
  • discuz - Discuz
  • ecshop - ECShop
  • typecho - Typecho
  • zblog - Z-Blog
  • drupal - Drupal
  • phpcms - PHPCMS
  • maccms - Apple CMS
  • crmeb - CRMEB
  • ShopWind - ShopEx
  • EmpireCMS - Empire CMS
  • EduSoho - EduSoho

Scenario 10: Complete Deployment of a WordPress Website (Practical Example)

Practical update date: 2026-04-02
Test environment: Intranet 172 (192.168.69.172:8888)
WordPress version: 6.9.4 (Latest Chinese version)

When a user needs to deploy a complete WordPress website from scratch, follow these steps:

Step 1: Environment Check

python3 {baseDir}/scripts/php.py versions
python3 {baseDir}/scripts/site.py list

Step 2: Create Site and Configure Database

python3 {baseDir}/scripts/site.py add -s "内网 172" \
    -n "192.168.69.172:19101" \
    -v 74 \
    --create-db \
    --db-user "wp_db_101"

Output example:

✅ 站点创建成功:192.168.69.172:19101
   路径:/www/wwwroot/192.168.69.172_19101
   PHP 版本:74
   站点 ID: 24
   ✅ 数据库创建成功
      数据库名:wp_db_101
      用户名:wp_db_101
      密码:9q87Fbr8On41lzoT

Step 3: Download WordPress Source Code

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

Step 4: Extract to Temporary Directory

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"

Step 5: Copy Files to Site Root Directory

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'})
"

Step 6: Configure wp-config.php

# 创建文件
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

Step 7: Apply Pseudo-static Rules

python3 {baseDir}/scripts/rewrite.py -s "内网 172" \
    set -n "192.168.69.172_19101" -t wordpress

Step 8: Verify Access

curl -I http://192.168.69.172:19101

Expected output:

HTTP/1.1 302 Found
X-Redirect-By: WordPress
Location: http://192.168.69.172:19101/wp-admin/install.php

Deployment Completion Information

## 🎉 WordPress 部署完成!

| 项目 | 值 |
|------|------|
| 访问地址 | http://192.168.69.172:19101 |
| 数据库名 | wp_db_101 |
| 用户名 | wp_db_101 |
| 密码 | 9q87Fbr8On41lzoT |
| 数据库主机 | 127.0.0.1 |

Key Considerations

  1. Automatic Database Parameter Passing - The script has automatically handled the sql=true parameter
  2. Use --wait for Downloading Large Files - Ensure the download is complete
  3. Extract to Temporary Directory - Avoid subdirectory issues
  4. wp-config.php Configuration - The database connection must be configured correctly
  5. Pseudo-static Rules Required - Necessary for WordPress to function properly
  6. Port Selection - It is recommended to use 19000+ to avoid conflicts

Precautions

  1. Be Cautious with Delete Operations: Operations such as deleting sites and databases are irreversible. Be sure to back up data before operating
  2. PHP Version Compatibility: Before switching PHP versions, confirm that the website code is compatible with the new version
  3. SSL Certificate Application: Applying for a free certificate requires the domain name to resolve normally and port 80 to be open
  4. Database Permissions: When setting database access permissions,% indicates that remote connections are allowed,127.0.0.1 indicates local access only
  5. Pseudo-static Rules: Before applying pseudo-static rules, it is recommended to first view the current rules and back them up
  6. API Parameter Requirements: When creating a site, the BaoTa API requires explicitly passing the sql and ftp parameters (the script has automatically handled this)