NodeJS托pipe托pipe与VPS

有一堆托pipe的云托pipe服务的nodejs 在那里看起来相对较新,有些还在testing阶段。

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

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

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

要明确我不是要求select一个提供商,而是要决定是否托pipe在托pipe节点上特定的托pipe或旧的自我设置的VPS。

使用其中一项服务大部分都是由您来完成 – 您编写代码,并让他们担心pipe理方块,保留过程,创build发布渠道,修补操作系统等等。

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

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

我做了两个。 最近我做了VMpath,主要是因为我想学习经验。 我不得不:

  • 从云提供商处获得虚拟机
  • 我不得不更新和修补操作系统
  • 我不得不安装和configurationgit作为发布渠道
  • 我不得不写一些脚本,像永远使用的东西,让它继续运行
  • 我不得不configuration反向http代理来让它运行多个站点。
  • 我必须configuration与云提供商的DNS,打开端口的混帐等…

名单继续。 最后,我花了更多的时间,而不是编码,但我学到了更多的东西。 如果那些对你很重要,那就试试看吧。 如果您想专注于编写代码,那么节点托pipe提供商可能会为您提供服务。

最后,我还有更多的select – 我想添加第二个网站。 我添加了en入口到我的反向代理,追加我的脚本启动另一个应用程序与永远,瞧,另一个网站。 更多的控制。 之后,我想尝试mongodb – 简单 – 安装它。

成本方面他们大致相同,但如果你开始托pipe多个网站,像数据库等许多其他包,那么虚拟机可以开始变得更便宜。

Nodejitsu开源了他们的工具,如果你自己做的话,这也使得它更容易。

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

保持服务器:

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

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

https://github.com/bryanmacfarlane/svchost

Upstart和Monit通用自动启动并通过监控重启

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

退出基于进程退出代码的Shell脚本

发布网站

使用git发布到网站

恕我直言,build立自己的堆栈最大的缺点是你需要pipe理的东西,如使Node.js forever运行,启动它作为一个守护进程,把它背后的反向代理,如Nginx,等等…伟大关于Node.js的一些事情 – 使一个Web服务器成为一个单线程 – 是生产就绪系统的最大缺点之一。

另外,你还有pipe理和更新以及自己保护服务器的所有问题。

这对于主机来说是非常容易的:通常这是一个git push ,就是这样。 缩放? 简单。 复制? 简单。 …? 简单。 所有在几个点击。

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

当然,有些托pipe服务器允许你访问这些东西,但很less有托pipe服务器支持所有这些东西。

因此,基本上Node.js的问题与其他技术相同:它是个人主义,定价,可伸缩性,可靠性,知识等的一个职业VS.

我个人select了与托pipe人一起去:我省时省力胜过弊端。 请注意:对我个人而言。

这个问题需要单独回答。