ウェブサイト検索

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


PM2 は、ロード バランサが組み込まれた、Node.js 用の、先進的かつ効率的なクロスプラットフォームの実稼働レベルのプロセス マネージャーであり、無料のオープン ソースです。 WindowsだけでなくLinux、MacOSでも動作します。アプリの監視、マイクロサービス/プロセスの効率的な管理、クラスター モードでのアプリの実行、アプリの正常な起動とシャットダウンをサポートします。

自動再起動によりアプリを「永久に存続」させ、システム起動時に起動できるようにできるため、高可用性 (HA) が可能になります。構成またはアーキテクチャ。

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

さらに、ExpressAdonis JsSailsなどの主要なNode.jsフレームワークも強力にサポートしています。 、ハピなど、コードを変更する必要はありません。 PM2IBMマイクロソフトペイパルなどの企業で使用されています。

この記事では、PM2 をインストールして使用し、Linux 運用サーバーでNodejs アプリを実行する方法を説明します。 PM2 を使い始めるために、PM2 の基本的な機能のいくつかをデモンストレーションするためのアプリを作成します。

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

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

Debian/Ubuntu の場合

---------- 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

CentOS/RHEL および Fedora の場合

---------- 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 または名前を使用して、示されているように単一ノード プロセスの詳細を表示します。

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. リモート Web ブラウザからすべてのノード アプリケーションにアクセスするには、まずシステム ファイアウォールで次のポートを開いて、図に示すようにクライアントがアプリに接続できるようにする必要があります。

-------- 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 を使用して Web ブラウザからアプリにアクセスします。

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 用の高度で効率的な運用レベルのプロセス マネージャーです。この記事では、PM2 をインストールして使用して Linux で Nodejs アプリを管理する方法を説明しました。ご不明な点がございましたら、以下のコメント フォームを使用して送信してください。