You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用“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配置文件

  1. 下载WordPress官方安装包并解压,复制wp-config-sample.php并重命名为wp-config.php。
  2. 修改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');
    
  3. 将上述所有环境变量(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服务器并执行初始化脚本,示例:
    mysql -h $(WP_DB_HOST) -u $(WP_DB_USER) -p$(WP_DB_PASSWORD) $(WP_DB_NAME) < init.sql
    
    注意:数据库密码等敏感信息需存入Azure Key Vault,通过DevOps变量组引用,禁止明文暴露。

四、关键注意事项

  • 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:15:57