【问题标题】:how to run a node server in an azure virtual machine permanently?如何在 azure 虚拟机中永久运行节点服务器?
【发布时间】:2020-09-03 12:21:08
【问题描述】:

我构建了一个基于 Web 的移动应用程序(使用 react),并将其作为 Azure Web 应用程序托管。该网站连接到节点服务器,我使用 azure 虚拟机托管该服务器(我不知道这是否是最好的方法,也许我应该将其托管为 webapp 而不是 VM?)。

对于开发基于 Web 的移动应用并将其连接到云中的托管后端这一策略,我还是新手,所以如果这是一个微不足道的问题,我深表歉意。 我正在使用 websockets 将我的前端连接到节点服务器,然后我使用消息。我没有数据库,它是一个简单的应用程序。

我运行应用程序的步骤是:

  • 我使用 ssh 从笔记本电脑连接到 Azure VM
  • 使用node server.js 运行我的服务器
  • 当服务器运行时,我可以刷新我的网站,一切正常

现在,问题是我希望节点服务器一直运行。但是,我注意到当我将笔记本电脑与虚拟机断开连接 (ssh) 时,服务器停止运行。所以我发现自己每次想使用该应用程序时都会执行这些步骤(使用 ssh 连接到 VM 并手动运行服务器)。

有没有办法让节点服务器一直运行而不会停止?另外,由于我是新手,这是部署前端和后端的正确方法吗?我假设我不能在同一个 Azure webapp 中同时部署前端和后端,还是我错了?

【问题讨论】:

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


    【解决方案1】:

    (由于您的部分问题是围绕“有更好的方法吗?”,我会回答这个问题,而不是在您当前的虚拟机托管中解决问题:))。

    为了让您的应用程序充分利用云,PaaS 始终优于 IaaS。在这种情况下,除非您有任何特定原因,否则您应该将后端 Node 应用程序部署在另一个 App Service(又名 Web 应用程序)中。或者,如果您的节点应用程序有一小部分 API,您也可以考虑 Azure Function,但需要更新代码。两者都支持多个平台,包括 node.js。既然你提到你正在为你的 react 移动应用程序使用 Web App,所以我希望你已经对它有点熟悉了。此外,由于 Azure Function 需要更改代码,因此这种情况下首选 Web App。

    注意:我暂时省略了其他解决方案,例如 AKSService Fabric 等,因为目前我们正在讨论仅部署单个应用程序的问题,此时这些将是矫枉过正。

    还有,你的意思

    我假设我不能在同一个 Azure webapp 中同时部署前端和后端,或者我错了吗?

    是的,从技术上讲,您可以,根据您的情况,如果两者都在同一个平台上(如本例中的 Node),则通过“捆绑”到单个应用程序中。尽管是否应该这样做将是一个固执己见的答案。但即使您将它们分开,您仍然可以利用单个 App Service Plan 来节省成本。因此,像现在这样保持分离是我建议保持“关注分离”的方法。

    【讨论】:

    • 感谢您的提示。一个问题。正如我所说,我现在将我的节点服务器托管在一个虚拟机中,并且我正在通过 websockets 将我的前端连接到它。如果我将节点服务器切换到 webapp 而不是 VM,我可以使用 websockets 访问它吗?在这种情况下,服务器 IP 地址和端口会是 webapp 的 url 吗?我的意思是 12.33.21.22 作为 IP 和 80 作为端口,我是否应该在我的前端代码中复制 webapp 的 url,例如 example.azurewebsites.net 和端口 80,以便它与节点服务器连接?
    • Yes Web App 支持websocket(默认关闭,需要开启)pasteboard.co/JpnD6uf.png
    • 谢谢!如果是这样,那么这将解决我的问题。因为 webapp 将永远运行,这就是我所需要的。我对 VM 的问题是我需要手动连接和运行我的服务器,但如果它作为一个 webapp 工作,那将是完美的,因为它会在我部署后自动运行。我会尝试并发布反馈
    • 当然,继续发布,如果有进一步的问题,请告诉我。祝你好运。
    • 令人惊讶的是,这确实奏效了,但我收到了警告(关于 SSL)。这是正确的方法吗?我的意思是使用网络应用程序。当我想到它时,我只需要nodejs服务器来连接到另一个后端服务器的websocket。我在 webapp 中不需要任何 HTML/CSS,因此我问自己这是否是正确的方法
    猜你喜欢
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2021-04-24
    • 2017-03-20
    • 2014-11-06
    相关资源
    最近更新 更多