Kann nicht starten Sie den apache mit supervisord von einem Docker-container
Bin ich mit einem Docker-container mit CoreOS, die verwendet die neueste Debian als Basis und hat verschiedene Pakete installiert, darunter Betreuer und apache2. Ich kann starten und erfolgreich führen Sie apache mit dem folgenden Befehl:
# /usr/bin/pidproxy /var/run/apache2.pid /bin/bash -c "source /etc/apache2/envvars && /usr/sbin/apache2 -DFOREGROUND -k start"
Jedoch, wenn ich den stick mit diesem Befehl in einen supervisor-config-Datei:
[program:apache2]
command=/usr/bin/pidproxy /var/run/apache2.pid /bin/bash -c "source /etc/apache2/envvars && /usr/sbin/apache2 -DFOREGROUND -k start"
redirect_stderr=true
ab und machen dieses:
# supervisorctl start apache2
Bekomme ich wieder diese Antwort:
apache2: ERROR (abnormal termination)
Blick auf die supervisor-Prozess-log-Datei sehe ich die help-Ausgabe von apache2 Befehl, als ob er schon genannt worden, wie so apache2 -h
. Ich habe keine Ahnung, warum ein Befehl, der ausgeführt wird, wenn ausgeführt auf der Kommandozeile als root an (mit ssh in die container) nicht funktionieren würde, wenn wörtlich ausgeführt supervisorctl (als root ausgeführt).
Beliebigen Punkt in die richtige Richtung würde sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht wirklich sicher, warum, aber das hinzufügen von Anführungszeichen, um meine option Werte scheint getan haben, der trick, und mir erlaubt apachectl. Muss etwas mit dem Kontext, in dem der Befehl wird interpretiert, was Vorgesetzte tun vs input aus einer bash-Eingabeaufforderung. Hier ist meine funktionierende config-Datei:
Dies ist, was funktioniert für mich (mit einer ubuntu-Basis-image, aber das sollte keine Rolle spielen):
Dockerfile:
supervisor.conf
Sie wirklich wollen, um diese zu verwenden. Wenn Sie nicht pidproxy, ein
supervisorctl stop apache
wird nicht töten alle Kinder.Dies wird auch sicherstellen, dass die container zu beenden, wenn er ein SIGTERM-anstatt zu warten, für ein SIGKILL gesendet.
In CentOS apache Aufgerufen wird, httpd, apache2 nicht
Ihr Vorgesetzter conf-Datei müssen aktualisiert werden, für CentOS
/usr/sbin/httpd
ist das Programm Standort.