使用 Azure ARM 部署Word Press 遇到 Extension节点 扩展的问题

在使用Azure ARM模式部署wordpress,将php网站压缩成zip的形式在DefaultTemplate模板中已扩展的形式实现安装

遇到的问题总结:

1、开始在sites节点中,resource节点下的配置如下:

servicePackageLink是我wp的网站压缩包地址
{
          "apiVersion": "2015-08-01",
          "name": "web",
          "type": "config",
          "dependsOn": [
            "[concat(‘Microsoft.Web/sites/‘, parameters(‘siteName‘))]"
          ],
          "properties": {
            "phpVersion": "5.5"
          }
        },
        {
          "apiVersion": "2015-08-01",
          "type": "config",
          "name": "connectionstrings",
          "dependsOn": [
            "[concat(‘Microsoft.Web/sites/‘, parameters(‘siteName‘))]",
            "[concat(‘Microsoft.MySql/servers/‘, parameters(‘mysqlServerName‘))]"
          ],
          "properties": {
            "DefaultConnection": {
              "value": "[variables(‘dbConnectionString‘)]",
              "type": "MySql"
            }
          }
        },
        {
          "apiVersion": "2015-08-01",
          "name": "MSDeploy",
          "type": "extensions",
          "properties": {
            "packageUri": "[variables(‘servicePackageLink‘)]",
            "dbType": "None",
            "connectionString": "[variables(‘dbConnectionString‘)]"
          },
          "dependsOn": [
            "[concat(‘Microsoft.Web/sites/‘, parameters(‘siteName‘))]"
          ]
        }
采用powershell部署时,报以下错误:

Deployment was interrupted and the process running it was terminated unexpectedly, if an ARM template is used, the likely cause is a race condition. To solve the race condition, make all resources that could potentially restart the site (app settings or site config changes for example) have a dependency on MSDeploy resource. For more info please read the information here: http://go.microsoft.com/fwlink/?LinkId=808141

根据错误信息查看,问题提示 网站部署操作被切断,推断是 MSDeploy 节点的依赖条件限制上出了问题,于是根据提示连接查看了文章,而且做了相应更改:

在config节点中中的dependsOn中添加了限制

"[concat(‘Microsoft.Web/sites/‘, parameters(‘siteName‘),‘/Extensions/MSDeploy‘)]"

但是,在powershell中运行时,直接报语法错误的提示,看来还是走不通


Deployment template validation failed: ‘The resource ‘/subscriptions/xxxxxxxxxxx/resourceGroups/WPTestResourceGroup/providers/Microsoft.Web/Sites/wptestwb/config/connectionstrings‘ at line ‘129‘ and column ‘
14‘ doesn‘t depend on parent resource ‘/subscriptions/xxxxxxx/resourceGroups/WPTestResourceGroup/providers/Microsoft.Web/Sites/wptestwb‘. Please add dependency explicitly using the ‘dependsOn‘ syntax. Please see https://aka.ms/arm-template/#resources for usage details.‘.

于是只能采用其他方式来解决,既然 ‘/Extensions/MSDeploy‘ 放到 config中不能成功,那就在 extensions 加条件来限制试一下,于是给 extensions 节点添加依赖条件-> (等数据库连接创建完成以后在开始将网站部署到website中)

发现还是报错:

Deployment was interrupted and the process running it was terminated unexpectedly, if an ARM template is used, the likely cause is a race condition. To solve the race condition, make all resources that could potentially restart the site (app settings or site config changes for example) have a de
pendency on MSDeploy resource. For more info please read the information here: http://go.microsoft.com/fwlink/?LinkId=808141

经过查询资料看,将/ config/connectionstrings  改成  /config/web 居然成功了,

原因应该是,网站扩展包需要依赖的条件是在网站部署完成以及配置完成后才能开始从远程下载网站包,网站在配置后需要重启,重启时就会切断所有操作,这也说明了开始时会报 操作被终止 的错误,所以要将网站部署包依赖于网站配置完成后进行

