正确的工作stream程部署节点应用程序

我在过去的几个月里一直在学习Node,现在有一个复杂的应用程序。 我的问题是,我想使它可重复使用,因为我是一个完整的noob,我从一开始就没有想到这一点。

我拥有的 :

一个复杂的节点/快速应用程序作为守护程序与pm2一起运行。

  • 大量的subprocess脚本,一些在Node中,一些使用casperjs / phantomjs

  • 数据库凭证的configuration文件,服务器端口等

  • 许多npm的依赖关系,一些为应用程序本身,一些只用于subprocess。 应用程序本身运行良好,每条path都存储在configuration文件中,因此部署不应太难。

  • package.json文件中的所有npm依赖关系

我想要做什么:

  • 将应用程序保存在GIT仓库中,以便在EC2实例上快速设置。
  • 安装pm2,phantomjs / casperjs,所有node_modules,并以简单的方式创build应用程序的树状结构(包括一些用于应用程序创build文件的空文件夹),这样,不了解应用程序的人就可以得到它跑得快

我的问题 :

  • 我需要将node_modules添加到我的git仓库吗?

  • 我怎样才能以最简单的方式整合应用程序的部署,安装依赖和安装pm2,幻像和casper? 我不介意写一个脚本,但我不知道从哪里开始或最佳实践。 我在网上看到的大多数是关于nodejitsu / heroku,不适用。

我的缺点:

  • Git新手
  • 没有遵循任何发展的指导方针,因为这一切都是从玩具项目开始的。

希望我的问题是可以理解的,谢谢大家!

编辑:

到目前为止我有:

  • 阅读Git的初学者:明确的实践指南
  • 在github上做了一个回购,克隆它,并使用npm install来获得我的应用程序依赖。

仍试图弄清楚如何包含外部依赖关系。

一种部署方式是添加命令的安装列表:

  1. 克隆库
  2. 安装依赖项apt-get install npm ...
  3. 安装节点全局模块npm install -g pm2
  4. 安装节点依赖关系npm installnpm update
  5. config.example.json复制到config.json并将其更改为您的需要
  6. 启动应用程序pm2 index.js

node_modules文件夹不应该被添加到git仓库。 你应该把你所有的项目节点依赖关系添加到package.json文件中,而npm install / npm update应该完成剩下的工作。

您可以使用Capistrano轻松完成所有的部署任务。 它是用Ruby编写的,但是可以用它来部署任何你想要的,包括Node.js应用程序。

你可以find很多的例子和集成模块 。