node.js 서버를 데몬 프로세스로 어떻게 시작합니까?
Python Twisted에는 twistd
애플리케이션 실행과 관련된 여러 가지 작업에 도움 이되는 명령이 있습니다 (예 : 데몬 화).
현재 세션이 닫힌 후에도 실행할 수 있도록 node.js 서버 를 데몬 화하는 방법은 무엇입니까?
당신의 도움을 주셔서 감사합니다
영원히 당신의 질문에 대한 대답입니다.
설치
$ curl https://npmjs.org/install.sh | sh
$ npm install forever
# Or to install as a terminal command everywhere:
$ npm install -g forever
용법
명령 줄에서 Forever 사용
$ forever start server.js
Node.js에서 Forever 인스턴스 사용
var forever = require('forever');
var child = new forever.Forever('your-filename.js', {
max: 3,
silent: true,
args: []
});
child.on('exit', this.callback);
child.start();
프로세스가 영원히 중계되지 않고 스스로 데몬 화해야하는 경우 데몬 화 모듈을 사용할 수 있습니다 .
$ npm install daemonize2
그런 다음 예와 같이 서버 파일을 작성하십시오.
var daemon = require("daemonize2").setup({
main: "app.js",
name: "sampleapp",
pidfile: "sampleapp.pid"
});
switch (process.argv[2]) {
case "start":
daemon.start();
break;
case "stop":
daemon.stop();
break;
default:
console.log("Usage: [start|stop]");
}
그것은 오히려 낮은 수준의 접근 방식입니다.
업데이트 : 나는 pm2의 최신 정보를 포함하도록 업데이트했습니다.
많은 사용 사례에서 systemd 서비스를 사용하는 것이 노드 프로세스를 관리하는 가장 간단하고 적절한 방법입니다. 단일 환경에서 수많은 노드 프로세스 또는 독립적으로 실행되는 노드 마이크로 서비스를 실행하는 경우 pm2는보다 완전한 기능을 갖춘 도구입니다.
https://github.com/unitech/pm2
- 그것은 정말 유용한 모니터링 기능을 가지고 있습니다-> 여러 프로세스의 명령 줄 모니터링
pm2 monit
또는 프로세스 목록에 대한 예쁜 'gui'pm2 list
- 체계적인 로그 관리->
pm2 logs
- 다른 것들 :
- 동작 구성
- 소스 맵 지원
- PaaS 호환
- 보기 및 새로 고침
- 모듈 시스템
- 최대 메모리 재로드
- 클러스터 모드
- 핫 리로드
- 개발 워크 플로우
- 시작 스크립트
- 자동 완성
- 배포 워크 플로
- Keymetrics 모니터링
- API
systemd
서비스 관리자 데몬 을 시작하려면 서비스 파일을 작성하십시오. 예를 들어 파일을 만듭니다 /etc/systemd/system/myservice.service
.
[Unit]
Description=myservice-description
After=network.target
[Service]
ExecStart=/opt/myservice-location/src/node/server.js --args=here
Restart=always
User=me
Group=group
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/opt/myservice-location
[Install]
WantedBy=multi-user.target
Remember to update the service manager daemon after every change to the myservice.service file.
$ systemctl daemon-reload
Then start the service running and enable the service to start at boot.
$ systemctl start myservice
$ systemctl enable myservice
The simplest approach would just to send the command to the background.
$ node server.js &
Then you can kill the process at a later time. I usually do the following:
$ killall node
Note: I'm running OS X.
You can try:
$ nohup node server.js &
It work for me on Mac and Linux.
The output will be in the ./nohup.out
file
But I still recommend you use pm2
or forever
, because they are easily used for restarting, stopping and logging.
There are more advanced general-purpose runners, such as monit
and runit
.
For the background on the normal way to daemonise on a POSIX system you can search for the C method.
I have not seen enough methods in the node.js API to allow it to be done the C way by hand. However, when using child_process, you can have node.js do it for you:
http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options
I consider this a potential waste of time because there's a good chance your system provides the same.
For example:
http://libslack.org/daemon/manpages/daemon.1.html
If you want something portable (cross platform) the other posts offer solutions that might suffice.
참고URL : https://stackoverflow.com/questions/4903570/how-does-one-start-a-node-js-server-as-a-daemon-process
'Program Tip' 카테고리의 다른 글
jQuery scrollTop은 Chrome에서 작동하지 않지만 Firefox에서는 작동합니다. (0) | 2020.10.11 |
---|---|
CSS3로 반복되는 육각형 패턴 생성 (0) | 2020.10.11 |
유휴 PostgreSQL 연결에 대한 시간 초과가 있습니까? (0) | 2020.10.11 |
모든 Docker 볼륨을 제거하는 방법은 무엇입니까? (0) | 2020.10.11 |
Rails에서 collection_select의 HTML 옵션을 어떻게 설정하나요? (0) | 2020.10.11 |