Đây là một câu hỏi cũ, nhưng được xếp hạng cao trên Google. Tôi gần như không thể tin vào các câu trả lời được bình chọn cao nhất, bởi vì chạy quy trình node.js bên trong phiên màn hình, với &
hoặc thậm chí vớinohup
cờ - tất cả chúng - chỉ là cách giải quyết.
Đặc biệt là giải pháp màn hình / tmux, thực sự nên được coi là một giải pháp nghiệp dư . Màn hình và Tmux không có nghĩa là để giữ cho các quy trình hoạt động, nhưng cho các phiên thiết bị đầu cuối ghép kênh. Thật tốt, khi bạn đang chạy một tập lệnh trên máy chủ của mình và muốn ngắt kết nối. Nhưng đối với máy chủ node.js, bạn không muốn quy trình của mình được gắn vào phiên cuối. Điều này quá mong manh. Để giữ cho mọi thứ chạy, bạn cần phải tiến hành quá trình!
Có rất nhiều công cụ tốt để làm điều đó.
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
Một lợi thế lớn mà tôi thấy có lợi cho PM2 là nó có thể tạo tập lệnh khởi động hệ thống để duy trì quá trình giữa các lần khởi động lại:
$ pm2 startup [platform]
Nơi platform
có thể ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
.
ever.js : https://github.com/forverjs/forver
# 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
Kịch bản ban đầu :
Tôi không đi sâu vào chi tiết về cách viết tập lệnh init, bởi vì tôi không phải là chuyên gia trong chủ đề này và nó quá dài cho câu trả lời này, nhưng về cơ bản chúng là các tập lệnh shell đơn giản, được kích hoạt bởi các sự kiện OS. Bạn có thể đọc thêm về điều này ở đây
Docker :
Chỉ cần chạy máy chủ của bạn trong bộ chứa Docker với -d
tùy chọn và, voilá , bạn có một máy chủ node.js được daemonized!
Dưới đây là một Dockerfile mẫu (từ hướng dẫn chính thức của 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" ]
Sau đó, xây dựng hình ảnh của bạn và chạy container của bạn:
$ docker build -t <your username>/node-web-app .
$ docker run -p 49160:8080 -d <your username>/node-web-app
Hy vọng điều này sẽ giúp ai đó hạ cánh trên trang này. Luôn luôn sử dụng các công cụ thích hợp cho công việc. Nó sẽ giúp bạn tiết kiệm rất nhiều đau đầu và qua nhiều giờ!
exit
. Khi tôi chỉ đóng cửa sổ Putty thì thất bại.