Cập nhật 2016:
Chuỗi nút-windows / mac / linux sử dụng API chung trên tất cả các hệ điều hành, vì vậy đây hoàn toàn là một giải pháp phù hợp. Tuy nhiên; node-linux tạo tập tin init systemv. Khi systemd tiếp tục phát triển phổ biến, thực tế đây là một lựa chọn tốt hơn trên Linux. Chào mừng bạn nếu ai đó muốn thêm hỗ trợ systemd cho nút-linux :-)
Chủ đề gốc:
Đây là một chủ đề khá cũ bây giờ, nhưng các nút cửa sổ cung cấp một cách khác để tạo các dịch vụ nền trên Windows. Nó dựa trên nssm
khái niệm sử dụng một exe
trình bao bọc xung quanh tập lệnh nút của bạn. Tuy nhiên; winsw.exe
thay vào đó, nó sử dụng và cung cấp một trình bao bọc nút có thể cấu hình để kiểm soát chi tiết hơn về cách quá trình bắt đầu / dừng khi gặp sự cố. Các quy trình này có sẵn như bất kỳ dịch vụ nào khác:
Các mô-đun cũng bakes trong một số ghi nhật ký sự kiện:
Daemonizing kịch bản của bạn được thực hiện thông qua mã. Ví dụ:
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name:'Hello World',
description: 'The nodejs.org example web server.',
script: 'C:\\path\\to\\my\\node\\script.js'
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
});
// Listen for the "start" event and let us know when the
// process has actually started working.
svc.on('start',function(){
console.log(svc.name+' started!\nVisit http://127.0.0.1:3000 to see it in action.');
});
// Install the script as a service.
svc.install();
Mô-đun hỗ trợ những thứ như giới hạn khởi động lại (vì vậy các tập lệnh xấu không làm hỏng máy chủ của bạn) và khoảng thời gian tăng dần giữa các lần khởi động lại.
Vì các dịch vụ nút-windows chạy như mọi dịch vụ khác, nên có thể quản lý / giám sát dịch vụ với bất kỳ phần mềm nào bạn đã sử dụng.
Cuối cùng, không có make
sự phụ thuộc. Nói cách khác, một cách đơn giảnnpm install -g node-windows
sẽ làm việc. Bạn không cần Visual Studio, .NET hoặc ma thuật nút-gyp để cài đặt cái này. Ngoài ra, đó là MIT và BSD được cấp phép.
Trong tiết lộ đầy đủ, tôi là tác giả của mô-đun này. Nó được thiết kế để giảm bớt nỗi đau chính xác mà OP đã trải qua, nhưng với sự tích hợp chặt chẽ hơn vào chức năng mà Hệ điều hành đã cung cấp. Tôi hy vọng những người xem trong tương lai với câu hỏi tương tự sẽ thấy nó hữu ích.