2016-01-30 14 views
10

Ich habe einen Daemon, der beim Start als root ausgeführt werden muss.App als root mit pm2 starten

Ich benutze PM2, um andere Anwendungen zu starten, aber ich kann nicht herausfinden, ob es eine App als root starten kann. Kann es gemacht werden?

Wenn nicht, was sind meine Optionen?

Antwort

0

Sie sollten PM2 als root starten, (sudo PM2 app.js starten), dann wird Ihre App als root starten

+0

Dies funktioniert, aber es scheint zu verlangen, dass ich die anderen Anwendungen als root als gut laufen. –

7

Ich würde empfehlen:

sudo pm2 start index.js 

ODER

pm2 start 'http-server' /var/www -p 80 
sudo pm2 startup 
pm2 save 

OR

pm2 start 'which http-server' /var/www -p 80 

Um es auf Ihrem HTTP-Port zu starten

Auch ich immer -i 0 am Ende - das startet so viele Worker-Prozesse wie Sie Kerne haben. Überprüfen Sie THIS

Es ist nicht immer erforderlich, PM2 als root zu starten. Wenn Sie PM2 als Root und das CLI-Modul installiert haben, ist die Sicherheit ein großes Risiko. Dies ist nur erforderlich, wenn Sie Ihre App an einem Port zwischen 1 und 1024 starten

6

Wenn Ihr Daemon nur als Root ausgeführt werden muss, um auf eine Portnummer (z. B. 80 oder 443) zuzugreifen, geben Sie pm2 documentation ein empfiehlt die Verwendung von authbind. Also, wenn Sie den Benutzer yourusername wollen den Zugriff auf Port 80 haben, laufen:

$ sudo apt-get install authbind 
$ sudo touch /etc/authbind/byport/80 
$ sudo chown yourusername /etc/authbind/byport/80 
$ sudo chmod 755 /etc/authbind/byport/80 
$ authbind --deep pm2 update 

Und dann verwenden authbind --deep pm2 statt pm2. Die Dokumentation schlägt vor, einen Alias ​​einzurichten.

+0

gehen Sie von Linux aus? – Michael

+0

Ja, und "apt-get" ist nur für Debian-basierte Distributionen verfügbar. – Rabbits

0

hatte ich Probleme mit sudo pm2 start api, aber dies war seit PM2 bereits ohne sudo-Berechtigungen ausgeführt wird, laden Sie daher laufen müssen:

pm2 kill 
sudo pm2 start api 

Dies tötet die PM2 deamon zuerst, so dass es in sudo startet, aber dann brauchen Sie sudo für ALLE pm2 Befehle danach, wie: sudo pm2 ls

0

Zuerst pm2 global installieren. Dann setzen root-Rechte zu PM2 mit diesem Befehl

sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/rpc.sock /home/ubuntu/.pm2/pub.sock 
Verwandte Themen