首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >部署生产Node.js服务器

部署生产Node.js服务器
EN

Stack Overflow用户
提问于 2011-12-05 22:02:51
回答 6查看 60.9K关注 0票数 75

我已经写了一个Node.js应用程序,我希望让它在我们的一台生产机器上运行。这似乎是一个很常见的请求,但我找不到一个合适的解决方案。是否还没有用于部署生产Node.js应用程序的成熟解决方案?

该应用程序很简单(<100LOC),但需要非常有效,可靠,可以连续运行数年而无需重启。它将在一个大型站点上运行,每秒有几十个连接。(该应用程序不用作has服务器,它只有一个JSON API)

以下是我考虑过的方法,但我仍然不确定:

使用框架的(例如,Express)

因为应用程序需要高性能,而且非常简单,所以以框架的形式添加臃肿是我想避免的。

使用 nohup启动服务器

这里的主要问题是异常处理,我们(显然)不希望整个服务器因为异常而崩溃。据我所知,将整个应用程序包装在try {} catch {}循环中不会有什么帮助,因为在发生异常后,Javascript解释器会处于不可预测的状态。对吗?

使用类似Forever的

我已经在我们的一台FreeBSD机器上安装了Forever,它有很多buggy。它最终产生了无穷无尽的进程,这些进程永远不会被杀死。我不得不运行kill -9来找回我的机器,我对在Forever上运行生产应用程序没有太大的信心。似乎Upstart (类似的工具,但更通用)不能在FreeBSD上运行。

托管解决方案(例如Heroku、Rackspace、亚马逊EC2等)

这可能是最简单的解决方案,但我们已经有了用于其余we服务器的重要硬件。出于财务方面的考虑,这没有任何意义。

当然,对此一定有一些既定的解决方案?我是不是遗漏了什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-12-05 22:39:01

  • ,除非你想自己处理会话、cookie、中间件等,否则你真的应该使用一个框架(我推荐像Express这样的框架,因为它已经经过了战斗测试)。Express实际上是用nohup来启动服务器:你不应该这样做,只要用常规的“light.
  • Starting”命令启动它即可。Express还将路由包装在try-catch中,这样您的服务器就不会在路由中崩溃。然而,如果你的服务器确实有一个严重的问题,你不应该害怕重启它(此外,如果你至少有2-3个进程,那么只有一个进程会死掉,所以至少还有1-2个进程,用户不会有任何感觉)。我个人更喜欢操作系统级别的解决方案,比如UpstartMonit.
  • Hosting解决方案:既然你已经有了自己的重要硬件,就不需要再花钱买别的东西了。只需使用负载均衡器(可能是nginx或node-http- proxy )来代理内容。
票数 41
EN

Stack Overflow用户

发布于 2011-12-05 22:30:04

参见Hosting Node Apps

本教程将指导您设置一个服务器,该服务器可以为服务器端JavaScript应用程序托管node.js应用程序。现在,node.js托管选项归结为运行与web服务器对话的节点守护进程。大多数web服务器都可以代理连接到不同的端口,所以你可以使用Apache或nginx来做这件事。

票数 15
EN

Stack Overflow用户

发布于 2016-12-08 19:59:37

尝试使用pm2它是简单直观的命令行界面,可以通过NPM安装。只需使用PM2启动您的应用程序,您的应用程序就可以处理大量的流量

PM2 Offical Link

How to set up a node js application for production using pm2

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8386455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档