Node JS 服务器端应用部署注意事项

Posted

技术标签:

【中文标题】Node JS 服务器端应用部署注意事项【英文标题】:NodeJS server side application deployment cosiderations 【发布时间】:2017-05-01 03:18:28 【问题描述】:

我正在编写一个以 Angular 作为前端的 nodejs 应用程序。 为此,我将 Git 作为我的代码管理服务器。 对于客户,我正在缩小,它已准备好投入生产。

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

【问题讨论】:

【参考方案1】:
    您可以使用 pm2 作为您的守护进程,以使您的 nodejs 应用程序始终保持运行状态。 尽量不要在 repo 中包含 node_modules,因为不同的机器有不同的设置/安装,除非你 npm install 它们,否则在运行之前你无法判断一个包是否可以工作。 如果你熟悉Docker,使用它,将所有(包括node_modules)文件预先捆绑到docker镜像中,这里不需要pm2Docker本身可以自动重启。这是理想的方法。

【讨论】:

【参考方案2】:

这实际上取决于您(或您的公司)希望如何组织工作流程以及项目的规模。

有时我也使用 GIT 存储库,因为它真的很容易更新:只需一个 git pull 和(如果服务器文件得到编辑)一个 pm2 restart N 命令。

通过这种方式,您不必安装整个开发堆栈来编译(和缩小)捆绑包 - 我猜您在安装了所有开发工具的本地机器上工作。

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

我发现的一个好习惯是在最终的捆绑文件名(用于 js 和 css)中添加一些随机标记,然后在最终的 html 静态文件中注入,以避免 刷新页面循环。

一旦你的开发机器上有捆绑文件,只需将它们上传到服务器(ftp、git、rsync、sshfs 挂载,任何你喜欢的)和(如果服务器文件得到编辑)重新启动/重新加载节点进程(我为此使用 pm2,它真的很棒)。如果您只编辑客户端文件,则无需重新加载。

从这里开始,有很多或多或少复杂的方法来完成这项工作,例如 git 管道......但取决于具体情况。

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

【讨论】:

以上是关于Node JS 服务器端应用部署注意事项的主要内容,如果未能解决你的问题,请参考以下文章

黑客可以访问/复制/下载部署在Node Js上的JS服务器端代码吗?

Azure Web 应用 Node.js 部署后返回 404

通过Github与PM2部署Node应用

部署 Node.js 应用程序时出现 Heroku 错误

如何在 Node.js 服务器上部署 Vue.js 应用程序

我可以使用哪些 aws 服务来部署 node.js 应用程序?