프로덕션 서버에서 Node.js 애플리케이션을 관리하려면 애플리케이션이 원활하게 실행되고 충돌 시 자동으로 복구되도록 프로세스 관리자가 필요한 경우가 많습니다. PM2는 프로세스 모니터링, 로그 관리, 클러스터 모드와 같은 강력한 기능을 제공하는 가장 인기 있는 Node.js 프로세스 관리자 중 하나입니다.
Google Cloud Ubuntu 인스턴스에서 애플리케이션을 실행하는 경우 PM2 프로세스를 시작한 사용자에게만 표시되는 상황이 발생할 수 있습니다. 서버에 개발자, 시스템 관리자 또는 자동화된 배포 스크립트와 같은 여러 사용자가 있는 경우 문제가 될 수 있습니다. 이 블로그 게시물에서는 PM2를 시스템 전체 서비스로 구성하여 서버의 모든 사용자가 액세스할 수 있도록 하는 단계를 안내합니다.
기본적으로 PM2는 이를 시작한 사용자의 프로세스로 실행됩니다. 즉, 한 명의 사용자로 서버에 SSH로 접속하고 PM2 프로세스를 시작하면 SSH를 통해 로그인하는 다른 사용자에게는 해당 프로세스가 표시되지 않습니다. 이 문제를 해결하기 위해 시스템 수준에서 서비스로 실행되도록 PM2를 구성할 수 있습니다. 이 접근 방식에는 여러 가지 장점이 있습니다.
시작하기 전에 다음 사항을 확인하세요.
모든 사용자가 PM2에 액세스할 수 있도록 하려면 전역적으로 설치해야 합니다. npm:
을 사용하여 PM2를 전역적으로 설치할 수 있습니다.
sudo npm install -g pm2
이 명령은 PM2를 전역 npm 디렉터리에 설치하여 시스템 전체에서 사용할 수 있도록 합니다.
다음으로 PM2를 서비스로 실행하도록 설정해야 합니다. 이를 통해 PM2는 특정 사용자 세션에 연결되지 않고 시스템 수준에서 프로세스를 관리할 수 있습니다.
다음 명령을 실행하여 PM2에 필요한 시작 스크립트를 생성하세요.
pm2 startup
이 명령은 Ubuntu 인스턴스(일반적으로 systemd)에서 사용하는 init 시스템을 감지하고 PM2를 시스템 전체 서비스로 구성하기 위해 sudo로 실행해야 하는 명령을 제공합니다. 출력은 다음과 같습니다:
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u--hp /home/
여기서
이전 단계의 출력에 제공된 명령을 복사하여 실행합니다. 예를 들어:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u johndoe --hp /home/johndoe
이 명령은 올바른 환경 변수와 사용자 컨텍스트를 사용하여 PM2를 시작하는 시스템 서비스를 생성합니다.
재부팅 후에도 유지하려는 PM2에서 실행 중인 프로세스가 이미 있는 경우 현재 프로세스 목록을 저장해야 합니다. 그러면 시스템이 시작될 때 PM2가 프로세스를 복원하는 데 사용할 덤프 파일이 생성됩니다.
pm2 save
pm2 save 명령은 현재 관리되는 프로세스 목록을 ~/.pm2/dump.pm2의 JSON 파일에 저장합니다. 이 파일은 PM2가 시작될 때 자동으로 로드되므로 재부팅 후 애플리케이션이 다시 작동됩니다.
시스템 부팅 시 PM2가 자동으로 시작되도록 하려면 서비스를 활성화해야 합니다:
sudo systemctl enable pm2-johndoe
johndoe를 적절한 사용자 이름으로 바꾸세요. 이 명령은 PM2 서비스를 활성화하여 시스템이 부팅될 때마다 시작되도록 합니다.
이제 PM2는 시스템 전체 서비스로 구성되었으므로 서버의 모든 사용자가 액세스할 수 있습니다. 프로세스 상태를 확인하거나 나열하려면 모든 사용자가 다음을 실행할 수 있습니다.
pm2 list
이 명령은 로그인한 사용자에 관계없이 시스템 전체 PM2 서비스에서 관리하는 프로세스 목록을 표시합니다.
여러 사용자가 PM2 로그에 액세스해야 하는 경우 파일 권한을 조정하거나 공유 디렉터리에 로그를 저장하도록 PM2를 구성해야 할 수 있습니다. 이렇게 하면 모든 사용자가 PM2에서 실행되는 프로세스에 대한 로그를 보고 관리할 수 있습니다.
로그 파일 디렉터리를 변경하려면 다음 환경 변수를 사용할 수 있습니다.
export PM2_HOME=/path/to/shared/pm2/home
/etc/environment와 같은 전역 구성 파일에서 이를 설정하여 세션 전반에 걸쳐 지속되게 만듭니다.
PM2가 서비스로 설정되면 사용자는 표준 PM2 명령을 사용하여 프로세스를 관리할 수 있습니다. 그러나 권한 및 사용자 역할에 따라 일부 명령에는 sudo 액세스가 필요할 수 있습니다. 예를 들어:
sudo pm2 list
이 명령은 시스템 전체 PM2 서비스에서 관리하는 프로세스를 나열하므로 관리자와 개발자가 서버 관리에 대해 더 쉽게 협력할 수 있습니다.
PM2를 Ubuntu 인스턴스에서 시스템 전체 서비스로 설정하면 Node.js 애플리케이션이 강력하게 관리되고 서버의 모든 사용자가 액세스할 수 있습니다. 이 설정은 사용자가 여러 명이거나 자동화된 배포 프로세스가 있는 환경에서 특히 유용하며, 애플리케이션을 관리하는 안정적이고 중앙 집중화된 방법을 제공합니다.
이 가이드에 설명된 단계를 따르면 모든 사용자가 PM2를 사용할 수 있고 시스템 재부팅 후 프로세스가 자동으로 다시 시작되며 로그에 쉽게 액세스할 수 있습니다. 이는 서버 관리를 단순화할 뿐만 아니라 프로덕션 애플리케이션의 안정성도 향상시킵니다.
즐거운 코딩하세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3