如何不使用“WordPress on App Service”在Azure部署WordPress
手动部署WordPress到Azure(不依赖WordPress on App Service)
一、创建Azure基础资源
- Linux Web App:创建时选择PHP 8.2+作为运行时,搭配匹配业务流量的App Service Plan(如B1/B2级),强制启用HTTPS。
- Azure MySQL Flexible Server:配置防火墙规则允许Web App出站IP访问;设置管理员账号与密码,用于后续数据库连接。
- 系统分配托管标识:在Web App的「身份」选项卡下启用系统分配标识,用于无密钥访问Blob存储。
- Blob存储账户:创建私有访问级别的存储容器(如
wp-media);在存储账户的「Access control (IAM)」中,给Web App的托管标识分配存储Blob数据贡献者角色。
二、准备WordPress配置文件
- 下载WordPress官方安装包并解压,复制
wp-config-sample.php并重命名为wp-config.php。 - 修改
wp-config.php,用环境变量替代硬编码配置,示例:// 数据库配置 define('DB_NAME', getenv('WP_DB_NAME')); define('DB_USER', getenv('WP_DB_USER')); define('DB_PASSWORD', getenv('WP_DB_PASSWORD')); define('DB_HOST', getenv('WP_DB_HOST')); define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); // 安全密钥(可通过WordPress官网生成后填入,或用环境变量管理) define('AUTH_KEY', getenv('WP_AUTH_KEY')); define('SECURE_AUTH_KEY', getenv('WP_SECURE_AUTH_KEY')); define('LOGGED_IN_KEY', getenv('WP_LOGGED_IN_KEY')); define('NONCE_KEY', getenv('WP_NONCE_KEY')); define('AUTH_SALT', getenv('WP_AUTH_SALT')); define('SECURE_AUTH_SALT', getenv('WP_SECURE_AUTH_SALT')); define('LOGGED_IN_SALT', getenv('WP_LOGGED_IN_SALT')); define('NONCE_SALT', getenv('WP_NONCE_SALT')); // 绑定Blob存储作为媒体库 define('WP_CONTENT_URL', 'https://' . getenv('AZURE_STORAGE_ACCOUNT') . '.blob.core.windows.net/wp-media/wp-content'); define('UPLOADS', 'wp-content/uploads'); - 将上述所有环境变量(
WP_DB_NAME、WP_DB_USER等)添加到Web App的「配置 > 应用设置」中,避免敏感信息硬编码。
三、DevOps CI/CD流程(FTP部署+数据库脚本执行)
CI阶段(构建)
- 拉取并解压WordPress安装包:
curl -O https://wordpress.org/latest.tar.gz tar -xzf latest.tar.gz - 将自定义
wp-config.php复制到解压后的wordpress目录 - 准备数据库初始化脚本(如从本地WordPress实例导出的表结构文件
init.sql)
CD阶段(部署)
- FTP部署:用Azure DevOps的FTP部署任务,配置Web App的FTP端点(可在「部署中心 > FTP」获取),将
wordpress目录下所有文件上传到Web App的/home/site/wwwroot路径。 - 执行数据库脚本:用Azure CLI任务连接MySQL服务器并执行初始化脚本,示例:
注意:数据库密码等敏感信息需存入Azure Key Vault,通过DevOps变量组引用,禁止明文暴露。mysql -h $(WP_DB_HOST) -u $(WP_DB_USER) -p$(WP_DB_PASSWORD) $(WP_DB_NAME) < init.sql
四、关键注意事项
- PHP配置调整:若需修改上传文件大小等参数,创建自定义
php.ini(如设置upload_max_filesize = 64M),在Web App应用设置中添加PHP_INI_SCAN_DIR = /home/site/wwwroot,将php.ini上传至网站根目录。 - 文件权限优化:若用Blob存储托管媒体,可将本地
wp-content/uploads设为只读,提升站点安全性。 - HTTPS强制:在Web App的「SSL设置」中启用「HTTPS only」,确保所有请求走加密链路。
内容的提问来源于stack exchange,提问作者José Ramos
相关产品推荐
相关产品推荐

