Articles of 生产环境

如何通过sudo在生产模式下运行node.js Express?

我正在使用节点版本为.0.6.5的npm包express版本2.5.2。 我似乎在Debian 4.4.5上运行bash版本4.1.5。 我试图在生产模式下运行我的服务器,但它仍然在开发模式下运行。 我在我的bash shell中运行这些命令: $ export NODE_ENV=production $ echo $NODE_ENV production $ sudo echo $NODE_ENV production $ sudo node bootstrap.js 我在bootstrap.js里有这个代码: var bootstrap_app = module.exports = express.createServer(); //… console.log(bootstrap_app.settings.env); 这里是我看到打印标准: development 这是我的用法,或我的系统的问题? 编辑:感谢ThiefMaster他正确地确定这个问题源于我的运行节点作为根。 ThiefMasterbuild议使用iptables从端口80转发到非特权端口,但是我的系统给了我一个错误。 将此讨论移到superuser.com或serverfault.com(请点击链接)

Node.js,在app.configure中expression和使用开发与生产

什么是最简单的方法让expression知道我在什么环境? 例如,我想要做下面的连接到redis取决于我在什么env。这可以从命令行完成吗? app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); var r = require("redis").createClient(6379,'127.0.0.1'); }); app.configure('production', function(){ app.use(express.errorHandler()); r = redis.createClient(6379,'46.137.195.230', { detect_buffers: true }); });

部署生产Node.js服务器

我已经写了一个Node.js应用程序,我正在寻找它在我们的一台生产机器上运行。 这似乎是一个相当普遍的要求,但我找不到一个适当的解决scheme。 是否没有build立生产Node.js应用程序的解决scheme? 该应用程序很简单(<100 LOC),但需要非常高效,可靠,可连续运行多年,无需重新启动。 它将在一个大型网站上运行,每秒钟几十个连接。 (该应用程序不被用作networking服务器,它只有一个JSON API) 以下是我考虑的方法,但我仍然不确定: 使用框架(如Express) 因为应用程序需要高性能,而且非常简单,所以以框架的forms添加膨胀是我想要避免的。 用nohup启动服务器 这里的主要问题是exception处理,我们(显然)不希望整个服务器因为exception而崩溃。 据我所知,在一个try {} catch {}循环中包装整个应用程序将无济于事,因为在解释exception之后,Javascript解释器处于不可预知的状态。 那是对的吗? 使用像永远的东西 我已经在我们的FreeBSD机器上安装了Forever,这是非常麻烦的。 它最终产生了无法从Forever中杀死的无尽进程。 我必须运行kill -9来让我的机器重新运行,并且我不觉得在Forever上运行一个生产应用程序太有自信了。 也似乎Upstart(类似的工具,但更通用)不会在FreeBSD上运行。 托pipe解决scheme(如Heroku,Rackspace,Amazon EC2等) 这可能是最简单的解决scheme,但我们已经有一个严重的硬件,我们的networking服务器的其余部分。 出于财务考虑,这是没有道理的。 一定有一些确定的解决scheme呢? 我错过了什么吗?