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
脚本安装
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人一起去:我省时省力胜过弊端。 请注意:对我个人而言。
这个问题需要单独回答。