Tôi đang sử dụng gói npm express phiên bản 2.5.2 với phiên bản nút .0.6.5. Dường như tôi đang chạy phiên bản bash 4.1.5 trên Debian 4.4.5.Làm cách nào để chạy node.js Express ở chế độ sản xuất qua sudo?
Tôi đang cố chạy máy chủ ở chế độ sản xuất nhưng máy vẫn chạy trong chế độ phát triển.
tôi chạy các lệnh trong shell bash của tôi:
$ export NODE_ENV=production
$ echo $NODE_ENV
production
$ sudo echo $NODE_ENV
production
$ sudo node bootstrap.js
tôi có mã này bên bootstrap.js:
var bootstrap_app = module.exports = express.createServer();
//...
console.log(bootstrap_app.settings.env);
và đây là những gì tôi thấy in tiêu chuẩn ra:
development
Đây có phải là vấn đề với việc sử dụng của tôi hoặc hệ thống của tôi không?
CHỈNH SỬA: Cảm ơn ThiefMaster đã xác định chính xác vấn đề này xuất phát từ nút đang chạy của tôi dưới dạng gốc. ThiefMaster đề nghị sử dụng iptables để chuyển tiếp từ cổng 80 đến một cổng không có đặc quyền, nhưng hệ thống của tôi đã cho tôi một lỗi. Chuyển cuộc thảo luận này sang superuser.com hoặc serverfault.com (liên kết để theo dõi)
Hầu hết các biến môi trường không được đặt khi sử dụng sudo vì lý do bảo mật. Vì vậy, bạn không thể chuyển biến môi trường đó đến nút mà không sửa đổi tệp sudoers của bạn để cho phép biến đó chuyển qua. Tuy nhiên, bạn không nên chạy nút dưới dạng root. Nếu bạn chỉ cần nó cho cổng 80, hãy chạy nút trên một cổng không có đặc quyền và thiết lập một iptables về phía trước để ánh xạ cổng 80 đến cổng đó. – ThiefMaster
Cảm ơn bạn đã đề xuất! Tôi đã chạy một trong các ứng dụng không phải cổng 80 và đã xác định chính xác môi trường là sản xuất! Bạn nên đăng câu trả lời này - Tôi sẽ chấp nhận nó. Cảm ơn bạn lần nữa! – Aaron
Tôi vừa thử cài đặt và sử dụng iptables (iptables -t -nat L) và gặp lỗi "iptables v1.4.8: không thể khởi tạo bảng iptables' nat ': Quyền bị từ chối (bạn phải root) Có lẽ iptables hoặc hạt nhân của bạn cần được nâng cấp." Debian 4.4 là một phiên bản khá cũ, phải không?/Proc/phiên bản nói" Phiên bản Linux 3.1.9-vs2.3.2.5 " – Aaron