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

如何通过Azure DevOps CI/CD流水线部署PHP应用至Azure VMSS?求方案评估

方案评估与优化建议

一、你设想的CLI脚本自动化方案完全可行

可以通过Azure DevOps的CD流水线串联以下步骤实现全流程自动化:

  • 部署应用到预演VM:使用Azure DevOps的SSH任务或Azure CLI任务,将构建好的PHP应用包(如ZIP、tar.gz)传输到预演VM,执行解压、配置环境变量、重启PHP服务等操作。示例CLI命令:
    # 传输应用包到预演VM并部署
    az vm run-command invoke --resource-group <你的资源组名> --name <预演VM名称> --command-id RunShellScript --scripts "wget <Azure存储账户中的应用包URL> -O /var/www/html/app.tar.gz && tar -xzf /var/www/html/app.tar.gz -C /var/www/html/ && systemctl restart php-fpm nginx"
    
  • 生成预演VM的自定义镜像:在预演环境验证通过后,用Azure CLI创建VM磁盘快照,再基于快照生成自定义镜像。示例命令:
    # 创建VM OS磁盘快照
    az snapshot create --resource-group <资源组名> --name <快照名称> --source <预演VM的OS磁盘ID>
    # 基于快照创建自定义镜像
    az image create --resource-group <资源组名> --name <新版本镜像名称> --os-type Linux --source <快照ID>
    
  • 更新VMSS使用新版本镜像:调用CLI命令更新VMSS的镜像引用,并触发滚动更新。示例命令:
    # 更新VMSS的镜像配置
    az vmss update --resource-group <资源组名> --name <VMSS名称> --set virtualMachineProfile.storageProfile.imageReference.id=<新版本镜像ID>
    # 触发VMSS滚动更新
    az vmss rolling-upgrade start --resource-group <资源组名> --name <VMSS名称>
    
    注意:可在流水线中添加健康验证任务(如发送HTTP请求检查预演VM的应用状态),只有验证通过后才进入生成镜像和更新VMSS的步骤。

二、更优的替代方案:直接部署应用到VMSS实例(无需镜像更新)

如果你的PHP应用不需要修改操作系统层面配置(如安装新系统依赖、更改内核参数),可以跳过镜像生成步骤,直接将应用部署到VMSS所有实例,效率提升明显:

  • 使用Azure DevOps原生任务:用Virtual Machine Scale Set Deployment任务,支持直接将应用包部署到VMSS实例,内置滚动部署、蓝绿部署等策略,无需手动编写复杂脚本。
  • 配合自定义脚本扩展:在VMSS的实例模板中配置Azure自定义脚本扩展,流水线只需将应用包上传到存储账户,触发扩展执行拉取包、部署应用、重启服务的操作。示例扩展配置片段:
    "extensionProfile": {
      "extensions": [
        {
          "name": "deploy-php-app",
          "properties": {
            "publisher": "Microsoft.Azure.Extensions",
            "type": "CustomScript",
            "typeHandlerVersion": "2.1",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "fileUris": ["<应用包存储URL>"],
              "commandToExecute": "tar -xzf app.tar.gz -C /var/www/html/ && systemctl restart php-fpm nginx"
            }
          }
        }
      ]
    }
    
  • 核心优势:部署速度更快(无需等待镜像创建和VMSS实例重建),回滚更便捷(只需重新部署旧版本应用包),运维成本更低。

三、混合方案(兼顾预演验证与高效部署)

如果必须保留预演环境的验证环节,同时想避免镜像更新的低效,可以采用:

  1. 先将应用部署到预演VM完成功能验证;
  2. 验证通过后,直接用相同的部署脚本/任务将应用推送到VMSS所有实例,跳过镜像生成步骤。

内容的提问来源于stack exchange,提问作者Anirudh Mounasamy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:47:46