【问题标题】:How to deploy NodeJS project to Azure websites?如何将 NodeJS 项目部署到 Azure 网站?
【发布时间】:2017-05-02 17:07:34
【问题描述】:

我们正在使用 TeamCity 构建一个 NodeJs 项目,然后使用 FTP 将构建的文件上传到我们的 Azure Web 应用程序 (.azurewebsites)。该项目包含数千个文件,因此 FTP 上传时间很慢(需要很长时间)。我们更愿意将构建打包为 ZIP 文件,然后使用 FTP 上传 ZIP(更快)。但是,我们如何使用脚本在 Azure 上解压缩 ZIP 文件?

或者有没有更好的方法将我们的构建部署到我们的 Azure Web 应用程序?

注意事项

  • 这是一项 Azure Web 应用服务,不存在于 VM 上
  • 我们的流程需要使用脚本自动化以支持 CI/CD
  • 使用 Git 和其他存储库进行部署是不可行的

【问题讨论】:

    标签: node.js azure deployment


    【解决方案1】:

    您可以使用 Kudu API 或 MsBuild 将应用程序(Web 应用程序或函数)部署到 Azure 应用程序服务。部署通常分两部分完成:

    1. 使用 ARM 模板部署应用服务
    2. 使用其中一种方法部署代码/应用程序

    如果您使用的是 VSTS,那么这两个步骤都有模板,设置过程只需 2 分钟。如果您不使用 VSTS,Kudu API 是解决问题的最佳方式。

    您可以在这里找到更多信息:https://github.com/projectkudu/kudu/wiki/REST-API

    您也可以使用 Azure PowerShell 管理 cmdlet 来实现相同的目的。但是,目前仅在 Windows 上支持此功能

    【讨论】:

    • 谢谢克里斯。我用 PowerShell 尝试了 Kudu REST API,它有点工作,但出现错误:Invoke-RestMethod : The operation has timed out。从 Azure 站点的 cmd 控制台,我可以看到 Zip 中的内容,所以这里肯定有什么问题,但由于超时错误,不确定整个过程是否完成。
    • 顺便说一句:我还查看了一些 Azure PowerShell cmdlet,其中一个特别具有潜力:Publish-AzureWebsiteProject。但是,此 cmdlet 需要 Select-AzureSubscription cmdlet,它不会显示我的 Azure 订阅。但是,Select-AzureRmSubscription 确实显示了我的订阅,但此 cmdlet 不适用于 Publish-AzureWebsiteProject。这里有什么想法吗? AzureRm 是否有发布 cmdlet?
    • 对于 Kudu REST API Invoke-RestMethod,我添加了以下内容以帮助解决超时错误:-TimeoutSec 240。这似乎有效,所以我现在就和 Kudu 一起去。再次感谢!
    • @keith Kudu 进程超时的原因是因为它试图通过npm restore 恢复你的所有包。你可以使用 webpack 来解决这个问题,但它仍处于 beta/preview 阶段,不确定它是否能在这种情况下工作。
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    相关资源
    最近更新 更多