【问题标题】:Azure webapp node.js app not startingAzure webapp node.js 应用程序未启动
【发布时间】:2018-07-21 07:51:02
【问题描述】:

我正在尝试在 Azure webapp 上部署一个非常简单的 express.js 应用程序。

部署日志显示部署正确通过但应用程序未启动。检查 kudu 进程资源管理器显示确实 node.js 进程没有运行

另一方面,我没有看到任何应用程序日志,也没有任何迹象表明该应用程序已启动。

有没有办法查看 nodeiis 尝试启动应用程序时发生了什么?

【问题讨论】:

  • 您可以通过 FTP 将您的代码移动到 azure 并直接在 azure 上启动您的 webapp。您不必从 kudu explorer 中检查它。
  • 我知道我不 kudu 不是这里的问题,它只是验证部署的工具
  • 感谢您帮助我解决问题。我的 nodejs 正在运行,但我没有得到任何响应。我忘了我必须使用port = process.env.PORT :)。

标签: node.js azure azure-web-app-service kudu


【解决方案1】:

用于 node.js 的 Azure WebApp 通过 iisnode 作为本机 IIS 模块运行,允许在 Windows 上的 IIS 中进行托管。请参阅文档https://blogs.msdn.microsoft.com/silverlining/2012/06/14/windows-azure-websites-node-js/ 了解其功能。

对于node.js的webapp调试,我建议你可以参考document知道怎么做。

如果您使用 Visual Studio 作为 node.js 的 IDE,我建议在 VS 中安装 NTVS 以调试和部署 node.js。请参阅以下文档以了解如何开始。

  1. Installation for NTVS
  2. Install Node.js and get started with NTVS

还有一个名为 node-inspector 的工具用于检查 Azure 上的 node.js 应用程序。作为参考,您可以参考文档http://www.ranjithr.com/?p=98

同时,请通过 Kudo 控制台检查您的节点 webapp 中的 web.config 文件,您可以将您的代码与 Azure 门户上的 Gallery 中的 Express 模板生成的示例进行比较。

希望对您有所帮助。有任何问题,请随时告诉我。


进程浏览器显示了我的 node.js webapp 的进程。

【讨论】:

  • 感谢您的详细回答,但这里的情况并非如此,我无法调试/检查 node.js 应用程序,因为 iisnode 从未启动它(参见上图)。如何找出节点进程从未启动的原因?
  • @GuyKorland 请更新图像。 iisnode是一个原生的IIS模块,用IIS启动,所以看不到叫iisnode的进程。请检查web.config & app.js 文件并确保配置和监听端口process.env.port 正确。
【解决方案2】:

您需要先启用日志记录,然后才能获得(希望)为您提供有关错误的更多详细信息的日志。你可以阅读更多关于它的信息here

【讨论】:

    【解决方案3】:

    在此处发布我的调查步骤。
    1. 编辑 D:\home\site\wwwroot\iisnode.yml,从https://xxx.scm.azurewebsites.net/DebugConsole 添加以下行

    devErrorsEnabled: true  
    
    1. 从 Azure 门户重新启动应用服务
    2. 访问您的服务,您将看到如下内容:

    HRESULT:0x2
    HTTP 状态:500
    HTTP 子状态:1002
    HTTP 原因:内部服务器错误

    1. 转到https://docs.microsoft.com/en-us/azure/app-service/app-service-web-nodejs-best-practices-and-troubleshoot-guide#iisnode-http-status-and-substatus 查找子状态的含义。

    更多调试技巧可以看:https://prmadi.com/debug-nodejs-app-in-azure-app-services-windows-2/

    【讨论】:

      【解决方案4】:

      您不必从 kudu explorer 检查/管理您的 web 应用程序。

      你可以参考文章https://azure.microsoft.com/en-us/documentation/articles/app-service-web-nodejs-get-started/通过git把你本地的node.js放到azure。

      您还可以通过 FTP 将您的代码移动到 azure,这会显示在 webapp 仪表板页面中。

      然后在 azure 上启动你的 node.js 网络应用,然后你就可以访问它了。

      如果您想查看代码的运行时日志,可以转到 azure 门户 webapp 中的“yourwebapp ==> CONFIGURE ==> Application Diagnostics”来配置您的日志。

      【讨论】:

      • 应用程序没有运行(我确定),我只使用kudu尝试分析这是为什么。
      【解决方案5】:

      Azure框架要运行node,根目录下必须有web.config文件配置IIS运行node进程。

      如果您通过 git 进行部署,则不必担心创建 web.config 文件。 Azure 框架将执行部署后构建操作,该操作将

      • 将您的代码识别为节点应用程序并为您创建一个 web.config 文件。
      • 运行npm install 以确保存在所需的包。

      默认情况下,部署后构建操作不会为 .zip 部署运行。您可以通过以下两个选项中的一个解决此问题:

      • 覆盖默认设置,以便构建操作运行
      • 在 zip 文件中包含 web.config filenode_modules 文件夹。

      要覆盖默认行为并启用 zip 部署的构建操作,只需添加应用程序设置 SCM_DO_BUILD_DURING_DEPLOYMENT,设置为 true

      如果您想使用自己的 web.config 文件启用节点,请参阅 this answer 以获取示例 web.config 文件。另外,请参阅此博客:https://blogs.msdn.microsoft.com/silverlining/2012/06/14/windows-azure-websites-node-js/ 了解更多详情。

      【讨论】:

        猜你喜欢
        • 2017-08-19
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        相关资源
        最近更新 更多