A Node.js process manager is a useful tool to ensure that a Node.js process or script runs continuously (forever) and can enable it to auto-start at system boot.
実行中のサービスを監視し、一般的なシステム管理タスク(障害時の再起動、停止、ダウンタイムなしでの設定の再読み込み、環境変数/設定の変更、パフォーマンスメトリクスの表示など)を容易にする機能を提供します。アプリケーションのログ記録、クラスタリング、負荷分散をサポートし、他にも便利なプロセス管理機能が多数あります。
関連記事: 2019年の開発者向けの最高のNodeJSフレームワーク14選
A package manager is useful especially for deployment of Node.js applications in a production environment. In this article, we will review four process managers for Node.js application management in a Linux system.
1. PM2
PM2は、オープンソースで高度で機能豊富でクロスプラットフォームであり、最も人気のある本番レベルのNode.jsプロセスマネージャーです。組み込みのロードバランサーを備えています。起動したすべてのNode.jsプロセスの一覧表示、監視、操作が可能で、クラスターモードをサポートしています。

アプリケーションのモニタリングをサポートし、アプリケーションのリソース(メモリおよびCPU使用量)を簡単に監視できます。プロセスファイルを介して各アプリケーションの動作を構成および調整することで、プロセス管理ワークフローをサポートします(サポートされる形式にはJavascript、JSON、YAMLが含まれます)。
アプリケーションログは常に本番環境で重要です。この点で、PM2はアプリケーションのログを簡単に管理できます。異なる方法やフォーマットでログを処理および表示することができます。リアルタイムでログを表示したり、フラッシュしたり、必要に応じてリロードすることができます。
PM2は自動的に起動スクリプトをサポートしており、予期される/予期しないマシンの再起動時にプロセスを自動的に開始するように構成することができます。また、カレントディレクトリまたはそのサブディレクトリでファイルが変更された場合にアプリケーションを自動的に再起動する機能もサポートしています。
PM2にはユーザーがNode.jsプロセス管理のためのカスタムモジュールを作成できるモジュールシステムもあります。たとえば、ログのローテーションモジュールやロードバランシングなど、さまざまなモジュールを作成できます。
最後に、Dockerコンテナーを使用している場合、PM2はコンテナー統合を可能にし、プログラムで使用できるAPIシステムも提供しています。
2. StrongLoop PM
StrongLoop PMもオープンソースの高度な本番プロセスマネージャーで、Node.jsアプリケーションに組み込みのロードバランシング機能を備えており、PM2と同様に、コマンドラインまたはグラフィカルインタフェースを介して使用できます。

アプリケーションのモニタリング(イベントループ時間、CPUとメモリの消費量などのパフォーマンスメトリクスの表示)、マルチホスト展開、クラスターモード、ゼロダウンタイムのアプリケーション再起動とアップグレード、障害時の自動プロセス再起動、およびログの集約と管理をサポートしています。
さらに、Dockerサポートが付属し、パフォーマンスメトリクスをStatsD互換サーバーにエクスポートして、DataDog、Graphite、Splunkなどのサードパーティーコンソールで表示できます。また、Syslogおよび生ログファイルでも表示できます。
3. Forever
Foreverは、指定されたスクリプトを継続的に(永遠に)実行するためのオープンソースでシンプルかつ設定可能なコマンドラインインタフェースツールです。これは、Node.jsアプリやスクリプトの小規模な展開に適しています。foreverは、コマンドラインを介してまたはコードに埋め込むことで使用できます。

それは、Node.jsプロセスを管理(開始、リスト、停止、すべて停止、再起動、すべて再起動など)することができ、ファイルの変更を監視する、デバッグモード、アプリケーションログ、プロセスの終了、終了シグナルのカスタマイズなどをサポートしており、その他にも多くの機能があります。さらに、コマンドラインから直接渡すことも、JSONファイルに記述して渡すこともできるいくつかの使用オプションをサポートしています。
4. SystemD – サービスおよびシステムマネージャー
Linuxでは、Systemdはプロセスやファイルシステムの他のコンポーネントなどのシステムリソースを管理するデーモンです。 systemd が管理するすべてのリソースはユニットとして知られています。サービス、デバイス、ソケット、マウント、ターゲットなど、さまざまなタイプのユニットがあります。
Systemd はユニットファイルとして知られる構成ファイルを介してユニットを管理します。したがって、Node.jsサーバーを他のシステムサービスと同様に管理するためには、サービスファイルであるユニットファイルを作成する必要があります。
一度、Node.jsサーバーのサービスファイルを作成すると、それを起動し、システムの起動時に自動的に起動するように設定できます。また、そのステータスを確認し、再起動(停止してから再起動)、設定をリロード、さらにはそれを停止することができます。これは他のsystemdサービスと同様です。
詳細については、以下を参照してください:シェルスクリプトを使用してsystemdで新しいサービスユニットを作成および実行する方法
まとめ
A Node.js package manager is a useful tool for deploying your project in a production environment. It keeps an application alive forever and simplifies how you can control it. In this article, we reviewed four package managers for Node.js. If you have any additions or questions to ask, make use of the feedback form below to reach us.
Source:
https://www.tecmint.com/process-managers-for-node-js-applications-in-linux/