运行 带有 iisnode 的 Azure Web App 上的 AtlasBoard

Running AtlasBoard on Azure Web App with iisnode

我正在尝试 运行 Azure Web 应用程序中的 AtlasBoard,但无法使其正常工作。我使用 "Get started in 30 seconds" 步骤创建了一个新板,当我在本地启动演示板时 运行 没问题。它可以通过以 atlasboard start 3333 启动它来工作,或者如果我 运行 node start.

我已将 node_modules 目录添加到。git忽略。

我在 Azure 上使用 git 部署,这似乎工作正常。部署日志还显示 npm 模块已安装。

这是部署的最后输出:

Using start-up script start.js from package.json.
Generated web.config.
The iisnode.yml file explicitly sets nodeProcessCommandLine. Automatic node.js version selection is turned off.
Selected npm version 3.5.1
npm WARN Invalid name: "HRMTS AtlasBoard"
npm WARN wwwroot No description
npm WARN wwwroot No repository field.
npm WARN wwwroot No README data
npm WARN wwwroot No license field.
Finished successfully.

但是,该应用程序似乎没有启动,当我查看 Kudu 控制台中的日志消息时,我得到以下信息:

Error: error installing D:\home\site\wwwroot\packages\demo
    at process.<anonymous> (D:\Program Files (x86)\iisnode\interceptor.js:73:106)
    at emitOne (events.js:96:13)
    at process.emit (events.js:188:7)
    at process._fatalException (node.js:267:26)

有人知道这里出了什么问题吗?

如果您使用 https://bitbucket.org/atlassian/atlasboard/src 上的演示应用程序的存储库在 Azure 上进行测试,我们需要做一些额外的修改才能在 Azure Web 应用程序上进行测试 运行。

首先,假设您已成功将应用程序部署到 Azure,并且在启动 运行 应用程序时失败。然后您可以利用 Kudu 控制台站点或 Visual Studio 在线扩展(请参阅 的答案以了解如何启用 Azure Web 应用程序的扩展)来检查 D:\home\site\wwwroot\packages\demo\npm-debug.log 的错误日志。

有类似错误:

155 error node -v v0.6.20

156 error npm -v 1.1.37

157 error message SSL Error: CERT_UNTRUSTED

看来 atlasboard 运行s 命令在 Azure 上的节点版本非常低。我们可以手动修改依赖脚本来绕过错误。

如果在部署过程中出现错误,请在部署前修改package.json中的npm版本,例如:

"engines": {
    "npm": ">2.0.0",
    "node": ">=0.10"
  },

部署后:

  • 检查并修改根目录下start.js中的port

    atlasboard({port: process.env.port||3000 , install: true}, 
    function  (err) {
      if (err) {
        throw err;
      }
    });
    
  • 修改 D:\home\site\wwwroot\node_modules\atlasboard\lib\package-dependency-manager.js 中的 install 函数以使用更高的 npm 版本并删除 --production 参数,例如:

    ...
    var npmCommand = isWindows ? "D:\Program Files (x86)\npm\3.5.1\npm.cmd" : "npm";
    executeCommand(npmCommand, ["install", pathPackageJson], function(err,     code){
    ...
    })
    

然后重新启动您的网站。

如有任何疑问,请随时告诉我。