最后将DefaultTemplate贴上来:

{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "siteName": {
      "type": "string",
      "metadata": {
        "description": "Wordpress 网站名称."
      }
    },
    "hostingPlanName": {
      "type": "string",
      "metadata": {
        "description": "Wordpress 后台web应用服务器名称."
      }
    },
    "sku": {
      "type": "string",
      "allowedValues": [
        "F1",
        "S1"
      ],
      "defaultValue": "F1",
      "metadata": {
        "description": "web应用服务器类型,F1为免费版,S1为标准版. 价格详情请访问: https://www.azure.cn/pricing/details/app-service/"
      }
    },
    "mysqlServerName": {
      "type": "string",
      "metadata": {
        "description": "MySql 服务器的名字. 最大长度为64个字母数字字符. 请通过 @mysqlServerName.mysqldb.chinacloudapi.cn访问MySql数据库. 管理配置MySql数据库请访问 https://manage.windowsazure.cn"
      }
    },
    "mysqlServerSku": {
      "type": "string",
      "defaultValue": "MS2",
      "allowedValues": [
        "MS1",
        "MS2",
        "MS3",
        "MS4",
        "MS5",
        "MS6"
      ],
      "metadata": {
        "description": "MySql 服务器的性能版本,价格详情请访问 https://www.azure.cn/pricing/details/mysql/"
      }
    },
    "mysqlServerVersion": {
      "type": "string",
      "allowedValues": [
        "5.6",
        "5.7",
        "5.5"
      ],
      "defaultValue": "5.6",
      "metadata": {
        "description": "MySQL服务器版本. "
      }
    },
    "mysqlUserName": {
      "type": "string",
      "metadata": {
        "description": "MySql 服务器登录名。登录名格式为 ‘MySQL服务器名%登录名’,长度小于16个字符。用户名和密码规范请参考: http://dev.mysql.com/doc/refman/5.6/en/user-names.html"
      }
    },
    "mysqlPassword": {
      "type": "securestring",
      "metadata": {
        "description": "MySql 服务器登录密码。长度必须大于8个字符,小于64个字符。用户名和密码规范请参考: http://dev.mysql.com/doc/refman/5.6/en/user-names.html"
      }
    },
    "mysqldatabaseName": {
      "type": "string",
      "metadata": {
        "description": "数据库名字。必须小于64个字符,其它命名规范请参考: http://dev.mysql.com/doc/refman/5.6/en/identifiers.html"
      }
    },
    "artifactsLocation": {
      "type": "string",
      "metadata": {
        "description": "The location where dependency package is stored."
      }
    }
  },
  "variables": {
    "servicePackageLink": "[concat(parameters(‘artifactsLocation‘), ‘wordpress-azure.zip‘)]",
    "dbConnectionString": "[concat(‘Data Source=‘, parameters(‘mysqlServerName‘), ‘.mysqldb.chinacloudapi.cn‘, ‘;Database=‘, parameters(‘mysqldatabaseName‘), ‘;User Id=‘, parameters(‘mysqlUserName‘), ‘@‘, parameters(‘mysqlServerName‘), ‘;Password=‘, parameters(‘mysqlPassword‘))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "name": "[parameters(‘hostingPlanName‘)]",
      "type": "Microsoft.Web/serverFarms",
      "location": "[resourceGroup().location]",
      "properties": {

      },
      "sku": {
        "name": "[parameters(‘sku‘)]",
        "capacity": 1
      }
    },
    {
      "apiVersion": "2015-08-01",
      "name": "[parameters(‘siteName‘)]",
      "type": "Microsoft.Web/Sites",
      "kind": "app",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[concat(‘Microsoft.Web/serverFarms/‘, parameters(‘hostingPlanName‘))]"
      ],
      "properties": {
        "name": "[parameters(‘siteName‘)]",
        "serverFarmId": "[parameters(‘hostingPlanName‘)]"
      },
      "resources": [
        {
          "apiVersion": "2015-08-01",
          "name": "web",
          "type": "config",
          "dependsOn": [
            "[concat(‘Microsoft.Web/sites/‘, parameters(‘siteName‘))]"
          ],
          "properties": {
            "phpVersion": "5.5"
          }
        },
        {
          "apiVersion": "2015-08-01",
          "type": "config",
          "name": "connectionstrings",
          "dependsOn": [
            "[concat(‘Microsoft.Web/sites/‘, parameters(‘siteName‘))]",
            "[concat(‘Microsoft.MySql/servers/‘, parameters(‘mysqlServerName‘))]"
          ],
          "properties": {
            "DefaultConnection": {
              "value": "[variables(‘dbConnectionString‘)]",
              "type": "MySql"
            }
          }
        },
        {
          "apiVersion": "2015-08-01",
          "name": "MSDeploy",
          "type": "extensions",
          "properties": {
            "packageUri": "[variables(‘servicePackageLink‘)]",
            "dbType": "None"
          },
          "dependsOn": [
            "[concat(‘Microsoft.Web/sites/‘, parameters(‘siteName‘))]",
            "[concat(‘Microsoft.Web/Sites/‘, parameters(‘siteName‘), ‘/config/web‘)]"
          ]
        }
      ]
    },
    {
      "type": "Microsoft.MySql/servers",
      "name": "[parameters(‘mysqlServerName‘)]",
      "apiVersion": "2015-09-01",
      "location": "[resourceGroup().location]",
      "tags": {
        "displayName": "[parameters(‘mysqlServerName‘)]"
      },
      "sku": { "name": "[parameters(‘mysqlServerSku‘)]" },
      "properties": {
        "version": "[parameters(‘mysqlServerVersion‘)]",
        "AllowAzureServices": true
      },
      "resources": [
        {
          "name": "[parameters(‘mysqlUserName‘)]",
          "type": "users",
          "apiVersion": "2015-09-01",
          "dependsOn": [
            "[concat(‘Microsoft.MySql/servers/‘, parameters(‘mysqlServerName‘))]"
          ],
          "properties": {
            "password": "[parameters(‘mysqlPassword‘)]"
          }
        },

        {
          "name": "[parameters(‘mysqldatabaseName‘)]",
          "type": "databases",
          "tags": {
            "displayName": "[parameters(‘mysqldatabaseName‘)]"
          },
          "apiVersion": "2015-09-01",
          "dependsOn": [
            "[concat(‘Microsoft.MySql/servers/‘, parameters(‘mysqlServerName‘))]"
          ],
          "properties": {},
          "resources": [
            {
              "name": "[parameters(‘mysqlUserName‘)]",
              "type": "privileges",
              "apiVersion": "2015-09-01",
              "dependsOn": [
                "[concat(‘Microsoft.MySql/servers/‘, parameters(‘mysqlServerName‘), ‘/users/‘, parameters(‘mysqlUserName‘))]",
                "[concat(‘Microsoft.MySql/servers/‘, parameters(‘mysqlServerName‘), ‘/databases/‘, parameters(‘mysqldatabaseName‘))]"
              ],
              "properties": {
                "level": "ReadWrite"
              }
            }
          ]
        }
      ]
    }

  ]
}

 
时间: 2024-08-05 17:51:33

