Erteilen Sie dem sicheren Benutzer die Berechtigung, Port 80 zu verwenden
Denken Sie daran, dass wir Ihre Anwendungen NICHT als Root-Benutzer ausführen möchten, aber es gibt ein Problem:Ihr sicherer Benutzer hat keine Berechtigung, den Standard-HTTP-Port (80) zu verwenden. Ihr Ziel ist es, eine Website zu veröffentlichen, die Besucher verwenden können, indem sie zu einer einfach zu verwendenden URL wie http://ip:port/
navigieren
Leider müssen Sie normalerweise eine URL wie http://ip:port
verwenden, es sei denn, Sie melden sich als root an - wobei Portnummer> 1024.
Viele Leute bleiben hier stecken, aber die Lösung ist einfach. Es gibt ein paar Optionen, aber das ist die, die ich mag. Geben Sie die folgenden Befehle ein:
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``
Wenn Sie jetzt einer Node-Anwendung mitteilen, dass sie auf Port 80 ausgeführt werden soll, wird sie sich nicht beschweren.
Überprüfen Sie diesen Referenzlink
Port 80
Auf meinen Cloud-Instanzen leite ich Port 80 mit diesem Befehl auf Port 3000 um:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
Dann starte ich mein Node.js auf Port 3000. Anfragen an Port 80 werden Port 3000 zugeordnet.
Sie sollten auch Ihren /etc/rc.local
bearbeiten Datei und fügen Sie diese Zeile minus sudo
hinzu . Dadurch wird die Umleitung hinzugefügt, wenn die Maschine hochfährt. Sie brauchen sudo
nicht in /etc/rc.local
weil die Befehle dort als root
ausgeführt werden wenn das System hochfährt.
Protokolle
Verwenden Sie das forever-Modul, um Ihr Node.js damit zu starten. Es stellt sicher, dass es neu gestartet wird, wenn es jemals abstürzt, und es leitet Konsolenprotokolle in eine Datei um.
Beim Booten starten
Fügen Sie Ihr Node.js-Startskript zu der Datei hinzu, die Sie für die Portumleitung bearbeitet haben, /etc/rc.local
. Dadurch wird Ihr Node.js-Startskript ausgeführt, wenn das System startet.
Digital Ocean und andere VPS
Dies gilt nicht nur für Linode, sondern auch für Digital Ocean, AWS EC2 und andere VPS-Anbieter. Auf RedHat-basierten Systemen jedoch /etc/rc.local
ist /ect/rc.d/local
.