我正在使用npm包express版本2.5.2和節點版本.0.6.5。我似乎在Debian 4.4.5上運行bash 4.1.5版。如何通過sudo在生產模式下運行node.js Express?
我試圖在生產模式下運行我的服務器,但它仍然以開發模式運行。
我在bash shell中運行這些命令:
$ export NODE_ENV=production
$ echo $NODE_ENV
production
$ sudo echo $NODE_ENV
production
$ sudo node bootstrap.js
我有這樣的代碼裏面bootstrap.js:
var bootstrap_app = module.exports = express.createServer();
//...
console.log(bootstrap_app.settings.env);
和這裏就是我看到打印到標準輸出:
development
這是我的用法問題,還是我的系統問題?
編輯: 感謝ThiefMaster爲他正確地確定此問題源於我的運行節點作爲根。 ThiefMaster建議使用iptables從端口80轉發到非特權端口,但是我的系統給我一個錯誤。將此討論移至superuser.com或serverfault.com(要關注鏈接)
當出於安全原因使用sudo時,大多數環境變量未設置。因此,如果不修改sudoers文件以允許該變量通過,則無法將該環境變量傳遞給節點。但是,無論如何,您都不應該以root身份運行節點。如果您只需要它用於端口80,請在非特權端口上運行節點,並設置iptables forward以將端口80映射到該端口。 – ThiefMaster 2012-02-22 14:45:56
感謝您的建議! 我運行了一個非端口80應用程序,它正確地將環境識別爲生產環境! 你應該發佈這個答案 - 我會接受它。 再次感謝! – Aaron 2012-02-22 15:01:22
我只是試圖安裝和使用iptables(iptables -t -nat L)並得到錯誤「iptables v1.4.8:無法初始化iptables表nat':權限被拒絕(您必須是root) 也許iptables或者你的內核需要升級。「 Debian 4.4是一個相當老的版本,對吧?/ proc/version說」Linux version 3.1.9-vs2.3.2.5「 – Aaron 2012-02-22 15:07:41