代码之家  ›  专栏  ›  技术社区  ›  Rikard Askelöf

如何让Node.js应用程序在Azure应用程序服务上运行?

  •  1
  • Rikard Askelöf  · 技术社区  · 6 年前

    我只是简单地通过FTP部署应用程序,并将文件放在“wwwroot”下,但当请求url时,它将永远加载,然后得到一个服务不可用的响应。

    创建应用程序时,我选择Linux作为平台,runtime 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
    

    包.json

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

    服务器.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 node server.js 但最后显示消息“端口已在使用”。我试过在azureportal的“应用程序设置”中将端口设置为8080。

    2 回复  |  直到 6 年前
        1
  •  1
  •   MakotoE    6 年前

    在我的网站上,我就是这么做的 app.listen(process.env.port); -没有主机参数。试着去做 npm start .

    同时检查 web.config iisnode.yml 它们是自动生成的,并且都是运行节点所必需的。

        2
  •  1
  •   John Bull    6 年前

    Here is a good topic to start with . 直截了当地说:

    • 安装Azure CLI
    • az帐户显示(看看你是否在正确的订阅,如果你有很多)。如有必要,使用“az帐户集”进行切换
    • 然后,根据此说明创建资源组、服务计划和web应用。设置Node.js运行时
    • 在应用程序服务中,使用Kudu控制台(开发工具->高级工具刀片,选择“工具”->(从下拉菜单中选择Zip Push Deploy)