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

Sca*_*aux 3 linux deployment api service node.js

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

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

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

这基本上就是heroku所做的。

我知道这/etc/init.d service件事,也知道screen方法。我更在寻找“即用型”和可配置的解决方案,这将节省我的时间。

那么,部署应用程序并确保它始终正常运行的最佳方法是什么?

S.D*_*.D. 5

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

Pm2是一个流行的节点进程管理器。它主要通过 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
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令自动安装 init.d 或 upstart 等脚本:

pm2 startup
Run Code Online (Sandbox Code Playgroud)

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

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

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

pm2 stop my_server
git pull
pm2 restart my_server
Run Code Online (Sandbox Code Playgroud)

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

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

git push server branch
Run Code Online (Sandbox Code Playgroud)

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