Node.js:网站部署策略

时间:2013-03-02 16:26:29

标签: node.js web-deployment

我使用node.js开发网络应用和网站

但是当我想将应用程序部署到某个Pass时,我必须自己手动优化应用程序

喜欢

  • 将Sass编译为样式表

  • 将javascript文件合并在一起并将css文件合并在一起

  • 将它们复制到YUI压缩后,压缩后再将它们复制回来

  • 依此类推

这个工作流程让我感到不安,所以我的问题是,是否有一些工具或模块可以优化这个工作流程,或者自动完成这项工作

你的部署策略是什么?

2 个答案:

答案 0 :(得分:4)

您需要的是构建工具。在Java中,ant和maven是受欢迎的选择。在node.js世界中,有大量的构建工具。我最熟悉的两个是grunt和buildr(完全披露:我是buildr的维护者)。

任何一个工具都归结为您编写一个配置文件,指定您的源文件/目录以及您希望对它们执行的操作,选项是缩小,连接,Saas或Stylus编译等。

https://github.com/gruntjs/grunt

https://github.com/balupton/buildr.npm

对于部署工作流程,我建议执行以下步骤:

  1. 从源代码管理中清除您的网站或应用程序代码(Git或Subversion或诸如此类的东西)。
  2. 运行grunt或buildr命令以编译所有网站资源。
  3. 将结果上传到您的Web服务器,然后重新启动node.js进程。有很多方法可以做到这一点。
  4. 对于某个应用程序,我建议删除远程系统上的安装目录,然后将新版本放在SCP的位置。这假定存在负载均衡器。

    根据您的应用程序,这可能很简单,可以使用shell脚本编写脚本,或者您可以使用capistrano或fleet等工具。

    https://github.com/capistrano/capistrano

    https://github.com/substack/fleet

    对于一个简单的网站,我推荐一些可以查看文件差异的内容,例如rsync。我使用rsync作为我的个人网站,因为它只是静态内容而且我不必担心依赖性等等。

    所以发布可能会像

    $ git clone git://github.com/whatever.git && (cd whatever && buildr && rsync -avz --delete -e ssh <remote server>:webroot)
    

    或者对于应用来说,更加自动化:

    $ git clone git://github.com/whatever.git && (cd whatever && buildr && make upload)
    

    对于主要应用:

    $ buildApp && deployApp
    

    buildApp和deployApp是包含构建和部署所需的所有命令,日志记录,配置等的脚本。

答案 1 :(得分:2)

你应该看看Grunt.js

布兰登的答案很好,但我只能猜测他没有Grunt的经验。现在让我成为一个遥远而痛苦的回忆。

Grunt本身只是一个“任务运行者”,而所有繁重的工作都是通过“插件”完成的,每个插件都为Gruntfile中的特定“任务”提供动力。所以有plugin for compiling SASS to CSSplugin for YUI doc等等。你可以在GitHub社区和Grunt.js网站上找到数百个Grunt插件,在这里:http://gruntjs.com/plugins

此外,所有“grunt-contrib-”插件都是由Grunt.js核心团队策划的,每个插件都专注于在特定的事情上做得非常出色。有一个用于缩小CSS的插件,另一个用于uglifying(缩小/隐藏)JavaScripts的插件,一个用于连接文件的插件,等等。甚至还有一个用于生成静态站点的插件,assemble(我是其中一个维护者)。