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

Node.js应用程序因其扩展能力而广受欢迎。在多台服务器上运行多个并发进程可减少延迟并延长正常运行时间。管理多个服务器时,最简单的方法是让Node.js应用程序在崩溃时自动重新启动。本教程将向您展示如何从空白的Ubuntu 16.04实例快速设置应用程序持久性。

先决条件

  • 使用Ubuntu 16.04 LTS x64创建任何大小的Vultr实例。
  • 如果您不是root用户,请运行sudo -s并输入密码。需要根访问权限才能修改启动文件,以便进程管理器在启动时启动。
  • 确保在实例上安装了Node.js,并且Node.js的版本为8.9.3 LTS或更高版本,这是持久性管理器平稳运行所必需的。使用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

创建交换分区

此步骤是可选的,但建议安装。交换分区是硬盘的一部分,专用于帮助补充RAM。在较小的Vultr实例(例如512MB RAM实例)上,创建交换分区将对性能有所帮助。对于自动版本的交换教程,请使用以下命令。

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

一般而言,在设置持久性应用程序时,对于具有4 GB或更多RAM的实例,使用交换并不是必需的,尽管它可以提高应用程序的性能。RAM比交换更敏感,因此无论交换如何,具有更多RAM的实例往往会产生更好的结果。

安装纱

Yarn是Facebook上针对Node.js软件包的易于使用的软件包管理器。它比NPM更快,而且具有确定性,这在部署多台服务器时特别有用。

$ 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

但是,可以使用NPM代替Yarn,它具有与本教程中所有命令相似的命令。

安装您的Node.js应用程序

如果您的应用程序托管在git存储库中,请克隆它并使用yarn install。您的应用程序应具有服务器条目文件,通常为server.jsindex.js,将在后续步骤中使用。

安装流程管理器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参数。如果此Vultr实例的唯一用途是为应用程序提供服务,则建议这样做。对于具有多个CPU的Vultr实例,将启动多个进程,并且Process Manager 2将充当所有这些单独进程的负载平衡器。

在启动时自动启动您的应用程序

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

$ pm2 save
$ pm2 startup

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

测试中

尝试键入reboot并检查以查看Ubuntu启动后是否提供了您的应用程序。如果该应用程序用于Web并通过port提供80curl http://localhost/则将显示起始页面的HTML。如果它不起作用,该命令pm2 status将显示正在运行的进程,并且可以重新发出start命令。

部署应用程序的新版本

如果应用程序已更新(例如通过拉动git存储库),则必须发出命令来更新正在运行的应用程序进程。

$ pm2 update

用法示例

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

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息