当我启动基于node.js的站点时,是否有清单?

时间:2013-06-09 10:44:33

标签: node.js deployment express

我完成了使用node.js构建我的第一个站点,我很好奇是否有一个我应该在启动之前完成的所有事情的检查列表。在开发中,当我的数据库调用中不期望某些值时(使用Mongoose),我的站点将会死亡(例如节点段错误)。

我也会在已经安装了Apache的VPS上使用它,所以我能够同时运行两者还是我需要为此寻找其他东西?

基本上一旦它起来,我想继续保持它,并且我想知道在这之前我应该​​知道的任何标准预防措施。

谢谢!

2 个答案:

答案 0 :(得分:4)

我目前处于类似情况(即将在私有VPS上部署我的第一个应用程序),这是我提出的列表:

1-错误记录:我在这里使用了一个简单的WriteStream,没什么太花哨的。

var fs = require('fs');
//You might want to specify a path outside your app
var file = './log.log';
var logger = fs.createWriteStream('./log.log');
app.configure(function(){
    //...
    app.set(express.logger({stream:logger}));
    /...
});

2-使用Forever确保您的脚本将持续运行。是的,他们有很多其他解决方案(例如使用daemon),但我现在已经使用了一段时间,从来没有遇到任何问题。

3-考虑设置管理界面。这实际上是我的一个要求,所以我继续使用smog,这看起来非常好,特别是对于你的客户:)。

4-如果您永远使用,则可以使用Monit监控其状态。查看this blog post进行基本设置。

5-如果您使用的是Mongo,请考虑制定数据的备份策略。此页面为very good starting point


请注意,此列表不包含有关多应用,多机或多核支持的任何信息。

如果多应用支持感兴趣,nginx似乎是一个值得信赖的解决方案。 This (brilliant) SO answer会帮助您进行设置。

如果你有许多备用机器,node-http-proxy是由nodejitsu开发的,它允许你只暴露一台机器并反向代理其余的机器。

如果您正在寻找多核支持,cluster与节点捆绑在一起,那么您可以生成N个不同的进程(N是您拥有的核心数)并让它们监听共享端口。 / p>

而且,既然我们都喜欢听一个好听的故事,这里有一些关于nodejs / mongodb用于制作的帖子和所吸取的教训:
1- Lessons learned from launching i.TV
2- Using Mongodb for 2+ billion documents on craigslist

答案 1 :(得分:1)

鉴于Node.js不是像Apache或IIS这样的Web服务器,因此没有要遵循的配置设置清单。此外,鉴于您使用的模块和/或框架可能因您正在创建的项目而有很大差异,因此检查表总是会遗漏某些内容......特别是随着Node.js生态系统的不断发展和发展。

因此,我建议在回答您的问题时查看这些材料,无论您使用Node.js做什么,这些材料通常都很有用:

我担心你的应用会因“我的数据库通话中不期望某些值而死”。

Mongoose是一个很好的工具,因为它允许在单个字段上进行自定义数据验证,可以过滤掉不适合您已定义的模式的数据(保持文档一致),并且使用正确的设置可能会抛出错误有“坏数据”传递给它而不是将错误数据发送到数据库,还有更多......

我想知道你在做什么,一个未处理的错误使它通过Mongoose 通过任何回调函数,知道回调通常采用格式function(err, data)并提供交易的机会立即出错。