NodeJS服务器端应用程序部署的协调

我正在用Angular写一个nodejs应用程序作为我的前端。 为此我有Git作为我的代码pipe理服务器。 对于客户来说,我正在进行缩小,并准备好生产。

但是我不确定,如何准备服务器端文件进行生产。 我们是否需要将所有Git文件夹复制到生产服务器? 让我知道部署nodejs服务器应用程序的最佳方法。

  1. 您可以使用pm2作为守护进程来始终保持您的nodejs应用程序正常运行。
  2. 尽量不要在node_modules中包含node_modules ,导致不同的机器有不同的设置/安装,除非你npm installnpm install ,否则在运行之前你不能确定一个软件包是否工作。
  3. 如果您熟悉Docker ,请使用它,将所有(包括node_modules )文件预先捆绑到node_modules映像中,并且您不需要pm2Docker本身可以自动重启。 这是理想的方法。

这实际上取决于你(或你的公司)如何组织工作stream程和项目规模。

有时候我也使用GIT仓库,因为更新起来非常简单:只需一个git pull (如果服务器文件被编辑)一个pm2 restart N命令。

这样,你不必安装整个开发堆栈来编译(和缩小)bundle – 我猜你可以在安装了所有开发工具的本地机器上工作。

请记住,在安装仅在开发模式下需要的软件包时使用--dev标志,这样可以使生产服务器尽可能地保持苗条。

我发现一个很好的做法是在最终的包文件名中添加一些随机标记(对于js和css),然后将其注入到最终的html静态文件中,以避免刷新页面循环。

一旦你在你的开发机器上有捆绑文件,只要将它们上传到服务器(ftp,git,rsync,sshfs mount,无论你喜欢什么)和(如果服务器文件被编辑)重新启动/重新加载节点进程(使用pm2这真的很棒)。 如果您只编辑客户端文件,则不需要重新加载。

从这里开始,有很多方法可以或多或less地做这个工作,比如gitpipe道,但是取决于情况。

编辑: 这是一个关于任务运行的好文章(gulp vs grunt vs vanilla npm ),虽然可能有点偏离主题,但它分析了常见部署过程的某些方面