Die Idee, Ihre Dienste unter der Aufsicht von Supervisor zu starten, besteht darin, mehrere Dienste unter einem einzigen Daemon ausführen zu können. Abhängig von der Konfiguration des Supervisors kann er jeden beliebigen Dienst als untergeordneten Prozess starten, stoppen oder neu starten. In dieser Konfiguration zeigen wir, wie man apache2
ausführt als überwachter Dienst (nützlich für Docker-Images etc.) unter Ubuntu/Debian Linux.
Installieren Sie zuerst Supervisor:
# apt-get install supervisor
Fügen Sie apache2
hinzu Supervisor-Konfiguration in /etc/supervisor/conf.d/
. Supervisor wählt alle Konfigurationsdateien aus diesem Verzeichnis aus, wobei die einzige Anforderung *.conf
ist Dateierweiterung. Fügen Sie zum Beispiel folgende Zeilen in eine neue Datei ein /etc/supervisor/conf.d/apache2.conf
:
[program:apache2] command=/usr/sbin/apache2ctl -DFOREGROUND
Sobald Sie die obige Konfigurationsdatei eingefügt haben, stoppen Sie den Apache2-Webserver, falls er gerade läuft:
# /etc/init.d/apache2 stop [ ok ] Stopping web server: apache2. root@4e004b451a98:/# /etc/init.d/apache2 status [FAIL] apache2 is not running ... failed!
und Supervisor neu starten:
# /etc/init.d/supervisor restart Restarting supervisor: supervisord.
Nachdem Sie Supervisor neu gestartet haben, sollte auch der Apache2-Webserver gestartet werden. Bestätigen Sie, dass der Apache2-Webserver ausgeführt wird:
# /etc/init.d/apache2 status [ ok ] apache2 is running.
Fehlerbehebung
Wenn Sie Ihren Apache aus irgendeinem Grund nicht unter Supervisor zum Laufen bringen können, führen Sie Supervisor in nodaemon
aus Modus:
# /etc/init.d/supervisor stop Stopping supervisor: supervisord. # supervisord -n
Fehlermeldung:
/usr/lib/python2.7/dist-packages/supervisor/options.py:296: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security. 'Supervisord is running as root and it is searching ' 2015-05-07 01:21:00,849 CRIT Supervisor running as root (no user in config file) 2015-05-07 01:21:00,849 WARN Included extra file "/etc/supervisor/conf.d/apache2.conf" during parsing 2015-05-07 01:21:00,858 INFO RPC interface 'supervisor' initialized 2015-05-07 01:21:00,858 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2015-05-07 01:21:00,858 INFO supervisord started with pid 542 2015-05-07 01:21:01,862 INFO spawned: 'apache2' with pid 545 2015-05-07 01:21:01,914 INFO exited: apache2 (exit status 0; not expected) 2015-05-07 01:21:02,918 INFO spawned: 'apache2' with pid 548 2015-05-07 01:21:02,970 INFO exited: apache2 (exit status 0; not expected) 2015-05-07 01:21:04,975 INFO spawned: 'apache2' with pid 551 2015-05-07 01:21:05,025 INFO exited: apache2 (exit status 0; not expected) 2015-05-07 01:21:08,031 INFO spawned: 'apache2' with pid 554 2015-05-07 01:21:08,078 INFO exited: apache2 (exit status 0; not expected) 2015-05-07 01:21:09,079 INFO gave up: apache2 entered FATAL state, too many start retries too quickly
Wenn Sie die obige Fehlermeldung sehen, vergewissern Sie sich, dass Ihr Apache-Webserver nicht bereits läuft.
Eine weitere Fehlermeldung, die Sie möglicherweise sehen, ist:
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf: Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}
Dies liegt daran, dass Sie versuchen, apache2
auszuführen Befehl direkt. Sie können versuchen, apache2ctl
auszuführen stattdessen.