为什么node.js无法在共享主机上运行?

You*_*mon 58 shared-hosting node.js

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

第二件事:我是一个正常预算的人.选择一个vps或deicated服务器或云托管使节点运行,但与PHP共享托管服务相比,它超出了我的口袋金额范围,所以我应该学习node.js吗?

mok*_*oka 27

理论上它可以,但实际上它依赖于托管服务提供商来建立这样的基础设施.

与传统网络平台相比,节点是自我可持续的平台.对于PHP(例如),它使用apache或nginx(或任何其他)运行,而PHP本身就是脚本语言,其中一些库不会做很多逻辑实现,并且需要Web服务器解决方案.Web服务器创建套接字以侦听特定端口以获取流量,将执行自己的魔术并将执行PHP以处理请求.

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

由于node.js仍然相当年轻,而且不同,它仍然没有达到大多数共享主机服务.有一些可用的在线服务以"共享"方式托管您的node.js应用程序.

此外,您可以在AWS上免费租用EC2 Micro实例(免费套餐)一年,这为您提供了充足的可能性和时间来尝试和测试不同的东西.您将获得半专用系统,您可以在其中执行任何操作(安装软件,修改操作系统配置等等),其中共享主机不允许您这样做.

  • 这个答案是对的.您可以在Nginx和Apache之上运行Node.js. 实际上,这两个服务器经常用于反向代理节点应用程序.例如,请参阅使用nginx和节点[here](https://engineering.gosquared.com/optimising-nginx-node-js-and-networking-for-heavy-workloads)的说明.PHP在共享主机上更常见的原因是因为它的存在时间更长.Node于2009年发布,PHP自1995年以来一直存在.在这段时间内,主机有时间实现支持,并没有太多理由去支持其他语言. (13认同)
  • 你好@ slang800.你错过了这里的问题.重点是:共享主机+ Node.js. 通过"共享主机"意味着 - 任何经典的共享主机,如godaddy等.它们不允许您在共享空间上安装任何软件堆栈 - 它们只提供现成的解决方案.并解释为什么就在上面.虽然你所说的是不同的故事,实际上共享托管平台已经将node.js作为其产品列表的一部分,但他们可以为其提供服务.但它还有很长的路要走.与代理无关.完全不同的故事. (7认同)

小智 12

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


jh3*_*314 11

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

您可以使用PaaS服务,如Openshift,Heroku,AppFog,Paastor,dotCloud等.


Thi*_*tes 5

节点无法像大多数服务器一样工作。使用IIS和Apache,只有一台服务器运行多个站点,这使其适合共享环境。使用Node,您可以运行自己的服务器,因此您倾向于共享计算机上的资源。

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

这是低价格范围内的几个托管选项。

http://nodester.com/

https://www.nodejitsu.com/

  • 自2015年3月起,nodester仍无法解决,nodejitsu已折叠到GoDaddy中,不再提供节点PaaS (7认同)

Svb*_*ker 5

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

由于您可以在Windows Server,Ubuntu Linux或Azure的特殊“网站”共享部署方案中托管节点应用程序,因此Azure可以是node.js的绝佳学习平台。

http://www.windowsazure.com/zh-CN/develop/nodejs/tutorials/create-a-website-(mac)/

节点应用程序托管的另一种具有成本效益的解决方案是Azure的“网站”方法-每月约10美元。缺点是您必须使用它们的共享环境,该共享环境通过IIS托管您的节点应用程序。实际上,这对我来说效果很好,但是您的局限性在于,当它在Windows上运行时,您无法使用Node的某些Linux功能,并且您将不会学习如何自行配置节点服务。对您而言并不重要。(注意:如果要从本地GIT存储库中部署应用程序,Azure的GIT部署过程非常有用。另外请注意,NodeIIS在一段时间未使用时会停止您的节点应用程序,当节点应用程序停止使用时,它将再次启动对您的应用的请求进入。)

Joyent的SmartOS平台是针对托管您的node.js应用而优化的Linux操作系统。它们具有令人印象深刻的可靠性和性能以及出色的诊断工具。

http://wiki.joyent.com/wiki/display/jpc2/Developing+a+Node.js+Application

到目前为止,我发现的最具成本效益的解决方案是DigitalOcean,这是一款出色的新型托管解决方案,您可以以每月5美元的价格托管完整的Linux VM!到目前为止,我在这里托管Node应用程序非常幸运:https : //www.digitalocean.com/pricing


use*_*015 5

a2hosting 允许 Node.js 共享托管。但没有经验。从网络搜索中找到

更新:使用 DigitalOcean。私人 VPS

  • 非常积极的体验。请参阅使用 Apache 作为反向代理安装节点的说明:https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts (2认同)