it-swarm.com.de

Process.env-Variablen mit EXPORT einrichten, während der Knoten mit Sudo ausgeführt wird

Ich verwende node.js auf EC2

Ich tippe 

EXPORT PORT=80

in terminal, und ich sehe, dass es richtig speichert, wenn ich EXPORT eingebe

Wenn ich jedoch meine node.js-App mit folgendem Befehl ausführen:

...
console.log(process.env);
...

PORT ist im Objekt nicht aufgeführt, wenn ich es mit Sudo betreibe:

Sudo node app.js

Wie kann ich PORT so einstellen, dass ich vom verfahren.env-Objekt aus darauf zugreifen kann, während der Knoten mit sudo ausgeführt wird?

18

Um die Variable process.env festzulegen, verwenden Sie den folgenden Code:

Sudo PORT=80 node server.js

Natürlich können Sie mehrere process.env-Variablen festlegen:

Sudo PORT=80 Host=localhost node server.js

Normalerweise sollte auch EXPORT funktionieren. Sudo erstellt jedoch eigene Umgebungen und startet Ihr Programm dann als root. Sie müssen also entweder PORT zur Umgebung von Sudo hinzufügen oder erzwingen, dass Ihre eigene Umgebung erhalten bleibt.

Um die Umgebung von Sudo zu ändern, müssen Sie /root/.profile ändern.

Um es zu erzwingen, dass Ihre eigene Umgebung erhalten bleibt, verwenden Sie die -E-Taste:

Sudo -E node app.js
22

Wenn Sie dies dauerhaft einrichten möchten:

  1. Öffnen Sie Ihr Bash-Profil vim ~/.bash_profile
  2. Fügen Sie die Umgebungsvariable der Datei export PORT=80 hinzu.
  3. Öffnen Sie die Sudoers-Konfigurationsdatei Sudo visudo.
  4. Fügen Sie der Datei die folgende Zeile genau so hinzu: Defaults env_keep +="PORT"

Wenn Sie nun Sudo node app.js ausführen, sollte es wie gewünscht funktionieren, wobei der Port auf 80 eingestellt ist.

0
Kyle Chadha