질문 : node.js 앱을 백그라운드 서비스로 실행하려면 어떻게해야합니까?
이 게시물은 수년 동안 많은 관심을 받았기 때문에이 게시물 하단에 플랫폼 별 상위 솔루션을 나열했습니다.
원본 게시물 :
내 node.js 서버가 백그라운드에서 실행되기를 원합니다. 즉, 터미널을 닫을 때 서버가 계속 실행되기를 원합니다. 나는 이것을 봤고이 튜토리얼을 생각해 냈지만 의도 한대로 작동하지 않는다. 따라서 데몬 스크립트를 사용하는 대신 출력 리디렉션 ( 2>&1 >> file
부분)을 사용했다고 생각했지만이 역시 종료되지 않습니다. 출력 / 오류를 기다리는 것처럼 터미널에 빈 줄이 표시됩니다. .
나는 또한 프로세스를 백그라운드에 두려고 시도했지만 터미널을 닫 자마자 프로세스도 종료됩니다.
그렇다면 로컬 컴퓨터를 종료 할 때 어떻게 실행 상태로 둘 수 있습니까?
최고의 솔루션 :
- 시스템 (Linux)
- 출시됨 (Mac)
- node-windows (Windows)
- PM2 (Node.js)
답변
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
'개발관련 > other' 카테고리의 다른 글
Microsoft JSON 날짜 형식을 지정하는 방법 (0) | 2021.10.07 |
---|---|
node.js에서 HTTP POST 요청하는 방법 (0) | 2021.10.06 |
Subversion에서 파일을 무시하는 방법 (0) | 2021.10.05 |
AngularJS : $ scope. $ apply () 호출시 $digest already in progress 오류 해결방법 (0) | 2021.10.01 |
GUID와 UUID간에 차이점 (0) | 2021.10.01 |