개발관련/other

node.js 앱을 백그라운드 서비스로 실행하는 방법

Rateye 2021. 10. 5. 10:47
728x90
반응형
질문 : node.js 앱을 백그라운드 서비스로 실행하려면 어떻게해야합니까?

이 게시물은 수년 동안 많은 관심을 받았기 때문에이 게시물 하단에 플랫폼 별 상위 솔루션을 나열했습니다.

원본 게시물 :

내 node.js 서버가 백그라운드에서 실행되기를 원합니다. 즉, 터미널을 닫을 때 서버가 계속 실행되기를 원합니다. 나는 이것을 봤고이 튜토리얼을 생각해 냈지만 의도 한대로 작동하지 않는다. 따라서 데몬 스크립트를 사용하는 대신 출력 리디렉션 ( 2>&1 >> file 부분)을 사용했다고 생각했지만이 역시 종료되지 않습니다. 출력 / 오류를 기다리는 것처럼 터미널에 빈 줄이 표시됩니다. .

나는 또한 프로세스를 백그라운드에 두려고 시도했지만 터미널을 닫 자마자 프로세스도 종료됩니다.

그렇다면 로컬 컴퓨터를 종료 할 때 어떻게 실행 상태로 둘 수 있습니까?

최고의 솔루션 :

답변

Node.js 애플리케이션을 자체 프로세스로 실행하는 방법 에서 내 답변을 복사합니까?

2015 답변 : 거의 모든 Linux 배포판이 systemd와 함께 제공 되므로 영원히 monit, PM2 등이 더 이상 필요하지 않습니다 . OS는 이미 이러한 작업을 처리합니다.

myapp.service 파일을 만듭니다 (분명히 'myapp'을 앱 이름으로 대체).

[Unit]
Description=My app

[Service]
ExecStart=/var/www/myapp/app.js
Restart=always
User=nobody
# Note Debian/Ubuntu uses 'nogroup', RHEL/Fedora uses 'nobody'
Group=nogroup
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/myapp

[Install]
WantedBy=multi-user.target

Unix를 처음 사용하는 경우 : /var/www/myapp/app.js #!/usr/bin/env node 가 있어야하며 실행 모드가 chmod +x myapp.js 합니다.

서비스 파일을 /etc/systemd/system 복사하십시오.

systemctl start myapp 시작하십시오.

systemctl enable myapp 으로 부팅시 실행되도록 활성화합니다.

journalctl -u myapp 로그보기

.service 파일 포함)를 빌드하기 위해 AWS / DigitalOcean / Azure CloudConfig를 생성하는 명령도 포함하는 Linux, 2018 버전에 노드 앱을 배포하는 방법 에서 가져 왔습니다.

출처 : https://stackoverflow.com/questions/4018154/how-do-i-run-a-node-js-app-as-a-background-service
728x90
반응형