นี่เป็นคำถามเก่า แต่มีอันดับสูงใน Google ฉันแทบจะไม่เชื่อในคำตอบที่ได้รับการโหวตสูงสุดเพราะการรันกระบวนการ node.js ภายในเซสชันหน้าจอด้วย&
หรือแม้กระทั่งกับnohup
ตั้งค่าสถานะ - ทั้งหมดของพวกเขา - เป็นเพียงการแก้ปัญหา
โซลูชัน 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 เพราะฉันไม่ใช่ผู้เชี่ยวชาญในเรื่องนี้และมันอาจยาวเกินไปสำหรับคำตอบนี้ แต่โดยทั่วไปแล้วพวกเขาเป็นสคริปต์เชลล์แบบง่าย ๆ ซึ่งถูกเรียกใช้โดยเหตุการณ์ของระบบปฏิบัติการ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่นี่
นักเทียบท่า :
เพียงแค่เรียกใช้เซิร์ฟเวอร์ของคุณในภาชนะที่หางมี-d
ตัวเลือกและvoiláคุณมีเซิร์ฟเวอร์ Node.js daemonized!
นี่คือตัวอย่าง 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
งานเมื่อฉันออกจากเทอร์โดยการพิมพ์ เมื่อฉันเพิ่งปิดหน้าต่างโป๊วมันล้มเหลว