【问题标题】:How to publish a Node.js Server online so that it is always accessible by an outside application如何在线发布 Node.js 服务器,以便外部应用程序始终可以访问它
【发布时间】:2024-05-18 02:55:02
【问题描述】:

我到处寻找解决此问题的方法,但无论出于何种原因,我都找不到关于如何执行此任务的明确答案。

我用 node.js 构建了一个非常简单的服务器,它从网站 API 访问两个数字并将它们输出到我计算机上的 localhost 端口,如下所示:

我的问题是我怎样才能使用我的服务器并使其可供应用程序访问,而无需进入命令行并运行服务器文件?有没有办法可以在线而不是本地托管它,以便我可以分发应用程序并且任何拥有该应用程序的人都可以从该服务器中提取?完成这项任务的最佳方法是什么?

【问题讨论】:

  • 你要么为你的家庭互联网连接购买一个静态 IP 地址,然后在你的家庭防火墙上打一个洞(不推荐)并通过 IP 地址访问它,要么你找到一个支持节点的托管站点。 js 应用程序,你付钱给他们来托管你的服务器,并可能购买一个可以连接到你的 IP 地址的域。仅供参考,您可能希望修复您的 onRequest() 处理程序,使其仅在特定 URL(例如 /getStatus)上运行,以便您将来可以添加其他 URL,因此如果浏览器访问您的服务器,您的请求处理程序不会当浏览器试图获取图标时运行。
  • 您可以每月花 5 美元从数字海洋获得一个虚拟机,而从声誉较差的地方获得的虚拟机则更低,每年只需 20 美元

标签: javascript node.js http server localhost


【解决方案1】:

问题 1:如何获取我的服务器并使其可供应用程序访问,而无需进入命令行并运行服务器文件?

要启动节点服务器,您将始终需要使用控制台。如果您不习惯,是时候开始了:)。 您不仅将其用于节点服务器,还将用于管理(几乎)世界上的每台服务器。

问题 2:有没有办法可以在线托管而不是本地托管?

nodejs 托管平台有很多,可以选择PaaS 解决方案或IaaS 解决方案(AWS EC2Digital Ocean 等)。可能是启动 ar PaaS 服务的最简单方法,在此 blogbost 您将找到一个很好的 PaaS 托管服务提供商列表。其中一些有免费计划。

【讨论】:

  • IIS/win 服务器并不总是从命令行管理,这可能是人们仍然购买它们的唯一原因。
  • 是的,我知道,但迟早,如果您在 ISS/win 上运行生产服务器,您将需要控制台,也许只是用于 ping 命令,但您仍将使用它: D
【解决方案2】:

Heroku 可能是开始部署应用程序的最简单方法之一:https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction

但是,如果您不熟悉 git,Microsoft Azure Webapps 也是另一个不错的选择:https://tryappservice.azure.com/

他们都提供免费计划,可以让您快速上手!

【讨论】:

    【解决方案3】:

    看看Heroku。他们有免费套餐(有限制)和爱好套餐,每月 7 美元。

    【讨论】:

      【解决方案4】:

      我已经通过 Amazon AWS 实现了这一点,他们在有限的时间内提供免费选项,但仍然很棒,因为您可以完全控制控制台,在云上安装机器时应该小心,您有很多在线指南供您参考可以按照步骤进行操作,this 例如有分步信息,尝试按照步骤操作,您将能够运行您的应用程序并从任何公共网络访问它。

      【讨论】: