Wie kann ich node.js Express-Produktion-Modus via sudo?

Ich bin mit dem npm-Paket express version 2.5.2 mit Knoten-version .0.6.5. Ich zu sein scheinen, bash, version 4.1.5 auf Debian 4.4.5.

Ich versuche, meinen server in der Produktion-Modus, aber es läuft immer noch in der Entwicklung-Modus.

Ich führen Sie diese Befehle in meine shell bash:

$ export NODE_ENV=production
$ echo $NODE_ENV
production
$ sudo echo $NODE_ENV
production
$ sudo node bootstrap.js

Habe ich diesen code innerhalb bootstrap.js:

var bootstrap_app = module.exports = express.createServer();
//...
console.log(bootstrap_app.settings.env);

und hier ist, was ich sehe, gedruckt auf standard-out:

development

Ist das ein problem bei meiner Nutzung, oder mein system?

EDIT:
Dank ThiefMaster für seine richtig angeben, dass diese Frage stammt aus meiner aktiven Knoten als Wurzel. ThiefMaster schlug mit iptables forward von port 80 auf einen unprivilegierten port, aber mein system gibt mir eine Fehlermeldung. Verschieben diese Diskussion auf superuser.com oder serverfault.com (link Folgen)

  • Die meisten Umgebungsvariablen werden nicht gesetzt, wenn die Verwendung von sudo aus Sicherheitsgründen. So können Sie nicht passieren, dass die Umgebungsvariablen für die Knoten-ohne änderungen an Ihren sudoers-Datei zu erlauben, die variable passt durch. Jedoch, Sie sollte nicht laufen-Knoten als root sowieso. Wenn Sie nur brauchen Sie für port 80 laufen Knoten auf einem unprivilegierten port und setup iptables forward to map port 80, der port.
  • Danke für die Anregung! Ich lief eines meiner non-port-80-apps und korrekt identifiziert die Umwelt als die Produktion! Sollten Sie diesen post als Antwort - ich werde es akzeptieren. Nochmals vielen Dank!
  • Ich habe gerade versucht die Installation und Verwendung von iptables (iptables -t nat-L) und bekam die Fehlermeldung "iptables v1.4.8: can 'T initialize iptables table `nat': Permission denied (you must be root) Vielleicht iptables oder Ihren kernel aktualisiert werden muss." Debian 4.4 ist eine eher alte version, richtig? /proc/version sagt "Linux version 3.1.9-vs2.3.2.5"
  • Ich habe. Jemand dachte, es sollte umgewandelt werden in ein Kommentar. Und Sie können nur die Einrichtung der iptables-forwarding als root. Geschrieben die Antwort wieder.
  • Btw, sudo echo $NODE_ENV funktioniert, weil die variable ersetzt wird, also, was sudo sieht, ist echo "production"
InformationsquelleAutor Aaron | 2012-02-22
Schreibe einen Kommentar