programing

node.js 애플리케이션을 영구적으로 실행하는 방법은 무엇입니까?

megabox 2023. 5. 29. 10:30
반응형

node.js 애플리케이션을 영구적으로 실행하는 방법은 무엇입니까?

Debian 서버에 Node.js를 설치했습니다.다음 명령줄을 사용하여 퍼티에서 앱을 실행하는 방법을 이해합니다.

node /srv/www/MyUserAccount/server/server.js

그리고 주소에 있는 그것에 도달합니다.50.51.52.53:8080(IP 및 포트).

, 할 수 .50.51.52.53:8080더이상.

Node.js 응용 프로그램을 영구적으로 실행하는 방법은 무엇입니까?

짐작하시겠지만, 저는 Linux와 Node.js의 초보자입니다.

다음과 같이 npm을 사용하여 영구 설치할 수 있습니다.

sudo npm install -g forever

그런 다음 다음 프로그램을 시작합니다.

forever server.js

또는 서비스로서:

forever start server.js

영구는 어떤 이유로 앱이 중단되거나 중지될 때 앱을 다시 시작합니다.다시 시작을 5로 제한하려면 다음을 사용할 수 있습니다.

forever -m5 server.js

실행 중인 모든 프로세스를 나열하는 방법

forever list

괄호 안의 정수를 기록하고 다음과 같이 사용하여 프로세스를 중지합니다.

forever stop 0

실행 중인 프로세스를 다시 시작하면 다음 작업이 수행됩니다.

forever restart 0

만약 당신이 당신의 파일을 , 은 응프로램작중사수있다용습니할다음을 할 수 .-w언제든지 자동으로 다시 시작할 매개 변수server.js파일 변경:

forever -w server.js

다른 답변들이 OP의 문제를 해결하지만, 그들은 모두 과잉 살상이며 그 또는 그녀가 왜 이 문제를 겪고 있는지 설명하지 못합니다.

핵심은 이 행입니다. "퍼티를 닫으면 주소에 연결할 수 없습니다."

Putty에서 원격 호스트에 로그인하면 SSH Linux 프로세스가 시작되고 해당 SSH 세션에서 입력한 모든 명령이 해당 프로세스의 자식으로 실행됩니다.

문제는 Putty를 닫으면 SSH 세션이 종료되어 해당 프로세스와 모든 활성 하위 프로세스가 종료된다는 것입니다.퍼티를 닫을 때 서버를 포그라운드에서 실행했기 때문에 실수로 서버를 종료합니다.이 동작을 방지하려면 명령에 &을 추가하여 서버를 백그라운드에서 실행합니다.

node /srv/www/MyUserAccount/server/server.js &

여기서 문제는 리눅스 지식의 부족이지 노드에 대한 질문이 아닙니다.자세한 내용은 http://linuxconfig.org/understanding-foreground-and-background-linux-processes 을 참조하십시오.

업데이트:

다른 사람들이 언급했듯이, 노드 서버는 단말기를 종료할 때 여전히 중단될 수 있습니다.제가 발견한 공통적인 문제는 노드 프로세스가 bg에서 실행되고 있음에도 불구하고 stdout이고 stderr가 여전히 터미널을 가리키고 있다는 것입니다.즉, 노드 서버가 console.log 또는 console.error에 쓸 경우 파이프 오류가 발생하고 충돌이 발생합니다.이 문제는 공정의 출력을 파이프로 연결하여 방지할 수 있습니다.

node /srv/www/MyUserAccount/server/server.js > stdout.txt 2> stderr.txt &

문제가 지속되면 tmuxnohup과 같은 노드별 솔루션보다 강력한 기능을 사용해야 합니다. 이는 모든 유형의 프로세스(데이터베이스, 로깅 서비스, 기타 언어)를 실행하는 데 사용할 수 있기 때문입니다.

할 수 는 " " " 를 후 " " 입니다.nohup node your_path/server.js &클릭 한 번으로 퍼티 터미널을 닫습니다.당신은 야합다니해를 사용해야 .exit명령을 실행하면 노드 서버가 실행됩니다.

