웹사이트 검색

프로덕션 서버에서 Node.js 앱을 실행하기 위해 PM2를 설치하는 방법


PM2는 로드 밸런서가 내장된 Node.js용 무료 오픈 소스이자 효율적인 고급 크로스 플랫폼 프로덕션 수준 프로세스 관리자입니다. Linux, MacOS 및 Windows에서 작동합니다. 앱 모니터링, 마이크로 서비스/프로세스의 효율적인 관리, 클러스터 모드에서 앱 실행, 앱의 정상적인 시작 및 종료를 지원합니다.

자동 재시작을 통해 앱을 '영원히' 유지하고 시스템 부팅 시 시작되도록 활성화할 수 있으므로 고가용성(HA)이 가능합니다. 구성 또는 아키텍처.

특히 PM2를 사용하면 코드를 변경하지 않고도 클러스터 모드에서 앱을 실행할 수 있습니다(이는 서버의 CPU 코어 수에 따라 달라집니다). 또한 앱 로그 등을 쉽게 관리할 수 있습니다.

또한 Express, Adonis Js, Sails와 같은 주요 Node.js 프레임워크에 대한 놀라운 지원도 제공합니다. , Hapi 등을 코드 변경 없이 사용할 수 있습니다. PM2IBM, Microsoft, PayPal 등과 같은 회사에서 사용되고 있습니다.

이 문서에서는 PM2를 설치하고 사용하여 Linux 프로덕션 서버에서 Nodejs 앱을 실행하는 방법을 설명합니다. PM2를 시작하는 데 도움이 되는 PM2의 기본 기능 중 일부를 시연하기 위한 앱을 만들 것입니다.

1단계: Linux에 Nodejs 및 NPM 설치

1. 최신 버전의 Node.jsNPM을 설치하려면 먼저 Linux 배포판에서 공식 NodeSource 저장소를 활성화한 다음 설치해야 합니다. Node.jsNPM 패키지는 다음과 같습니다.

데비안/우분투에서

---------- 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 제품 프로세스 관리자 설치

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단계: 웹 브라우저에서 노드 앱에 액세스

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를 위한 효율적인 고급 프로덕션 수준 프로세스 관리자입니다. 이 기사에서는 PM2를 설치하고 사용하여 Linux에서 Nodejs 앱을 관리하는 방법을 보여주었습니다. 문의사항이 있으시면 아래 댓글 양식을 통해 보내주세요.