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镜像中,这里不需要pm2
,Docker
本身可以自动重启。这是理想的方法。
【讨论】:
【参考方案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