運用サーバーでNode.jsアプリを実行するためにPM2をインストールする方法


PM2 は、ロードバランサを内蔵した、 Node.js 用の無料のオープンソース、高度で効率的なクロスプラットフォームのプロダクションレベルプロセスマネージャです。これはLinux、MacOS、そしてWindows上で動作します。アプリの監視、マイクロサービス/プロセスの効率的な管理、クラスタモードでのアプリの実行、アプリの適切な起動とシャットダウンをサポートします。

それはあなたのアプリを自動再起動で "永久に"維持し、システム起動時に起動するように有効にすることができます、そのように高可用性 HA )を可能に構成またはアーキテクチャ。

特に、 PM2 を使用すると、コードを変更することなくクラスターモードでアプリを実行できます(これはサーバー上のCPUコアの数によっても異なります)。また、アプリのログなどを簡単に管理することもできます。

さらに、 Express Adonis Js Sails などの主要な Node.js フレームワークも非常に優れています。 、ハピなど、コードを変更する必要はありません。 PM は、 IBM Microsoft PayPal などの企業で使用されています。

この記事では、Linux本番サーバーで Nodejs アプリを実行するための PM2 のインストール方法と使用方法について説明します。 PM2の基本機能のいくつかを紹介して、それを使い始めるためのアプリを作成します。

ステップ1:LinuxにNodejsとNPMをインストールする

1. Node.js および NPM の最新バージョンをインストールするには、まずLinuxディストリビューションで正式なNodeSourceリポジトリを有効にしてからインストールする必要があります。示されているように Node.js NPM パッケージ。

---------- Install Node.js v11.x ---------- 
$ curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
$ sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
---------- Install Node.js v11.x ---------- 
$ curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
$ curl -sL https://rpm.nodesource.com/setup_10.x | bash -

ステップ2:Nodejsアプリケーションを作成する

2. それではテスト用のアプリケーションを作成しましょう(同じデータベースを共有するクライアント側と管理者側があると仮定します)。マイクロサービスはポート 3000 で実行されますそれぞれ 3001

$ sudo mkdir -p /var/www/html/app
$ sudo mkdir -p /var/www/html/adminside
$ sudo vim /var/www/html/app/server.js
$ sudo vim /var/www/html/adminside/server.js

次に、 server.js ファイルに次のコードをコピーして貼り付けます( 192.168.43.31 をサーバーのIPに置き換えます)。

##mainapp code
const http = require('http');

const hostname = '192.168.43.31';
const port = 3000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('This is the Main App!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});
##adminside code
const http = require('http');

const hostname = '192.168.43.31';
const port = 3001;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('This is the Admin Side!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

ファイルを保存して終了します。

ステップ3:LinuxにPM2 Product Process Managerをインストールする

3. PM2 の最新安定版は、 NPM を介してインストールできます。

$ sudo npm i -g pm2 

4. PM2 がインストールされたら、次のコマンドを使用してノードアプリケーションを起動できます。

$ sudo node /var/www/html/app/server.js
$ sudo node /var/www/html/adminside/server.js

本番環境では、図に示すように PM2 を使用して起動する必要があります(通常のユーザーが読み取りおよび書き込み権限を持っている場所にアプリが保存されている場合は、sudoコマンドは不要です)。

$ sudo pm2 start /var/www/html/app/server.js
$ sudo pm2 start /var/www/html/adminside/server.js

ステップ4:LinuxでPM2を使用し管理する方法

5. インスタンス数を指定するために -i フラグを使用して、クラスタモードでアプリケーションを起動します。

$ sudo pm2 start /var/www/html/app/server.js -i 4 
$ sudo pm2 scale 0 8			#scale cluster app to 8 processes

6. すべてのノードアプリケーション(プロセス/マイクロサービス)を一覧表示するには、次のコマンドを実行します。

$ sudo pm2 list

7. 次のコマンドを実行して、ログ、カスタム指標、すべてのプロセスからのプロセス情報を監視する。

$ sudo pm2 monit

8. プロセスIDまたは名前を使用して、表示されているように単一のNodeプロセスの詳細を表示します。

$ sudo pm2 show 0

ステップ5:LinuxでPM2を使用してノードアプリを管理する方法

9. 以下は、注意が必要な一般的なプロセス(単一またはすべて)の管理コマンドの一覧です。

$ sudo pm2 stop all                  		#stop all apps
$ sudo pm2 stop 0                    		#stop process with ID 0
$ sudo pm2 restart all               		#restart all apps
$ sudo pm2 reset 0		         	#reset all counters
$ sudo pm2 delete all                		#kill and remove all apps
$ sudo pm2 delete 1                 		#kill and delete app with ID 1

10. アプリケーションログを管理するには、次のコマンドを使用します。

$ sudo pm2 logs                      	#view logs for all processes 
$ sudo pm2 logs 1	         	#view logs for app 1
$ sudo pm2 logs --json               	#view logs for all processes in JSON format
$ sudo pm2 flush			#flush all logs

11. PM2プロセスを管理するには、次のコマンドを使用します。

$ sudo pm2 startup            #enable PM2 to start at system boot
$ sudo pm2 startup systemd    #or explicitly specify systemd as startup system 
$ sudo pm2 save               #save current process list on reboot
$ sudo pm2 unstartup          #disable PM2 from starting at system boot
$ sudo pm2 update	      #update PM2 package

ステップ6:Webブラウザからノードアプリにアクセスする

12. リモートウェブブラウザからすべてのノードアプリケーションにアクセスするには、まずシステムのファイアウォールで次のポートを開き、クライアントがアプリに接続できるようにする必要があります。

-------- Debian and Ubuntu -------- 
$ sudo ufw allow 3000/tcp
$ sudo ufw allow 3001/tcp
$ sudo ufw reload

-------- RHEL and CentOS --------
# firewall-cmd --permanent --add-port=3000/tcp
# firewall-cmd --permanent --add-port=3001/tcp
# firewall-cmd --reload 

13. 次に、次のURLでウェブブラウザからアプリにアクセスします。

http://198.168.43.31:3000
http://198.168.43.31:3001 

最後に重要なことを言い忘れたが、ある[ PM2 は、そのコア機能を拡張するためのシンプルな作り付けのモジュールシステム、モジュールのいくつかはpm2-logrotate、pm2-webshell、pm2-server-monitなどを含みます独自のモジュールを作成して使用することもできます。

詳細については、PM2 GitHubリポジトリ(https://github.com/Unitech/PM2/)にアクセスしてください。

それで全部です! PM2 は、ロードバランサを内蔵した Node.js のための高度で効率的なプロダクションレベルのプロセスマネージャです。この記事では、LinuxでNodejsアプリケーションを管理するためにPM2をインストールして使用する方法を説明しました。ご質問がある場合は、下記のコメントフォームからご利用ください。