【问题标题】:What are the basics of deploying/building/making a web app?部署/构建/制作 Web 应用程序的基础知识是什么?
【发布时间】:2011-12-08 11:51:55
【问题描述】:

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

什么是典型的部署过程?

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

  • 通过 unit-test 套件运行
  • 连接脚本和 CSS 文件
  • 版本编号您的应用
  • 跟踪模块依赖项 (node_modules)
  • 将其推送到远程存储库 (GitHub)
  • 指示“staging”服务器下载最新的 repo
  • 指示“生产”服务器下载最新的 repo


这一切都让我有些不知所措。我不知道我是否应该为我自己的项目进入这种详细程度,这似乎是很多工作!我正在使用Sublime Text 2 IDE,它似乎有一个Build Script process,这合适吗? 如何协调所有这些单独的任务?我在理想情况下想象它们会在轻按开关时全部运行。

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

【问题讨论】:

    标签: deployment node.js


    【解决方案1】:

    首先,让我们把工作分成两部分:前端和后端。对于这两者,您确实需要某种构建系统,但它们的目标和范围大不相同。

    对于前端,您希望源代码尽可能小;连接/缩小 JavaScript、CSS 和图像。我的一位同事编写了一个“编译器”Assetgraph 来为您执行此操作。它的学习曲线有些渗漏,但它对您的代码有很大的帮助(我们的开发构建通常约为 20 兆,生产 ~500 k)。

    至于后端,您需要包含、易于管理的某种捆绑包。我们将我们的东西重新打包到 debian-packages 中。只要 makefile 连接正确,您就可以免费获得很多无聊的构建和部署时间的东西。这是我的(NPM 1.0 之前的)Debianizing node programs。我在 NPM 和 Github 上看到了其他方法来做到这一点,但我没有研究过它们,所以我不能谈论它们的质量。

    为了测试/推动/部署,我们使用了相当复杂的 Debian 软件包存档、git-hooks、Jenkins-servers 和其他的组合。虽然我强烈建议使用平台的本机包管理器来推出东西,但它可能有点太多了。总而言之,我们通常自动(在每个 git push 上)部署 staging,或者为不稳定的代码库半自动部署。生产部署总是明确地完成。

    【讨论】:

      【解决方案2】:

      对于我使用asereje https://github.com/masylum/asereje的资产

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

      【讨论】:

        【解决方案3】:

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

        那个构建脚本应该做什么?

        • 确保所有测试通过,否则立即退出
        • 将您的 javascript 和 css 文件连接到一个 js/css 文件中并同时缩小它们
        • 增加版本号(除非您决定自己手动设置)
        • 推送到远程仓库(通过git hook 指示登台和生产服务器)

        这至少是我的看法。

        其他资源:

        http://howtonode.org/deploying-node-with-spark
        http://howtonode.org/deploying-node-upstart-monit
        http://dailyjs.com/2010/03/15/hosting-nodejs-apps/
        How to deploy node app depencies

        【讨论】:

          猜你喜欢
          • 2015-05-26
          • 2013-03-31
          • 1970-01-01
          • 2013-02-26
          • 1970-01-01
          • 2016-04-07
          • 2020-05-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多