[node.js] Node.js 애플리케이션을 자체 프로세스로 실행하려면 어떻게합니까?
Node.js를 배포하는 가장 좋은 방법은 무엇입니까?
나는 Dreamhost VPS (그들이 VM 이라고 부름 )를 가지고 있으며 Node.js를 설치하고 프록시를 설정할 수있었습니다. 노드를 시작한 SSH 연결을 열린 상태로 유지하는 한 효과적입니다.
답변
2016 답변 : 거의 모든 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=nobody
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/myapp
[Install]
WantedBy=multi-user.target
유닉스를 처음 접한다면 첫 번째 줄에 /var/www/myapp/app.js
있어야 #!/usr/bin/env node
합니다.
서비스 파일을 /etc/systemd/system
폴더에 복사하십시오 .
로 새로운 서비스에 대해 systemd에 알려주십시오 systemctl daemon-reload
.
로 시작하십시오 systemctl start myapp
.
로 부팅시 실행되도록 설정하십시오 systemctl enable myapp
.
로 로그 참조 journalctl -u myapp
이는 Linux, 2018 년 에디션 에서 노드 앱을 배포하는 방법 에서 가져온 것으로 , 여기에는 .service
파일을 포함하여 Linux / 노드 서버를 빌드하기위한 AWS / DigitalOcean / Azure CloudConfig 생성 명령이 포함되어 있습니다.
답변
영원히 사용하십시오 . 별도의 프로세스에서 Node.js 프로그램을 실행하고 죽으면 다시 시작합니다.
용법:
forever start example.js
프로세스를 시작합니다.forever list
영원히 시작된 모든 프로세스 목록을 보려면forever stop example.js
프로세스forever stop 0
를 중지 하거나 인덱스가 0 인 프로세스를 중지하려면 (로 표시forever list
)
답변
답변
pm2 는 트릭을 수행합니다.
기능은 다음과 같습니다. 모니터링, 핫 코드 재로드, 내장로드 밸런서, 자동 시작 스크립트 및 부활 / 덤프 프로세스.
답변
당신은 사용할 수 있습니다 monit
, forever
, upstart
또는 systemd
서버를 시작합니다.
Nginx 대신 Varnish 또는 HAProxy를 사용할 수 있습니다 (Nginx는 웹 소켓에서 작동하지 않는 것으로 알려져 있음).
신속하고 더러운 솔루션으로서 당신이 사용할 수있는 nohup node your_app.js &
앱이 서버와 함께 종료 방지 할 수 있지만 forever
, monit
다른 제안 된 솔루션은 더 낫다.
답변
현재 내 앱에 사용되는 Upstart 스크립트를 만들었습니다.
description "YOUR APP NAME"
author "Capy - http://ecapy.com"
env LOG_FILE=/var/log/node/miapp.log
env APP_DIR=/var/node/miapp
env APP=app.js
env PID_NAME=miapp.pid
env USER=www-data
env GROUP=www-data
env POST_START_MESSAGE_TO_LOG="miapp HAS BEEN STARTED."
env NODE_BIN=/usr/local/bin/node
env PID_PATH=/var/opt/node/run
env SERVER_ENV="production"
######################################################
start on runlevel [2345]
stop on runlevel [016]
respawn
respawn limit 99 5
pre-start script
mkdir -p $PID_PATH
mkdir -p /var/log/node
end script
script
export NODE_ENV=$SERVER_ENV
exec start-stop-daemon --start --chuid $USER:$GROUP --make-pidfile --pidfile $PID_PATH/$PID_NAME --chdir $APP_DIR --exec $NODE_BIN -- $APP >> $LOG_FILE 2>&1
end script
post-start script
echo $POST_START_MESSAGE_TO_LOG >> $LOG_FILE
end script
######### 전에 모두 사용자 정의하고 /etc/init/your-service.conf에 파일을 작성하여 붙여 넣으십시오.
그럼 당신은 할 수 있습니다 :
start your-service
stop your-service
restart your-service
status your-service