이것은 오래된 질문이지만 Google에서 높은 순위입니다. 화면 세션 내에서, &
또는 nohup
플래그 와 함께 node.js 프로세스를 실행하는 것은 단지 해결 방법 이기 때문에 가장 높은 투표 응답을 거의 믿을 수 없습니다 .
특히 screen / tmux 솔루션은 실제로 아마추어 솔루션 으로 간주되어야 합니다. Screen 및 Tmux는 프로세스를 계속 실행하기위한 것이 아니라 멀티플렉싱 터미널 세션을위한 것입니다. 서버에서 스크립트를 실행 중이고 연결을 끊고 싶을 때 좋습니다. 그러나 node.js 서버의 경우 프로세스가 터미널 세션에 연결되기를 원하지 않습니다. 이것은 너무 연약하다. 작업을 계속 실행하려면 프로세스를 데몬으로 사용해야합니다!
이를위한 좋은 도구가 많이 있습니다.
PM2 : http://pm2.keymetrics.io/
# basic usage
$ npm install pm2 -g
$ pm2 start server.js
# you can even define how many processes you want in cluster mode:
$ pm2 start server.js -i 4
# you can start various processes, with complex startup settings
# using an ecosystem.json file (with env variables, custom args, etc):
$ pm2 start ecosystem.json
PM2에 유리한 한 가지 큰 장점은 시스템 시작 스크립트를 생성하여 프로세스가 다시 시작될 때까지 프로세스를 지속시킬 수 있다는 것입니다.
$ pm2 startup [platform]
어디 platform
있을 수 있습니다 ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
.
forever.js : https://github.com/foreverjs/forever
# basic usage
$ npm install forever -g
$ forever start app.js
# you can run from a json configuration as well, for
# more complex environments or multi-apps
$ forever start development.json
초기화 스크립트 :
나는 init 스크립트를 작성하는 방법에 대해 자세히 설명하지 않습니다. 왜냐하면 나는이 주제의 전문가가 아니며이 답변에 너무 오래 걸리기 때문에 기본적으로 OS 이벤트에 의해 트리거되는 간단한 쉘 스크립트입니다. 이에 대한 자세한 내용은 여기를 참조하십시오
도커 :
단지와 부두 노동자 컨테이너에 서버를 실행하는 -d
옵션을 선택하고, 짜잔 , 당신은 daemonized Node.js를 서버가 있습니다!
다음은 샘플 Dockerfile입니다 (node.js 공식 안내서 ).
FROM node:argon
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
EXPOSE 8080
CMD [ "npm", "start" ]
그런 다음 이미지를 빌드하고 컨테이너를 실행하십시오.
$ docker build -t <your username>/node-web-app .
$ docker run -p 49160:8080 -d <your username>/node-web-app
이 페이지에 누군가가 방문하는 데 도움이되기를 바랍니다. 항상 작업에 적합한 도구를 사용하십시오. 많은 두통과 시간을 절약 할 수 있습니다!
exit
. 퍼티 창을 닫으면 실패합니다.