在Ubuntu 16.04上,如何设置Node.js持久应用程序

・6 分钟阅读

Node.js应用程序因它扩展能力而受到欢迎,在多个服务器上运行多个并发进程可以降低延迟并延长正常运行时间。在管理多个服务器时,如果Node.js应用程序崩溃,那么让它们自动重启是很容易的。

前提条件

  • 使用Ubuntu 16.04的x64创建任意大小的实例,
  • 如果你不是root用户,请运行sudo -s,并且键入密码,要修改启动文件,需要root访问,以便进程管理器在启动时启动,
  • 确保Node.js安装在实例上,并且Node.js版本是8.9.3或更高版本,这是持久化管理器正常运行所必需的,使用node -v检查安装的版本,如果Node.js的版本不正确,下面的命令会安装它,

安装node.js 。


$ sudo apt-get update
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs

创建交换分区

此步骤是可选的,但推荐用于安装,交换分区是硬盘的一部分,专用于帮助补充内存。对于较小的实例,如512MB内存实例,创建交换分区将有助于性能,对于自动化版本,请使用以下命令。


$ git clone https://github.com/teamtofu/server-tools.git tools
$ bash ./tools/swap.sh

一般来说,在设置持久性应用程序时,对于内存为4GB或更大的实例不需要使用交换分区,尽管它可以提高应用程序的性能,内存比交换分区响应更快,因此具有更多内存的实例会产生更好的结果。

安装Yarn

Yarn是一个来自Facebook的Node.js软件包管理器。它比NPM和deterministic更快,在部署多个服务器时尤其有用。


$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo"deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn

安装你的Node.js应用程序

如果你的应用程序托管在一个git存储库中,请克隆它,并且使用yarn install ,应用程序应该有一个服务器条目文件,通常是server.jsindex.js,这会在接下来的步骤中使用。

安装Process Manager 2

Process Manager 2是会自动重启应用程序的程序包。Process Manager 2非常受欢迎,Microsoft,PayPal和Intuit也使用它,因此它是安全可靠的。


$ yarn global add pm2

将您的应用程序添加为进程

应用程序会被守护进程(在后台运行),并且使用start命令自动重新启动。


$ pm2 start [path to your entry.js] -i max

如果要自动启动进程的最大数目,请传递-i max参数,如果仅使用此实例为应用程序服务,则建议使用此方法,对于有多个CPU的实例将启动多个进程,并且Process Manager 2将充当所有这些单独进程的负载平衡器。

启动时,自动启动应用程序

启动应用程序后,保存应用程序的配置,然后,运行startup命令,在Ubuntu启动时在后台自动运行ProcessManager2,对于Ubuntu 16.04,process Manager 2会绑定到systemd。


$ pm2 save
$ pm2 startup

现在,如果你的Node.js应用程序由于错误而且崩溃,它将重新启动,如果Ubuntu崩溃,该进程将自动重启Ubuntu。可以使用pm2 gracefulReload all重新启动进程,并且可以使用pm2 update重新启动Process Manager 2。要在启动时停止Process Manager 2,请运行pm2 unstartup。

测试

尝试键入reboot,并且检查你的应用程序在Ubuntu启动后是否已被服务,如果应用程序为web,并且服务于端口80,则curl http://localhost/会显示起始页的HTML ,如果不运行,命令pm2 status会显示正在运行的进程,并且可以重新发布开始命令。

部署应用程序的新版本

如果更新了应用程序,比如,通过提取git存储库,那么必须发出一个命令来更新正在运行的应用程序。

 
$ pm2 update

 

用法举例

Parse Server是一种流行的开源平台即服务,可作为应用程序的后端。由于代码或请求量的错误,后端可能会崩溃,但是,应用程序会不会遇到停机,因为其他服务器(和/或进程)继续运行,并且Parse Server进程会快速重新启动。

Yanyan profile image