linux - 在 linux 服务器上部署 Node api 以进行生产的最佳方法

标签 linux node.js api service deployment

<分区>

过去,我总是使用 Heroku托管和运行我开发的任何 API 的平台。 我最近决定将我正在开发的最后一个转移到我的 Linux (Debian) 专用服务器上。

因为它比我的任何 Heroku 实例都更强大,我想我会提高我的应用程序的性能。

现在我正在寻找工具或脚本,以在后台部署和运行我的应用程序,而无需手动重新启动它以防崩溃或出现任何问题。

这基本上就是 heroku 所做的。

我知道 /etc/init.d service 这件事,还有 screen 方法。 我更希望寻找一种“即用型”且可配置的解决方案,这样可以节省我的时间。

那么,部署应用并确保其始终正常运行的最佳方式是什么?

最佳答案

首先,您需要有一个持久的后台服务,以在崩溃和重启时保持 NodeJS 进程(服务器实例)运行。

Pm2是一个流行的 Node 进程管理器。它主要通过 CLI 操作:

npm -g install pm2
pm2 start --name my_server ./server.js
pm2 list
pm2 stop my_server
pm2 restart my_server
pm2 logs my_server

你可以让它自动安装 init.d 或 upstart 等脚本:

pm2 startup

因此,它可以在主机重新启动后重新启动。

流程管理是自动化的一部分。另一个是在服务器主机上获取最新代码并重新启动服务器。

一种方法是在服务器上克隆代码存储库。然后每次需要部署时,都需要在主机上执行:

pm2 stop my_server
git pull
pm2 restart my_server

另一种更自动化的方法是在主机 (GitLab) 上设置一个 git 服务器,并在代码被推送到项目存储库 (Git Hooks : Post Receive) 时自动重启。您可以将 pm2 重启脚本放在托管项目存储库的接收后 Hook 中。

有了这个,部署将变得非常简单:

git push server branch

还有更强大的解决方案可用,例如:Docker .

关于linux - 在 linux 服务器上部署 Node api 以进行生产的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37613700/

相关文章:

linux - 创建新的卷组和逻辑卷时,物理卷上的数据不会被删除吗?

node.js - 如何对与本地 mongodb 对话的 Node.js 进行 dockerize

android - 我应该在我的应用程序中使用 android 语音识别器来收集数据吗?

javascript - 无法找到解决方案 : JSON. 解析:第 1 行第 1 列数据意外结束

javascript - 使用 Yammer REST API 发布/创建投票

linux - 你如何区分一个目录只包含特定类型的文件?

linux - 等待机器启动时的 Vagrant box 超时值

javascript - 我需要在 Express 中附加这些嵌套函数的列表,但这些项目不会存储

mongodb - 即时定义 Mongoose Schema

linux - 如何: Progress bar in bash