如何将Azure App Service上的WordPress迁移至同租户不同数据库实例
同一租户内Azure App Service WordPress迁移方案(配置一致、数据库独立)
针对你的需求,不用WordPress插件、避开ARM模板导出依赖问题的可行方案如下:
方法一:AZ CLI 复刻配置 + 代码迁移
这种方式可以精准复刻原站点的配置,同时指定新数据库,步骤如下:
- 导出原站点核心配置
先获取原App Service的关键配置信息,方便后续同步:
# 获取原站点应用设置(排除数据库相关项) az webapp config appsettings list --name <原站点名> --resource-group <原资源组> | jq -r '.[] | select(.name | test("WORDPRESS_DB_.*|DATABASE_URL") | not) | "\(.name)=\(.value)"' > appsettings.txt # 获取原站点运行时配置(比如PHP版本) az webapp config show --name <原站点名> --resource-group <原资源组> --query '[phpVersion, linuxFxVersion]'
- 创建新的App Service实例
复用原服务计划(保证配置一致)创建新站点:
az webapp create --name <新站点名> --resource-group <目标资源组> --plan <原服务计划名>
- 同步原站点配置到新站点
- 导入应用设置:
az webapp config appsettings set --name <新站点名> --resource-group <目标资源组> --settings @appsettings.txt - 同步运行时配置(替换为你获取到的值):
az webapp config set --name <新站点名> --resource-group <目标资源组> --php-version 7.4 --linux-fx-version "PHP|7.4" - 同步扩展/SSL/域名:如果原站点有SSL证书或自定义域名,用CLI手动绑定:
# 绑定SSL证书(需确保证书已存在于目标资源组) az webapp config ssl bind --certificate-name <证书名> --ssl-type SNI --name <新站点名> --resource-group <目标资源组>
- 迁移WordPress代码
导出原站点代码包并部署到新站点:
# 导出原站点代码 az webapp deployment source config-zip --name <原站点名> --resource-group <原资源组> --src ./wordpress-site.zip # 部署到新站点 az webapp deployment source config-zip --name <新站点名> --resource-group <目标资源组> --src ./wordpress-site.zip
- 配置新数据库连接
在新站点添加新数据库的应用设置,覆盖wp-config.php中的旧配置:
az webapp config appsettings set --name <新站点名> --resource-group <目标资源组> --settings \ WORDPRESS_DB_HOST="<新数据库地址>" \ WORDPRESS_DB_USER="<新数据库用户名>" \ WORDPRESS_DB_PASSWORD="<新数据库密码>" \ WORDPRESS_DB_NAME="<新数据库名>"
之后访问新站点,完成WordPress初始化即可(或导入预准备的数据库结构)。
方法二:优化ARM模板导出,规避依赖问题
如果偏好模板化部署,可通过以下方式解决导出依赖问题:
- 精准导出所需资源
只导出App Service和服务计划这两个核心资源,排除其他无法导出的依赖:
# 获取原App Service和服务计划的资源ID az webapp show --name <原站点名> --resource-group <原资源组> --query id -o tsv > app-id.txt az appservice plan show --name <原服务计划名> --resource-group <原资源组> --query id -o tsv > plan-id.txt # 导出仅包含这两个资源的ARM模板 az group export --name <原资源组> --resource-ids $(cat app-id.txt) --resource-ids $(cat plan-id.txt) --output-file template.json
修改模板参数化
编辑template.json,将站点名称、数据库连接字符串改成可配置参数,同时删除模板中引用外部依赖的无效字段(比如私有链接、特定服务绑定)。部署修改后的模板
通过参数指定新站点和新数据库信息:
az deployment group create --resource-group <目标资源组> --template-file ./template.json --parameters \ siteName=<新站点名> \ wordpressDbHost="<新数据库地址>" \ wordpressDbUser="<新数据库用户名>"
关键注意事项
- 确保新数据库与App Service网络可达(同区域或配置VNet连接);
- 若代码包中包含旧的
wp-config.php,应用设置中的数据库配置会自动覆盖它,无需手动修改文件; - 迁移后建议清理新站点的缓存,避免残留旧站点数据。
内容的提问来源于stack exchange,提问作者Tatiana Muñoz
相关产品推荐
相关产品推荐

