Używam pakietu npm express wersja 2.5.2 z wersją węzła .0.6.5. Wygląda na to, że uruchomiłem bash w wersji 4.1.5 na Debianie 4.4.5.Jak uruchomić program node.js Express w trybie produkcyjnym za pomocą sudo?
Próbuję uruchomić mój serwer w trybie produkcyjnym, ale nadal działa w trybie programowania.
uruchomić te polecenia w moim powłoki bash:
$ export NODE_ENV=production
$ echo $NODE_ENV
production
$ sudo echo $NODE_ENV
production
$ sudo node bootstrap.js
Mam ten kod wewnątrz bootstrap.js:
var bootstrap_app = module.exports = express.createServer();
//...
console.log(bootstrap_app.settings.env);
i oto co widzę drukowane na standardowe wyjście:
development
Czy to jest problem z moim użytkowaniem, czy z moim systemem?
EDIT: Dzięki ThiefMaster dla jego prawidłowego identyfikowania, że kwestia ta wynika z mojego węzła uruchomiony jako root. ThiefMaster zasugerował użycie iptables do przekazania z portu 80 do portu nieuprzywilejowanego, ale mój system daje mi błąd. Przenoszenie tej dyskusji do superuser.com lub serverfault.com (link do follow)
Większość zmiennych środowiskowych nie jest ustawiana podczas korzystania z sudo ze względów bezpieczeństwa. Nie można przekazać tej zmiennej środowiskowej do węzła bez modyfikowania pliku sudoers, aby umożliwić przejście tej zmiennej. Jednakże nie powinieneś tak czy inaczej uruchamiać węzła jako root. Jeśli potrzebujesz go tylko dla portu 80, uruchom węzeł na nieuprzywilejowanym porcie i skonfiguruj iptables forward, aby zamapować port 80 na ten port. – ThiefMaster
Dzięki za sugestię! Uruchomiłem jedną z moich aplikacji, które nie były portem 80, i poprawnie zidentyfikowałem środowisko jako produkcję! Powinieneś opublikować to jako odpowiedź - przyjmuję to. Jeszcze raz dziękuję! – Aaron
Właśnie próbowałem zainstalować i używać iptables (iptables -t -nat L) i otrzymałem komunikat "iptables v1.4.8: nie można zainicjować tabeli iptables' nat ': Odmowa uprawnień (musisz być rootem) Być może iptables lub twoje jądro musi zostać zaktualizowany." Debian 4.4 jest dość starą wersją, prawda?/Proc/version mówi" Linux wersja 3.1.9-vs2.3.2.5 " – Aaron