2012-09-29 183 views
23

有一些基于云的托管服务,用于nodejs out there,它们看起来相对较新,有些仍处于Beta版。NodeJS托管托管与VPS

承载nodejs应用程序的另一个途径是在像Linode这样的VPS上设置堆栈。

我想知道这两种部署之间的基本区别是什么。 在选择一个而不是另一个时应考虑哪些因素?

考虑到这些服务年轻多少,哪一种更适合生产。

要清楚我并不是要求选择提供者,而是要决定是否托管在受管理的节点上特定的托管或旧的自我设置VPS上。

+1

如一些人所指出,即使你去与主机托管服务提供商,这是值得经历一下子明白发生了什么事情。希望我的链接可以帮助... – bryanmac

+0

谢谢你,我相信我现在会用Linode VPS,所以你的链接将会非常有帮助,尽管我希望能找到一些不那么明显的缺点和优点,专门用于托管解决方案,我现在。 –

+0

行 - 有道理。优点/缺点增加了一些。如果我想到更多,我会跟进... – bryanmac

回答

34

使用是大部分手离开服务的一个 - 你写你的代码,并让他们担心管理中,让你的过程了,创造了出版渠道,修补操作系统,等等

相比之下,拥有自己的虚拟机可以提供更多的控制权,但可以提供更多的前期投入和持续时间投入。

另一个考虑因素是一些托管商和云提供商提供专有技术或独特的技术变体。他们有理由为他们提供价值,但这确实意味着如果您想切换云提供商,这可能意味着您必须重写代码,部署脚本等......另一方面,使用标准操作系统的虚拟机作为基准很通用。如果您自动化/编写脚本/记录虚拟机的配置,并且您的代码保持通用,那么您的选项将保持打开状态。如果您确实依赖于专有云技术,那么最好将它从一个接口后面抽象出来,这样它就是一个分离的组件,并且不会散布在整个代码中。

我已经完成了两个。我最近做了VM路径,主要是因为我想学习经验。我只好:

  • 从云提供商那里获取VM
  • 我不得不更新和修补操作系统
  • 我不得不安装和配置的git作为发布渠道
  • 我不得不写一些脚本并使用像永远保持它运行的东西
  • 我必须配置反向http代理来让它运行多个站点。
  • 我不得不配置DNS的云服务提供商,为混帐等开放端口...

这样的例子不胜枚举。最后,它让我花费更多的时间,而不是编码,但我学到了更多的东西。如果那些对你很重要,那就试试看吧。如果您想专注于编写代码,那么节点托管提供商可能会为您服务。

最后,我也有更多的选择 - 我想添加第二个网站。我添加了en入口到我的反向代理服务器,附加了我的脚本以启动另一个应用程序永远,瞧,另一个网站。更多的控制。之后,我想尝试mongodb - 简单 - 安装它。

成本方面,它们大致相同,但如果您开始托管多个站点以及许多其他软件包(如数据库等),则虚拟机可能开始变得更便宜。

Nodejitsu open sourced他们的工具,如果你自己做,它也使它更容易。

如果你自己做,这里的一些链接,可以帮助您:

保持服务器最多:

https://github.com/nodejitsu/forever/

http://blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever

https://github.com/bryanmacfarlane/svchost

新贵和monit的 通用自动启动并通过监控重启O形环

http://howtonode.org/deploying-node-upstart-monit

群集节点 运行每一个核心过程

http://nodejs.org/docs/latest/api/cluster.html

反向代理

https://github.com/nodejitsu/node-http-proxy

https://github.com/nodejitsu/node-http-proxy/issues/232

http://blog.nodejitsu.com/http-proxy-middlewares

https://github.com/nodejitsu/node-http-proxy/issues/168#issuecomment-3289492

http://blog.argteam.com/coding/hardening-node-js-for-production-part-2-using-nginx-to-avoid-node-js-load/

脚本安装

https://github.com/bryanmacfarlane/svcinstall

Exit Shell Script Based on Process Exit Code

发布网站

Using git to publish to a website

14

恕我直言,设置自己的堆栈的最大缺点是您需要管理诸如使Node.js运行forever,将其作为守护程序启动,将其置于反向代理(如Nginx)之后,等等。 ..关于Node.js的伟大之处 - 使一个Web服务器成为一个单线程 - 是生产就绪系统的最大缺点之一。

此外,您还有管理和更新以及自己保护服务器的所有问题。

托管服务器更容易:通常这是一个git push就是这样。缩放?简单。复制?简单。 ...?简单。所有的点击几下。

托管服务器的缺点是您无法调整环境。好的,你可以选择运行哪个版本的Node.js和/或npm,但就是这样。您无法控制安装的第三方软件。你无法控制操作系统。您无法控制服务器所在的位置。等等...

当然,有些托管服务允许您访问这些东西中的一部分,但很少有托管服务器支持所有这些东西。

所以,基本上关于Node.js的问题是一样的相互技术:这是一个亲VS个人主义,定价,可伸缩性,可靠性,知识,CON ...

我个人选择了去与托管人:我节省的时间和精力轻松胜过缺点。提醒你:亲自为我服务。

这个问题需要单独回答。