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