nodejs out there有一堆托管的基于云的托管服务,它们看起来相对较新,有些还处于测试阶段。
托管nodejs应用程序的另一种方法是在Linode之类的VPS上设置堆栈。
我想知道这两种部署之间的基本区别是什么。在选择一个而不是另一个时,应该考虑哪些因素?
考虑到这些服务是多么年轻,哪一个更适合生产。
需要说明的是,我并不是要求选择提供商,而是要决定是托管nodejs特定的主机,还是托管老式的自行设置的VPS。
发布于 2012-09-29 21:08:05
使用其中一个服务在很大程度上是不需要干预的--你编写代码,让他们操心管理盒子,保持你的进程,创建发布通道,修补操作系统,等等。
相比之下,拥有自己的虚拟机可以给您更多的控制,但需要更多的前期和持续的时间投入。
另一个考虑因素是一些托管商和云提供商提供专有的或不同的技术变体。他们有他们的理由,他们提供了价值,但这确实意味着如果你想要更换云提供商,这可能意味着你必须重写代码,部署脚本等。另一方面,使用带有标准操作系统的VM作为基准是非常普遍的。如果您自动化了/script/document虚拟机的配置,并且您的代码保持通用,那么您的选择仍然是开放的。如果您确实依赖于专有的云技术,那么最好将它抽象到接口后面,这样它就是一个解耦的组件,而不是散布在您的代码中。
我都做过了。我最近做了VM路径,主要是因为我想要学习体验。我不得不:
<代码>H19我必须配置反向http代理才能使其运行多个站点。<代码>H210<代码>H111我必须向云提供商配置DNS,为git打开端口等...<代码>H212<代码>F213
清单不胜枚举。最后,它花费了我更多的前期时间而不是编码,但我学到了更多的东西。如果这些对你来说很重要,那就试一试。如果您想专注于编写代码,那么节点宿主提供程序可能适合您。
在它的最后,我也有了更多的选择--我想添加第二个站点。我添加了一个条目到我的反向代理,附加我的脚本,以启动另一个应用程序与永远,瞧,另一个网站。更多的控制力。在那之后,我想尝试一下MongoDB - simple - installed它。
在成本方面,它们大致相同,但如果你开始托管多个站点,并使用许多其他包,如数据库等,那么虚拟机可能会开始变得更便宜。
Nodejitsu open sourced他们的工具,这也使它更容易,如果你自己做。
如果你自己做,这里有一些可能对你有帮助的链接:
保持服务器正常运行:
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
Exit Shell Script Based on Process Exit Code
发布站点
发布于 2012-09-29 21:04:51
我知道,设置自己的堆栈最大的缺点是你需要管理一些事情,比如让Node.js运行forever,作为守护进程启动它,将它带到一个反向代理后面,比如Nginx,等等。当涉及到生产就绪系统时,Node.js的最大缺点之一就是它的伟大之处--使启动web服务器成为一行程序。
此外,您还可以自己管理、更新和保护您的服务器。
对于托管者来说,这要容易得多:通常是一个git push,仅此而已。伸缩?很简单。复制?很简单。...?很简单。只需点击几下即可完成。
主机的缺点是你不能调整环境。好的,你可以选择运行哪个版本的Node.js和/或npm,但仅此而已。您无法控制所安装的第三方软件。你无法控制操作系统。您无法控制服务器所在的位置。以此类推。
当然,有些主机允许您访问其中的一些内容,但很少有主机支持所有这些内容。
因此,关于Node.js的问题基本上与其他技术相同:它是个人主义、定价、可扩展性、可靠性、知识等方面的利弊。
我个人选择了一个托管者:我节省的时间和精力很容易超过缺点。提醒你:就我个人而言。
这个问题需要单独回答。
发布于 2021-02-20 03:58:56
使用Docker是在单个Linux VPS上简化设置的另一种方式。有了Docker,开发和生产设置都更快、更健壮、更安全。
设置更快、更健壮,因为您将立即部署就绪的Node.js映像,而无需运行任何安装脚本。而且它会更安全,因为内部依赖关系,例如数据库,可以完全对外部世界隐藏,并且只能从Docker内部网络访问。最重要的是,Docker大大简化了底层操作系统和Node.js运行时的升级过程。
设置Node.js Docker环境有两种方式。第一个-遵循here发布的说明,如何将您的应用程序与Docker一起部署,并在需要时与数据库一起部署。该指南给出了开发设置的说明,生产设置将与此类似。
另一种方法是部署官方Node.js docker镜像,并将应用程序代码作为卷或文件夹挂载到Node.js镜像。这将允许继续更新Node.js镜像,而无需重新构建和重新部署应用程序。这种方法通过Docker镜像的安全补丁解决了long-standing problem。
为了帮助在单机上安装Docker,你可以使用Abberit Admin Panel。只需单击一个按钮,它就可以为您设置Node.js环境,如果您需要的话,还可以包括数据库。该工具是免费的,您可以在完成初始设置后将其关闭。另一方面,如果您后来决定降低生产的维护税-您可以迁移到托管服务,而无需对应用程序进行任何更改。
免责声明:我是Abberit的创始人之一。
https://stackoverflow.com/questions/12652863
复制相似问题