【问题标题】:How to get Node.js app running on Azure App Service?如何让 Node.js 应用在 Azure 应用服务上运行?
【发布时间】:2018-10-01 16:42:11
【问题描述】:

我正在尝试在 Azure 应用服务 (Linux) 上运行最简单的 node.js 应用,但我不知道如何运行它。我一直在尝试不同的方法,但似乎没有任何效果。

我只是通过 FTP 部署应用程序并将文件放在“wwwroot”下,但是当请求 url 时,它会永远加载,然后以服务不可用响应结束。

在创建应用程序时,我选择 Linux 作为平台,运行时 node.js 8.11 并通过“代码”而不是 docker 进行部署。

在日志中我可以看到:

docker run -d -p 46852:8080 --name [appname] -e WEBSITE_NODE_DEFAULT_VERSION=8.11 -e APPSETTING_WEBSITE_NODE_DEFAULT_VERSION=8.11 -e WEBSITE_SITE_NAME=[appname] -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_INSTANCE_ID=[id] -e HTTP_LOGGING_ENABLED=1 appsvc/node:8.11.2_1805212105

Container [appname] for site [appname] did not start within expected time limit. Elapsed time = 230.4882261 sec

这是什么意思,即使我通过“代码”和 FTP 设置了应用程序部署,docker 还是被以某种方式使用。

package.json

{
  "name": "foo",
  "version": "1.0.0",
  "description": "x",
  "author": "x",
  "private": true,
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.16.3"
  }
}

server.js

const express = require('express')
const app = express()

const port = process.env.PORT || 3000
const host = process.env.HOST || '127.0.0.1'

app.get('/', (req, res) => res.send('Hello!'))

app.listen(port, host)

我还尝试通过 ssh 进入应用程序并运行 npm install。我尝试通过 ssh 控制台 node server.js 运行该应用程序,但最终得到消息“端口已在使用中”。我尝试在 Azure 门户的“应用程序设置”中将端口设置为 8080。

我在这里缺少什么?如何让应用运行?

【问题讨论】:

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


    【解决方案1】:

    在我的网站中,我只是做了app.listen(process.env.port); - 没有主机参数。并尝试做npm start

    还要检查web.configiisnode.yml,它们是自动生成的,都是运行Node 所必需的。

    【讨论】:

    • 将在没有主机的情况下尝试。在 Linux 上运行 Azure 应用服务时,web.config 和 iisnode.yml 是否仍然有效?我在 wwwroot 中没有看到任何自动生成的文件。
    • 只需删除主机就可以了。我欠你一杯啤酒诚!
    • @RikardAskelöf 很高兴它成功了。我没有意识到 Linux 没有创建这些文件。我想它只是 Windows 服务。
    • @RikardAskelöf - 不,它们在 linux 上不是必需的,我通过 VS Code 扩展部署,并且没有创建这些文件,一切都按预期工作。
    【解决方案2】:

    首先,最好知道您是如何创建应用程序的(使用的工具、采取的步骤等)。总体而言,要了解的主要内容 - Azure 应用服务默认不使用 Node.js,即,一旦您预配了它。要指定主机将运行 Node 应用程序,您需要设置“WEBSITE_NODE_DEFAULT_VERSION”参数(在 Azure 应用程序服务的应用程序设置刀片中)。完成后,您可以使用任何可用选项进行部署(使用发布功能、本地 git、使用 Azure DevOps 等)。 Here is a good topic to start with。 开门见山:

    • 安装 Azure CLI
    • 登录到 Azure (az login)
    • az account show(查看您是否订阅了正确的订阅,以防您有很多订阅)。如有必要,使用“az account set”进行切换
    • 然后,根据此说明,创建资源组、服务计划和 Web 应用程序。设置 Node.js 运行时
    • 压缩您的应用程序(按照说明,使用 Bash 或 PS)
    • 在应用服务中,使用 Kudu 控制台部署您的应用(压缩)(开发工具 -> 高级工具刀片,从下拉菜单中选择工具 -> Zip Push Deploy)
    • 查看结果。

    【讨论】:

    • 我在 Linux 上的 Azure App Service 上运行它,我一直使用这个文档作为参考 docs.microsoft.com/en-us/azure/app-service/containers/… 我想部署应用程序只是将文件移动到FTP。但也许那是不可能的?是否需要 Azure CLI?该应用程序仅包含这两个文件(package.json 和 server.js),创建应用程序并没有什么神奇之处。我试着把 WEBSITE_NODE_DEFAULT_VERSION = 8.11 但还是同样的错误。
    • 嗯,Azure CLI 不是强制性的先决条件,这是肯定的。我为您提供这种部署方式只是为了清楚起见。如果它有效,那么对问题进行分类会更容易。事实上,并非所有 Node 版本都在应用服务中可用,当您输入参数 (WEBSITE_NODE_DEFAULT_VERSION) 时,如果版本错误,Azure 不会验证它,但 Azure CLI 会。我已将其设置为 10.6.0
    猜你喜欢
    • 2017-05-31
    • 2019-06-02
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多