过去,我总是使用Heroku平台来托管和运行我开发的任何API。 我最近决定在我的Linux(Debian)专用服务器上传输我正在开发的最后一个。
由于它比我的任何Heroku实例更强大,我想我会提高我的应用程序的性能。
现在我正在寻找工具或脚本来在后台部署和运行我的应用程序,而不必在发生崩溃或任何问题时手动重启它。
这基本上就是heroku的作用。
我知道/etc/init.d
service
的事情,以及screen
方法。
我正在寻找一个随时可用的"和可配置的解决方案,这将节省我的时间。
那么,部署应用程序的最佳方式是什么,并确保它始终正常运行?
答案 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。