如何在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进程迅速重新启动,因此应用程序不会停机。



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在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 機器變磚。閱讀這篇文章以了解更多信息