프로덕션 서버에서 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 <username> --hp /home/<username>
여기서 <사용자 이름> PM2를 처음 설정한 사용자의 사용자 이름으로 바꿔야 합니다. 이렇게 하면 PM2 프로세스가 올바른 사용자의 홈 디렉터리에 연결됩니다.
이전 단계의 출력에 제공된 명령을 복사하여 실행합니다. 예:
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
Set this in a global configuration file, like /etc/environment, to make it persistent across sessions.
Once PM2 is set up as a service, users can manage processes using standard PM2 commands. However, depending on the permissions and user roles, some commands might require sudo access. For example:
sudo pm2 list
This command will list the processes managed by the system-wide PM2 service, making it easier for administrators and developers to collaborate on server management.
Setting up PM2 as a system-wide service on your Ubuntu instance ensures that your Node.js applications are robustly managed and accessible to all users on the server. This setup is particularly useful in environments with multiple users or automated deployment processes, providing a reliable and centralized way to manage applications.
By following the steps outlined in this guide, you can ensure that PM2 is available to all users, your processes are automatically restarted after system reboots, and logs are easily accessible. This not only simplifies server management but also enhances the reliability of your applications in production.
Happy coding!
위 내용은 Ubuntu 인스턴스에서 PMor 다중 사용자 액세스 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!