Node.js表达应用程序生产部署

MQ8*_*Q87 2 amazon-ec2 production-environment node.js express

假设我有一个nodejs + express + mongodb web应用程序,现在我想使用运行Linux发行版的AWS EC2机器上线(我使用的是ubuntu服务器14.04,你会使用不同的东西吗?).

将体面的生产环境纳入单层而不是通常在开发环境中使用的基本步骤是什么?

你会使用http服务器(nginx,apache,..)吗?你的防火墙配置是什么?在上市之前你还会考虑什么(nodejs和express配置等)?你会使用什么工具(例如永远)?您会考虑哪些其他系统配置?

这个问题的重点不在于性能,不考虑高水平的机器负载和应用程序扩展.

Tom*_*Tom 5

我已经在AWS上为几个商业应用程序实现了生产环境,最近使用Node/Express/Mongo.通过大量的调查,反复试验和一些脚本编写,我已经确定了一个适合我的配置.

以下是我使用的服务/实用程序的摘要.通过设计,一切都可以广泛使用并且有详细记录,因此您可以毫无疑问地找到有关如何根据您的特定要求配置每个问题的讨论.

AWS服务

  • EC2安全组:主防火墙
  • ELB/Autoscaler(可选):负载均衡; 根据负载添加/删除实例; 启用S​​SL
  • Cloudwatch:监控实例可用性
  • SNS:指定Cloudwatch警报的通知方法(电子邮件/短信)

OS /公用事业

  • Ubuntu:最新的LTS版本,目前为14.04; 配置为使用cron/apt-get进行每周自动更新
  • nginx:逆向代理到节点进程; 50x错误处理; 服务/公共档案; 如果不使用ELB,则启用SSL
  • Upstart:启动/停止应用程序进行维护; 重生应用程序,如果它崩溃(永远的ala); 在重新启动时启动应用
  • Monit:监视节点进程以延长中断(处理新手重新生成失败); 监控文件系统的可用空间; 监控mongo进程

我使用标准的apt-get版本的node,express和npm,没有特殊的配置设置.为了部署应用程序更新,我编写了一个检查github分支的cron脚本,因此通过提交到该分支自动触发发布新版本.

当然还有更多的选择,而这些选择绝不是决定性的......换句话说,YMMV.但是,根据我的经验,这些配置相当容易,工作可靠,保持平稳运行,并在出现需要您注意的问题时快速通知您.