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

时间:2016-06-03 11:52:18

标签: linux node.js api service deployment

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

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

现在我正在寻找工具或脚本来在后台部署和运行我的应用程序,而不必在发生崩溃或任何问题时手动重启它。

这基本上就是heroku的作用。

我知道/etc/init.d service的事情,以及screen方法。 我正在寻找一个随时可用的"和可配置的解决方案,这将节省我的时间。

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

1 个答案:

答案 0 :(得分:3)

首先,您需要拥有一个持久的后台服务,以便在崩溃和重新启动时保持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

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

pm2 startup

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

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

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

pm2 stop my_server
git pull
pm2 restart my_server

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

有了这个,部署将如下:

git push server branch

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