使用 Azure ARM 部署Word Press 遇到 Extension节点 扩展的问题的相关文章

CentOS7 部署 word press!

yum install -y httpd//安装阿帕奇 rpm-Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm //添加mysql源yum install mysql mysql-server mysql-libsmysql-server –y //下载mysql相关包 setenforce 0 // 设置selinux firewall-cmd --permanent --add-service=htt

Azure ARM 模板,VM扩展命令

Azure ARM模板中,给虚拟机安装扩展脚本的命令 "resources": [ { "apiVersion": "[variables('apiVersion')]", "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(parameters('nginxVmNamePrefix'

Azure ARM虚拟机部署反恶意软件-安全扩展

Azure虚拟机,默认情况下没有安装杀毒软件.如果您有此需求可以通过Azure 扩展进行安装,有关Azure反恶意软件的官方说明请参考:https://docs.azure.cn/zh-cn/security/azure-security-antimalware 对于Azure ARM虚拟机,只能通过Azure Powershell的方式在虚拟机中安装安全扩展,但是前提条件是虚拟机中已经正常安装了Azure Agent 1.可以通过如下方法判断虚拟机是否已经安装了Azure Agent a.虚拟

Azure ARM (8) ARM Template - VS Code

<Windows Azure Platform 系列文章目录> 在上一节内容中,笔者介绍了如何使用Visual Studio来编辑ARM Template. 但是在某些时候,Visual Studio安装起来太庞大了.本章将介绍使用VS Code来编辑Azure Template. 1.VS Code的下载地址:https://code.visualstudio.com/ 2.运行VS Code,然后安装Azure ARM Extension.我们点击查看,扩展 3.搜索azurerm,然后安

手把手教你创建Azure ARM Template

Azure的ARM模式在中国已经落地了.在ARM模式中,通过ARM的Template批量的创建各种资源是与ASM模式的最大的区别之一.目前Azure ARM的Template数量已经越来越多,更多的客户会选择采用Template的模式进行资源的部署: 在前面的文章中已经介绍了如何通过已有的Template修改成你所需要的模板,请参考: http://www.cnblogs.com/hengwei/p/5634380.html 本文将一步一步的创建一个最简单的存储账户的ARM Template,并

Azure ARM (10) ARM模式下的虚拟机和Classic Model虚拟机的区别

<Windows Azure Platform 系列文章目录> 本文内容比较多,请大家仔细阅读,谢谢! 请读者注意,在Azure ARM平台,有两种虚拟机模式:经典虚拟机和ARM虚拟机 ASM部署(经典虚拟机): 1.我们通过Azure Classic Portal: http://manage.windowsazure.cn,部署的都是ASM资源(经典虚拟机) 2.如果我们通过Azure New Portal (http://portal.azure.cn) 创建,需要选择部署模式为Clas

Azure虚拟机部署Skype for Business Server 二、部署AD、DNS

上一章节全面概述了Azure虚拟机部署Skype for Business Server的详细步骤,这一章节主要讲述如何在Azure虚拟机部署AD(Active Directory)和DNS服务器,在部署之前需要先按照上一章创建1-5,分开创建以便更详细的了解模块化的过程. 此次全部实验使用国际版Azure,管理入口:https://portal.azure.com 创建Resource groups,把部署Skype所用到的资源都放在规划的资源组,方便标识和查找 Resource groups

Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role

<Windows Azure Platform 系列文章目录> 今天上午刚刚和客户沟通过,趁热打铁写一篇Blog. 熟悉Microsoft Azure平台的读者都知道,在老的Classic Portal里面,我们可以设置共同管理员(Co-admin). 参考:Windows Azure Active Directory (3) China Azure AD增加新用户 但是Co-Admin和服务管理员(Service Admin)的权限是一样的. 比如上图的admin创建的任何资源,是可以被ne

Azure ARM (11) ARM模式下,创建虚拟机并配置负载均衡器

<Windows Azure Platform 系列文章目录> 本文内容比较多,请大家仔细阅读,谢谢! 在前几章中,我们做了准备工作: 1.创建ARM Resouce Group,叫LeiResourceGroup 2.创建ARM Storage Account,叫leistorageaccount 3.创建ARM Virtual Network,叫LeiARMVNet 在本章中,笔者将介绍如何在ARM模式下,创建虚拟机VM.主要分为以下几步: 1.创建第一台ARM VM LeiARMWeb0