데몬을 어떤 계정으로 실행해야 하는지, 애플리케이션을 어떻게 추가해야 하는지 고민 중입니다.
현재 루트 디렉토리에 있습니다.
PM2 v4.2.3: 신 데몬(/root/.pm2)
그러나 다른 애플리케이션을 추가하기 위해 bash 스크립트를 실행할 때 sudo 권한이 있는 brad로 로그인합니다. 그래서 다른 데몬을 시작하려고 합니다.
PM2 v4.2.3: 신 데몬(/brad/.pm2)
루트 인스턴스 대신 Brad 인스턴스에 애플리케이션을 추가합니다.
어떻게 구조화해야 할지 잘 모르겠습니다. 궁극적인 목표는 PHP 웹 페이지에서 bash 스크립트를 실행하여 애플리케이션을 추가하는 것입니다. nginx 웹 서버와 php-frm은 www-data 사용자로 실행됩니다. 그러면 해당 사용자로 God Daemon을 실행하고 www-data sudo 권한도 부여해야 합니까? 여기서 보안 문제가 걱정됩니다. 이것이 올바른 해결을 위해 매우 중요하다고 생각하므로 이에 대한 도움을 주시면 감사하겠습니다. 우분투 18.4를 사용하고 있습니다
답변1
StackExchange에 오신 것을 환영합니다. PM2가 간단하게 작동하도록 제어하려는 응용 프로그램과 동일한(격리된) 사용자로 PM2를 실행하는 것이 좋습니다.
먼저 노드 코드를 로컬 사용자로 설정하고 모든 "npm" 명령을 루트가 아닌 로컬 사용자로 실행해야 합니다.
" "을 루트로 실행 하면
npm -g install xyz
패키지는 "/usr/local/lib/node_modules/"로 이동합니다. "-g"는 전역을 의미합니다. 그렇지 않으면 루트 사용자 디렉터리로 이동합니다." " 사용자로 실행 하면
npm install xyz
패키지는 "/home//.pm2/node_modules/"로 이동합니다... 이것이 제가 권장하는 방법입니다.
그런 다음 PM2에 대한 올바른 시작 스크립트를 얻으려면 pm2 startup -u <username> upstart
Ubuntu 14.04와 같은 이전 배포판의 경우 " "를 수행하거나 pm2 startup -u <username>
systemd를 사용하는 최신 배포판의 경우 " "를 수행합니다(스크립트는 자동으로 이를 감지하려고 시도합니다). 여기서 " <username>
"는 '브래드' 케이스입니다. 파일 또는 원하는 다른 것. 우리는 NodeJS 애플리케이션에 대해 별도의 사용자를 생성하여 모든 것이 하나의 사용자 아래로 격리되도록 했으며, 이는 관리도 더 쉽게 만듭니다. 그러나 "brad" 또는 "root"로 로그인하고 pm2를 실행하면 로그인한 사용자 디렉터리에 대해 실행되므로 다른 사용자로 실행 중인 응용 프로그램은 표시되지 않습니다. 즉, pm2를 "brad"로 실행하면 "brad"에서 관리되는 응용 프로그램이 표시됩니다.
pm2 매뉴얼 페이지에 따르면 이를 설정하는 다른 방법이 있지만 제대로 작동하지 않는 것으로 나타났습니다.