Start supervisord als root oder nicht?
Supervisor läuft auf 3.0:
pip freeze | grep supervisor
supervisor==3.0
Beim starten von supervisord von der Befehlszeile aus:
sudo $VIRTENV/supervisord --nodaemon --configuration $PATH_TO_CONFIG/supervisord.conf
Bekomme ich diesen Fehler:
2013-11-11 23:30:50,205 CRIT Supervisor running as root (no user in config file)
Aber ich kann nicht starten, supervisord ohne sudoes beschwert sich:
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
Was ist der richtige Weg, damit umzugehen?
(Ich bekomme den gleichen Fehler, wenn Sie starten, als root aber die Einstellung user = foobar unter der [supervisord] - Abschnitt in der supervisord.conf)
Update: Hier ist mein supervisord.conf
[unix_http_server]
file = /opt/run/supervisord.sock
[inet_http_server]
port = 9001
username = foobar
password = foobar
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisord]
logfile = /opt/logs/supervisord.log
loglevel = debug
pidfile = /opt/run/supervisord.pid
[supervisorctl]
[program:foo1]
user = foobar
autostart = True
autorestart = True
command = foo1
stdout_logfile = /opt/logs/foo1.stdout.log
stderr_logfile = /opt/logs/foo1.stderr.log
stdout_logfile_maxbytes = 10MB
stderr_logfile_maxbytes = 10MB
[program:foo2]
user = foobar
autostart = true
autorestart = true
command = foo2
priority = 100
stdout_logfile_backups = 0
stderr_logfile_backups = 0
stdout_logfile_maxbytes = 10MB
stderr_logfile_maxbytes = 10MB
stdout_logfile = /opt/logs/foo2.stdout.log
stderr_logfile = /opt/logs/foo2.stderr.log
InformationsquelleAutor der Frage kev | 2013-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Supervisord Schalter auf UNIX-Benutzer-Konto, bevor die Verarbeitung.
Müssen Sie angeben, welche Art von Benutzerkonto Sie verwenden soll, führen Sie den daemon als root sondern user angeben in der config-Datei
Beispiel:
Besuchen http://supervisord.org/configuration.html#program-x-section-values weitere Informationen
InformationsquelleAutor der Antwort Jan Vorcak
Beim starten von supervisor als root, müssen Sie einen Benutzer angeben, der für die Betreuer fallen zu lassen, um aus Gründen der Sicherheit
Vom supervisor docs (http://supervisord.org/configuration.html):
Diese in deine conf-Datei:
Sollte der Benutzer ein Benutzer vorhanden ist, aber nicht über sudo-Berechtigungen (niemand arbeiten kann).
InformationsquelleAutor der Antwort Rylan
Für mich, erhielt ich diese Fehlermeldung während der Ausführung als nicht-root-Benutzer:
Diese ging Weg, nachdem ich chowned das Verzeichnis, das die sock-Datei für diesen Benutzer.
In Ihrem Fall:
Entweder
chown username /opt/run/
oder zeigen Sie die Datei in ein anderes Verzeichnis, das dem Benutzer gehört.Habe ich gelernt, diesen Ansatz aus dieser link.
Darüber hinaus, mein Systemadministratoren installiert init.d-Skript, das ich schrieb. Die init.d Skript wird als root ausgeführt, aber das Skript kann supervisord zu beginnen
myuser
mit diesem Befehl:InformationsquelleAutor der Antwort Matthew Moisen
Sie bekam:
Pro mein Verständnis, Sie haben diese KRITISCHE Nachricht, die Sie stört:
Können die Wörter in Klammern ein Hinweis. Diese Meldung zeigt an, dass Sie ausgeführt werden kann, Supervisor als root unabsichtlich.
Hierzu:
Also die Lösung ist ziemlich einfach: Sagen, Supervisor, dass Sie tun dies vorsätzlich.
(in
/etc/supervisor/supervisord.conf
)Sobald Sie Supervisord als root, es setzt die uid für den Benutzer, dem Sie zugewiesen wird, die Wurzel. (#308)
Nicht wichtig:
Obwohl jetzt können Sie diese Meldung erhalten:
Keine sorgen, diese Meldung sollte ein INFO-Ebene statt auf eine KRITISCHE Ebene.
(#693)
InformationsquelleAutor der Antwort Kyan