2021-05-12 14:32:11
如何在生產伺服器上安裝PM2執行Node.js應用程式
PM2是Node.js的免費開源,高階,高效和跨平台的生產級流程管理器,具有內建負載均衡器。它適用於Linux,MacOS以及Windows。它支援應用程式監控,微服務/流程的高效管理,以群集模式執行應用程式,正常啟動和關閉應用程式。
它通過自動重新啟動保持您的應用程式“永遠活著”,並且可以啟用以在系統引導時啟動,從而允許高可用性(HA)設定或體系結構。
值得注意的是,PM2允許您以群集模式執行應用程式,而無需對程式碼進行任何更改(這也取決於伺服器上的CPU核心數)。它還允許您輕鬆管理應用程式紀錄檔等等。
此外,它還對Express,Adonis Js,Sails,Hapi等主要Node.js框架提供了令人難以置信的支援,無需進行任何程式碼更改。 PM2正被IBM,Microsoft,PayPal等公司使用。
在本文中,我們將解釋如何安裝和使用PM2在Linux生產伺服器中執行Nodejs應用程式。我們將建立一個應用程式,用於演示PM2的一些基本功能,以便您開始使用它。
第1步:在Linux中安裝Nodejs和NPM
1.要安裝最新版本的Node.js和NPM,首先需要在Linux發行版下啟用官方NodeSource儲存庫,然後安裝Node.js和NPM軟體包,如圖所示。
在Debian/Ubuntu上
---------- 安裝 Node.js v11.x ----------
$ curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
$ sudo apt-get install -y nodejs
---------- 安裝 Node.js v10.x ----------
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
---------- 安裝 Node.js v11.x ----------
$ curl -sL https://rpm.nodesource.com/setup_11.x | bash -
---------- 安裝 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.如圖所示,可以通過NPM安裝最新穩定版的PM2。
$ sudo npm i -g pm2
4.安裝PM2後,可以使用以下命令啟動node應用程式。
$ 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
使用PM2啟動Nodejs App
第4步:如何在Linux中使用和管理PM2
5.例如,使用-i標誌以叢集模式啟動應用程式以指定範例數。
$ sudo pm2 start /var/www/html/app/server.js -i 4
$ sudo pm2 scale 0 8 #將群集應用擴充套件到8個進程
6.要列出所有節點應用程式(進程/微服務),請執行以下命令。
$ sudo pm2 list
列出所有PM2管理node應用程式
7.通過執行以下命令來監視紀錄檔,自定義度量標準,來自所有進程的進程資訊。
$ sudo pm2 monit
監控所有Node進程
8.使用進程ID或名稱檢視所示的單個Node進程的詳細資訊。
$ sudo pm2 show 0
檢視單個應用的詳細資訊
第5步:如何在Linux中使用PM2管理Node應用程式
9.以下是您應注意的一些常見流程(單個或所有)管理命令的列表。
$ sudo pm2 stop all #停止所有應用
$ sudo pm2 stop 0 #停止ID為0的進程
$ sudo pm2 restart all #重新啟動所有應用
$ sudo pm2 reset 0 #重置所有計數器
$ sudo pm2 delete all #殺死並刪除所有應用
$ sudo pm2 delete 1 #殺死並刪除ID為1的應用
10.要管理應用程式紀錄檔,請使用以下命令。
$ sudo pm2 logs #檢視所有進程的紀錄檔
$ sudo pm2 logs 1 #檢視應用1的紀錄檔
$ sudo pm2 logs --json #以JSON格式檢視所有進程的紀錄檔
$ sudo pm2 flush #重新整理所有紀錄檔
11.要管理PM2進程,請使用以下命令。
$ sudo pm2 startup #啟用PM2在啟動系統時啟動
$ sudo pm2 startup systemd #或者將systemd明確指定為啟動系統
$ sudo pm2 save #重新啟動時儲存當前進程列表
$ sudo pm2 unstartup #禁用PM2從系統引導啟動
$ sudo pm2 update #更新PM2包
步驟6:從Web瀏覽器存取node應用程式
12.要從遠端Web瀏覽器存取所有node應用程式,首先需要在系統防火牆上開啟以下埠,以允許用戶端連線到應用程式,如圖所示。
-------- Debian 與 Ubuntu --------
$ sudo ufw allow 3000/tcp
$ sudo ufw allow 3001/tcp
$ sudo ufw reload
-------- RHEL 與 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應用程式。 如果您有任何疑問,請通過下面的評論表傳送給我們。
相關文章