【问题标题】:Azure - multiple websites dyamically based on subdomainAzure - 基于子域动态的多个网站
【发布时间】:2016-01-24 16:40:45
【问题描述】:

我们正在使用 Azure 来托管我们的网站。我们为每个提交和分支设置了一个自定义钩子,因此我们可以看到特定提交(或给定分支的最新版本)的快照:

目前我们正在通过 Apache VM 管理我们的暂存环境,因为 vhosts 让这一切变得非常简单 - 我们只需将给定提交(或分支)的代码转储到适当的文件夹中。以上:

  • /htdocs/commits/commit-1234/
  • /htdocs/branches/some-feature/

这可以在 Azure 网站(现在的 Web 应用程序)中完成吗?我们将如何创建一些动态规则,以便 IIS 将“commit-1234”映射到文件夹 /webroot/commit-1234/ 并将其用作相对路径的根目录(例如,服务器端包含)?

【问题讨论】:

    标签: git azure azure-web-app-service vhosts subdomain


    【解决方案1】:

    我可以想到两个用于实时测试部署分支的可靠选项:部署槽和虚拟应用程序

    Deployment Slots

    您可以为您的网站创建一个部署槽,它允许一些很酷的功能,例如 AB 测试(少量流量会流向该槽)。由于您按应用服务实例而不是按 Web 应用付费,因此您无需支付任何额外费用,并且您拥有干净的环境(例如,如果其中一项更改进行了数据库升级,您可以使用不同的架构而无需任何愚蠢的黑客)。然后,您将拥有一个类似 {{sitename}}-{{commit}}.azurewebsites.net 的 URL 名称。您可以手动设置每个插槽或运行脚本。获得WebJob running listening for your GitHub Hooksthen provisioning the staging slot 并不难。您需要阅读 Kudu(Web App 的开源部署引擎)以及 Deployment Hooks 的工作原理。

    Virtual Applications

    您可以部署虚拟应用程序并将它们映射到 IIS,这与使用 Apache 的方式类似。您可以查看Tom's Blog,他介绍了实际设置虚拟应用程序的详细信息。我认为这最终变得更加困难,并且仍然需要手动步骤。我只提到它是因为结果与您所说的非常接近。您可以将每个虚拟目录映射到特定的 URI(例如 /{{commit}}/)。

    仅供参考 - 我是 Azure Web Apps 团队的 PM。我认为第一个例子很有趣。我会提供帮助并将其转化为博客文章。

    【讨论】:

    • 部署槽的挑战在于它们的数量非常有限(如果我正确理解了文档,则根据服务级别,无、5 或 20)。它们也不会长期存在,如果您想创建回到某个版本的永久链接,这很方便。
    • 您也可以只使用普通的旧 Web 应用程序并迁移应用程序设置。仍然可以获得不收取额外费用的优势(如果它们在同一个应用服务上)。
    【解决方案2】:

    为每个 Azure 网站/应用端点配置 Git 集成时,您可以选择分支。

    从文档中:“在持续部署边栏选项卡中,选择要从中部署的组织、项目和分支。完成后,单击确定。”

    来源:https://azure.microsoft.com/en-us/documentation/articles/web-sites-publish-source-control/

    希望对您有所帮助! :)

    • 阴影

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多