<分区>
过去,我总是使用 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 .