为什么node.js可以';你不能在共享主机上运行吗?

为什么node.js可以';你不能在共享主机上运行吗?,node.js,shared-hosting,Node.js,Shared Hosting,第一件事:我搜索了所有已知的网络托管公司,寻找nodejs的共享托管,但没有找到任何人。然后我知道nodejs不能在共享主机系统上运行。我想知道为什么 第二件事:我是一个预算正常的普通人。选择vps或指定服务器或云主机可以使节点运行,但与PHP共享主机服务相比,它超出了我的零用钱范围,因此我应该学习node.js吗?部署node.js应用程序还有其他方法 您可以使用PaaS服务,如、等。节点不像大多数服务器那样工作。使用IIS和Apache,有一台服务器运行多个站点,这有助于共享环境。使用Nod

第一件事:我搜索了所有已知的网络托管公司,寻找nodejs的共享托管,但没有找到任何人。然后我知道nodejs不能在共享主机系统上运行。我想知道为什么


第二件事:我是一个预算正常的普通人。选择vps或指定服务器或云主机可以使节点运行,但与PHP共享主机服务相比,它超出了我的零用钱范围,因此我应该学习node.js吗?

部署node.js应用程序还有其他方法


您可以使用PaaS服务,如、等。

节点不像大多数服务器那样工作。使用IIS和Apache,有一台服务器运行多个站点,这有助于共享环境。使用Node,您可以运行自己的服务器,因此您可以在计算机上共享资源

我不能告诉你这是否值得学习,因为我不知道你的动机,但如果你选择去那里,它可以扩大你的职业机会,并扩大你的技能

这里有几个低价位的主机选项


理论上可以,但实际上,这取决于托管提供商是否有这样的基础设施

与传统的web平台相比,Node是一个自我维持的平台。以PHP为例(例如),它运行在apache或nginx(或任何其他)的脚本语言上,PHP本身只是一些库的脚本语言,这些库在逻辑实现方面做得不多,需要web服务器解决方案。Web服务器创建套接字来监听特定端口的流量,它将发挥自己的魔力,并将执行PHP来处理请求

同时node.js创建自己的套接字,并将其绑定到自己的端口。这给了它更多的底层访问,因此它本身就是web服务器。您无法绑定到一个端口和两个应用程序,因此它已不可扫描。
有些服务(web服务器)允许您创建代理以将流量路由到node.js进程,但在某些情况下效率不高,共享主机不提供此类功能

由于node.js仍然相当年轻,而且与之不同,它仍然没有影响到大多数共享托管服务。有一些可用的在线服务可以以“共享”的方式托管node.js应用程序


此外,您可以在AWS上免费租用EC2微实例(免费层)一年,这为您提供了大量的可能性和时间来尝试和测试不同的东西。您将获得半专用系统,在那里您可以做几乎任何事情(安装软件、修改操作系统配置等),共享主机不允许您这样做。

查看Heroku。对于简单的低流量应用程序,它们是免费的,并且可以轻松扩展以获得更多流量(增加成本)。此外,您可以使用Git进行部署,因此更新内容非常简单。

其他优秀的节点应用程序托管选项包括Joyent的SmartOS和Microsoft Azure。两者都有免费试用期

Azure可以成为node.js的一个很好的学习平台,因为您可以在Windows Server、Ubuntu Linux或Azure的特殊“网站”共享部署方案中托管节点应用程序

另一个成本效益高的节点应用程序托管解决方案是Azure的“网站”方法-大约每月10美元。不利的一面是,您必须使用他们的共享环境,该环境通过IIS托管您的节点应用程序。实际上,这对我来说很有效,但您受到的限制是,当Node在Windows上运行时,您不能从Node使用某些Linux功能,并且您自己也不会了解如何配置Node服务,这对您来说可能很重要,也可能不重要。(注意:如果您想从本地GIT存储库部署应用程序,Azure的GIT部署过程非常有效。还要注意的是,当节点应用程序在一段时间内未使用时,NodeIIS将停止该应用程序,并且在收到应用程序请求时,它会自动重新启动。)

Joyent的SmartOS平台是一个Linux操作系统,为托管node.js应用程序进行了优化。他们有令人印象深刻的可靠性和性能以及伟大的诊断工具


到目前为止,我找到的最具成本效益的解决方案是DigitalOcean,这是一个非常棒的新托管解决方案,在这里,您只需每月5美元就可以托管一个完整的Linux虚拟机!到目前为止,我在那里很幸运地托管了节点应用程序:

a2hosting允许Node.js在共享托管中。但在那里没有经验。通过web搜索找到


更新:使用DigitalOcean。私人VPS

甘地提供了这一点——是的,它可以!看看我的答案。试试这个解决方案。这个答案是错误的。您可以在Nginx和Apache上运行Node.js。事实上,这两台服务器都经常用于反向代理到节点的应用程序。例如,请参阅将nginx与节点一起使用时的writeup。PHP在共享主机上更常见的原因是它已经存在了很长时间。Node于2009年发布,PHP自1995年以来一直存在。在这段时间里,主机有时间实现支持,也没有太多理由费心支持其他语言。你没有抓住问题的关键。重点是:共享主机+Node.js。“共享主机”指的是任何经典的共享主机,如godaddy等。它们不允许您在共享空间上安装任何软件堆栈。它们只提供现成的解决方案。解释原因就在上面。虽然你说的是不同的故事,事实上共享主机平台已经将node.js作为其产品列表的一部分,它们可以提供服务。但仍有很长的路要走。这和代理无关。完全不同的故事。我并不是说Node.js可以在共享主机上运行,现在显然不是这样。我是说答案中的解释(它不能在Nginx或Apache下运行)是错误的,因为它可以。Node.js并不是因为“创建自己的套接字”这样的原因而无法在共享环境中使用。