部署/构建/制作web应用的基础是什么?



我现在对制作web应用程序很满意。我在后端使用NodeJs堆栈,通常在前端使用相当数量的Javascript。我真正不了解的是部署过程。

典型的部署流程是什么?

根据我在阅读中收集的信息,部署/构建过程可以包括以下几个任务:

  • 通过单元测试套件
  • 连接脚本和CSS文件
  • 版本号你的应用
  • 跟踪模块依赖 (node_modules)
  • 推送到远程仓库(GitHub)
  • 指示'暂存'服务器拉下最新的repo
  • 指示'生产版服务器拉下最新的repo


这一切让我有点不知所措。我不知道我是否应该在我自己的项目中进入这种细节水平,这似乎是很多工作!我正在使用Sublime Text 2 IDE,它似乎有一个构建脚本过程,这是合适的吗?如何协调所有这些独立的任务?我想象理想情况下,他们会在一个开关的轻弹下运行。

抱歉这么多问题,但我需要知道人们是如何学习类似的原则的。我的一些要求可能是特定于NodeJS的,但我相信无论你选择哪种堆栈开发,过程都是相似的。

首先,让我们将任务分成两部分:前端后端内容。对于两者,你都想要某种构建系统,但它们的目标和范围却大不相同。

对于前端,您希望您的源代码尽可能小;连接/缩小JavaScript, CSS和图像。我的一个同事写了一个"编译器",Assetgraph,来为你做这件事。它有一个比较复杂的学习曲线,但它对你的代码来说确实很神奇(我们的开发构建通常是20兆,生产是50万)。

对于后端,您希望包含某种易于管理的包。我们将我们的东西重新打包到debian-packages中。只要正确地连接了makefile,您就可以免费获得许多无聊的构建和部署时的东西。这是我的(在npm 1.0之前)Debianizing节点程序。我在NPM和Github上看到过其他的方法,但我还没有研究过它们,所以我不能说它们的质量。

对于测试/搁置/部署,我们使用了一个相当复杂的Debian软件包存档、git钩子、jenkins服务器等组合。虽然我强烈建议使用平台的本机包管理器来推出内容,但它可能有点太多了。总而言之,我们通常自动部署分段(在每个git push上),或者半自动部署不稳定的代码库。生产部署总是显式完成的。

我使用asereje https://github.com/masylum/asereje

我最近在一篇博文中记录了我的nodejs部署过程:http://pau.calepin.co/how-to-deploy-a-nodejs-application-with-monit-nginx-and-bouncy.html

构建脚本听起来确实是个好主意。

构建脚本应该做什么?

  • 确保所有测试通过,否则立即退出
  • 连接你的javascript和css文件到一个单独的js/css文件,并缩小他们也
  • 增加版本号(除非你决定自己手动设置)
  • 推送到远程repo(通过git钩子指示登台服务器和生产服务器)

这至少是我的观点。

其他资源:

http://howtonode.org/deploying-node-with-spark
http://howtonode.org/deploying-node-upstart-monit
http://dailyjs.com/2010/03/15/hosting-nodejs-apps/
如何部署节点应用依赖

相关内容

最新更新