web-dev-qa-db-fra.com

Démarrez l'application en tant que root avec pm2

J'ai un démon qui doit être exécuté en tant que root au démarrage.

J'utilise pm2 pour démarrer d'autres applications, mais je ne peux pas savoir s'il peut démarrer une application en tant que root. Peut-on le faire?

Sinon, quelles sont mes options?

19
Martin Nilsson

Si vous avez seulement besoin que votre démon soit exécuté en tant que root pour accéder à un numéro de port (tel que 80 ou 443), le documentation pm2 recommande d'utiliser authbind. Donc, si vous voulez que l'utilisateur yourusername ait accès au port 80, exécutez:

$ 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

Et puis utilisez authbind --deep pm2 au lieu de pm2. La documentation suggère de configurer un alias.

14
Rabbits

Je recommanderais:

Sudo pm2 start index.js

OR

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

OR

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

Pour le démarrer sur votre port HTTP

Aussi, je mets toujours -i 0 à la fin - cela démarre autant de processus de travail que vous avez de cœurs. Vérifiez [[# # ~] ce [~ # ~]

Il n'est pas toujours nécessaire de démarrer PM2 en tant que root. Si vous avez PM2 en tant que root et le module cli installé, la sécurité est un gros risque. Ceci n'est requis que si vous démarrez votre application sur un port entre 1 et 1024

13
devtech

J'ai eu des problèmes avec Sudo pm2 start api, mais c'était parce que pm2 fonctionnait déjà sans les privilèges Sudo, vous devez donc exécuter:

pm2 kill
Sudo pm2 start api

Cela tue le démon pm2 en premier, pour qu'il démarre dans Sudo, mais ensuite vous avez besoin de Sudo pour TOUTES LES COMMANDES pm2 ensuite, comme: Sudo pm2 ls

11
Elias Fyksen

Tout d'abord, installez pm2 à l'échelle mondiale. Définissez ensuite les autorisations root sur pm2 à l'aide de cette commande

Sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/rpc.sock /home/ubuntu/.pm2/pub.sock
0
Nuwan Sameera

Vous devez démarrer pm2 en tant que root (Sudo pm2 start app.js), puis votre application démarrera en tant que root

0

vous pourriez envisager d'acheminer votre trafic avec iptables, car il y a une raison derrière cette erreur

Sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
0
Jeremias Binder