PM2는 로드 밸런서가 내장된 Node.js 애플리케이션의 프로덕션 프로세스 관리자입니다.

PM2 설치

$ npm install pm2 -g

응용 프로그램 시작

$ pm2 start app.js

만약 당신이 익스프레스를 사용한다면 당신은 당신의 앱을 시작할 수 있습니다.

pm2 start ./bin/www --name="app"

실행 중인 모든 프로세스 나열:

$ pm2 list

모든 프로세스가 나열됩니다.그런 다음 다음 다음 명령을 사용하여 앱의 ID 또는 이름을 사용하여 서비스를 중지/재시작할 수 있습니다.

$ pm2 stop all                  
$ pm2 stop 0                    
$ pm2 restart all               

로그 표시 방법

$ pm2 logs ['all'|app_name|app_id]

충돌 시 노드를 재시작하고 이를 데몬화하는 작업을 처리하기 위해 포에버와 같은 것을 찾는 것이 좋습니다.

항상 단말기에서 노드 앱을 실행하고 싶다면 화면을 사용하면 됩니다.

ubuntu/debian에 설치:

sudo apt-get install screen

용도:

$ screen
$ node /path/to/app.js

ctrl + a그리고 나서.ctrl + d 해고하다

돌려받기:

화면: 한화면:screen -r

두 개 이상의 화면이 있는 경우 다음을 사용하여 모든 화면을 나열할 수 있습니다.screen -ls

그리고 나서:screen -r pid_number

당신은 이것을 간단하게 사용할 수 있습니다.

nohup node /srv/www/MyUserAccount/server/server.js &

이렇게 하면 응용 프로그램이 계속 실행되고 종료하려면 응용 프로그램을 종료해야 합니다.

를 위해 설할수있을 할 수 .htop kill합니다.

Forever는 정확히 그렇게 하기에 매우 좋은 NodeJs 모듈입니다.

를 설치합니다.forever

$ npm install forever -g

그런 다음 다음 명령을 사용하여 node.js 스크립트를 실행합니다.

$ forever start /path/to/script.js

당신은 가도 좋습니다.또한 실행할 수 있습니다.

$ forever list

실행 중인 모든 스크립트를 확인합니다.다음을 입력하여 특정 스크립트를 종료할 수 있습니다.

$ forever stop [pid]

[pid]는 에얻스프트의입로스다니세크에서 입니다.list지휘권모든 스크립트를 중지하려면 다음과 같이 입력합니다.

$ forever stopall

설치

$ [sudo] npm install forever -g

영원히 사용하여 스크립트를 계속 실행할 수 있습니다.

forever start server.js

forever list

정차용으로

forever stop server.js

