Ich versuche, einen Prozess im Hintergrund als Deamon auszuführen, aber es funktioniert nur, wenn ich root als Benutzer benutze.Supervisord auf Linux CentOS 7 funktioniert nur, wenn mit root
Das habe ich gemacht.
Installierte Supervisor als
$ yum -y install python-setuptools
$ easy_install supervisor
Ordner der Config-
erstellt auf ihrer Website erklärte$ mkdir -p /etc/supervisor/conf.d
mit den Standardeinstellungen füllen
$ echo_supervisord_conf > /etc/supervisor/supervisord.conf
einen neuen Benutzer hinzufügen
$ useradd gogopher
auf CentOS 7 bis es automatisch hatte zu machen beginne ich unter
[Unit]
Description=supervisord - Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecReload=/usr/bin/supervisorctl reload
ExecStop=/usr/bin/supervisorctl shutdown
User=gogopher
[Install]
WantedBy=multi-user.target
diese
$ vim /usr/lib/systemd/system/supervisord.service
hinzugefügt, um den Code zu tun, jetzt kann ich es aktivieren, so dass es beim Neustart beginnt. Das alles funktioniert gut.
$ systemctl enable supervisord
$ systemctl start supervisord
$ systemctl status supervisord
OK
Editieren der Konfigurationsdatei Dateien aus conf.d Ordner enthalten
$ vim /etc/supervisor/supervisord.conf
Zugabe am Ende der Datei
[include]
files = /etc/supervisor/conf.d/*.conf
Hinzufügen einer einfachen Programm
$ vim /etc/supervisor/conf.d/goapp.conf
[program:main]
command=/srv/www/websiteurl.com/bin/main
autostart=true
autorestart=true
startretries=10
user=gogopher
$ systemctl Neustart supervisord
kein Fehler, aber der Prozess nicht
funktioniert, wenn ich nichts Neustart geschieht
$ systemctl status supervisord
zeigt, dass es supervisord läuft, aber nicht den Daemon-Programm.
wenn ich laufen
$ supervisorctl reload
ich den Fehler
error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.7/socket.py line: 571
wenn ich
$ supervisorctl status main
laufen bekomme ich die Fehler
http://localhost:9001 refused connection
Ich habe selinux bereits deaktiviert.
aber der seltsame Teil ist, dass, wenn ich beide zu root ändern, es funktioniert.
Die ausführbare Datei kann von Benutzergruppe und anderen ausgeführt werden.
Also ich habe keine Ahnung was los ist. Ich habe gehört, dass ich nicht root als Benutzer verwenden sollte, der einen Webserver aus Sicherheitsgründen ausführt.
Haben Sie es gelöst? Wenn ja, wie? –
https://imgs.xkcd.com/comics/wisdom_of_the_ancients.png – Basil