시스템 부팅 시 PM2가 Node.js 앱을 자동으로 시작하도록 설정하는 방법


PM2는 강력하고 널리 사용되며 기능이 풍부한 Node.js용 프로덕션 준비 프로세스 관리자입니다. 서버가 부팅/재부팅될 때마다 관리하는 프로세스로 PM2를 다시 시작하는 것이 중요합니다. PM2의 주요 기능 중 하나는 서버가 다시 시작될 때마다 PM2와 프로세스를 다시 시작하는 시작 스크립트(서버의 기본 초기화 시스템을 기반으로 동적으로 생성됨)에 대한 지원입니다.

[ 당신은 또한 좋아할 수도 있습니다 : 프로덕션 서버에서 Node.js 앱을 실행하기 위해 PM2를 설치하는 방법 ]

시작 스크립트는 PM2를 초기화 시스템에서 서비스로 설정합니다. 서버가 다시 시작되면 PM2가 자동으로 다시 시작되며, PM2는 관리 중인 모든 Node.js 애플리케이션/프로세스를 다시 시작합니다.

이 기사에서는 Node.js 앱을 안정적으로 관리하기 위해 PM2를 서비스로 배포하는 방법을 보여줍니다. 이 가이드에서 테스트 시스템은 systemd 서비스와 시스템 관리자를 사용합니다. 이 기사의 모든 명령은 루트로 실행됩니다(권한이 있는 사용자에게 필요한 경우 sudo 사용).

초기화 시스템용 PM2 시작 스크립트 생성

PM2는 Linux 시스템의 기본 초기화 시스템(자동 감지 가능)과 함께 작동하여 시작 스크립트를 생성하고 PM2를 시스템 부팅 시 다시 시작할 수 있는 서비스로 구성하도록 설계되었습니다.

시작 스크립트를 생성하려면 루트로 다음 명령을 실행하기만 하면 됩니다.

# pm2 startup

시작 하위 명령은 사용 가능한 초기화 시스템을 감지하고 구성을 생성하고 시작 시스템을 활성화하도록 PM2에 지시합니다.

다음과 같이 초기화 시스템을 명시적으로 지정할 수도 있습니다.

# pm2 startup systems

PM2 시작 서비스가 시작되어 systemd에서 실행 중인지 확인하려면 다음 명령을 실행합니다(pm2-root.service를 서비스의 실제 이름으로 바꾸고 이전 명령의 출력 확인).

# systemctl status pm2-root.service

Node.js 애플리케이션/프로세스 시작

다음으로 다음과 같이 PM2를 사용하여 Node.js 애플리케이션을 시작하려고 합니다. PM2를 통해 시작한 이미 실행 중인 경우 이 단계를 건너뛸 수 있습니다.

# cd /var/www/backend/api-v1-staging/
# pm2 start src/bin/www.js -n api-service-staging

다음으로 PM2를 사용하여 관리하려는 프로세스의 현재 목록을 등록/저장해야 다음 명령을 실행하여 시스템 부팅 시(예상되거나 예기치 않은 서버 다시 시작할 때마다) 다시 생성됩니다.

# pm2 save

부팅 시 PM2 자동 시작 Node.js 앱 확인

마지막으로 설정이 제대로 작동하는지 테스트해야 합니다. 시스템을 다시 시작하고 모든 Node.js 프로세스가 PM2에서 실행 중인지 확인하십시오.

# pm2 ls
or
# pm2 status

다음 명령을 실행하여 프로세스를 수동으로 부활시킬 수 있습니다.

# pm2 resurrect

시작 시스템 비활성화

그림과 같이 unstartup 하위 명령을 실행하여 시작 시스템을 비활성화할 수 있습니다.

# pm2 unstartup
OR
# pm2 startup systemd

시작 스크립트를 업데이트하려면 먼저 비활성화한 다음 그림과 같이 다시 시작합니다.

# pm2 unstartup
# pm2 startup

참조: PM2 시작 스크립트 생성기.