개발 중에는 demon을 사용하지 않는 것이 좋습니다.파일이 변경될 때마다 서버가 다시 시작됩니다.다른 사람들이 지적했듯이, 포에버는 옵션이지만 프로덕션에서는 사용 중인 플랫폼에 따라 다릅니다.일반적으로 운영 체제에서 권장하는 서비스 유지 방법(예: http://www.freedesktop.org/wiki/Software/systemd/) )을 사용할 수 있습니다.

작동하지 않습니다. AWS Ubunto vm에서 확인했습니다. 올바른 지침을 따르십시오.syntax

ubuntu@ip-172-00-00-00:~/ms$ nohup node server.js &

그런 다음 Enter 키를 누르면 이 라인이 표시됩니다.

ubuntu@ip-172-00-00-00:~/ms$ nohup: ignoring input and appending output to ‘nohup.out’

그러면 이것을 타이핑합니다.

rm nohup.out

여기에 이미지 설명 입력

개인 프로젝트를 위해 사용해 온 신생 솔루션은 다음과 같습니다.

배치에 ./etc/init/node_app_daemon.conf:

description "Node.js Daemon"
author      "Adam Eberlin"

stop on shutdown

respawn
respawn limit 3 15

script
  export APP_HOME="/srv/www/MyUserAccount/server"
  cd $APP_HOME
  exec sudo -u user /usr/bin/node server.js
end script

또한 응용 프로그램이 충돌할 경우 다시 경고하는 작업도 처리합니다.응용 프로그램이 15초 이내에 3회 이상 충돌할 경우 프로그램을 다시 시작하려는 시도를 포기합니다.

pm2를 글로벌하게 처음 설치합니다.

npm install -g pm2

그럼 시작

pm2 start bin/www 

저는 그 일을 완벽하게 잘 해낼 수 있다는 것을 영원히 발견했습니다.

npm이 이미 설치되어 있다고 가정하고, 설치되어 있지 않은 경우에만

sudo apt-get install npm

그러면 영원히 설치

npm install forever --global

이제 이렇게 실행할 수 있습니다.

forever start app.js

https://codingweb.io/run-nodejs-application-background/

다른 패키지를 설치할 필요가 없습니다.

이 명령 실행

node server.js > stdout.txt 2> stderr.txt &

server.js는 서버 파일이거나 api.js일있습니다.

그 후 터미널을 닫기 위해 "종료"를 누릅니다.

exit

다른 방법은 앱의 시스템 단위를 만드는 것입니다. "/etc/systemd/system" 폴더에 다음과 유사한 "XXX.service" 파일을 만듭니다.

[Unit]
Description=swagger
After=network.target

[Service]
ExecStart=/usr/bin/http-server /home/swagger/swagger-editor &
WorkingDirectory=/home/swagger
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

이점은 앱이 서비스로 실행되고 충돌 시 자동으로 다시 시작된다는 것입니다.

systemctl을 사용하여 관리할 수도 있습니다.

systemctl start XXX하려면 , 서스를시위해기작하비,systemctl stop XXX그것을 멈추기 위해 그리고systemctl enable XXX시스템 부팅 시 앱을 자동으로 시작합니다.

ㅠㅠpm2응용프로그램을 영구적으로 실행할 수 있습니다.

npm install -g pm2

그런 다음 사용합니다.

pm2 start server.js

앱을 나열하고 중지하려면 명령 사용

pm2 list

pm2 stop 0

이것이 당신에게 도움이 되기를 바랍니다.

명령줄에서 영구 설치:

npm install forever -g

예제 파일을 만듭니다.

sudo nano server.js 

파일을 편집하고 브라우저에서 직접 결과를 얻을 수 있습니다.
filezilla 또는 임의의 편집기를 사용하여 파일을 편집할 수 있습니다.합니다.

forever start --minUptime 1 --spinSleepTime 1000 -w server.js

여기에 이미지 설명 입력

영원한 패키지는 저에게 효과가 있었습니다. 단 한 가지, 딥 러닝에 따라 다릅니다. 따라서 설치하는 데 문제가 있었다면 다음과 같습니다.

npm -g install forever

시도:

npm -g install forever deep-equal@1.1.1

대신.

우리는 이것을 하기 위한 많은 옵션들이 있다는 것을 알고 있습니다.다음은 별도의 프로그램/패키지가 필요 없는 순수한 Shell 솔루션입니다.

이 다시 됩니다.server.js어떤 이유로/오류가 발생할 경우

예를 들어 이것이run.sh:

#!/usr/bin/env sh

while :; do
    node server.js

    echo "Restarting..."
    sleep 1
done

다음을 수행합니다.run.sh파일 실행 파일:

chmod +x run.sh

실행 방법:

./run.sh

백그라운드에서 실행하려는 경우:

./run.sh &

백그라운드에서 초저소음으로 실행(출력 없이 분리됨):

( ./run.sh > /dev/null 2>&1 & )

Node.js 응용 프로그램의 프로세스 관리자인 PM2를 사용하는 것이 좋습니다.PM2는 애플리케이션을 관리하고 데몬화하는 간편한 방법을 제공합니다(서비스로 실행).

이 링크 참조 - https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-centos-7

언급URL : https://stackoverflow.com/questions/12701259/how-to-make-a-node-js-application-run-permanently

반응형