Der httpd-Dienst wird beim Booten unter CentOS 6 nicht gestartet

7

Ich habe Probleme beim Konfigurieren eines CentOS 6 Vagrant-Setups zum Starten des Apache-Dienstes beim Booten. Ich habe versucht, chkconfig zu verwenden, und das Betriebssystem scheint es einfach zu ignorieren.

Wenn ich renne sudo chkconfig --list httpd, bekomme ich

httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

Was ich vermute, war das Ergebnis der Ausführung der Befehle

sudo chkconfig httpd on
sudo chkconfig --levels 235 httpd on
sudo chkconfig --levels 345 httpd on

in verschiedenen Versuchen, dieses Ding in meinem Bereitstellungsskript richtig zu konfigurieren. Ich benutze weder Puppe noch Koch, noch möchte ich wirklich. Ich hatte dies auf einem anderen Host-Computer, aber auf dem zweiten Host scheint es aus irgendeinem Grund nicht mehr zu funktionieren.

Das manuelle Starten des Dienstes mit sudo service httpd startfunktioniert einwandfrei, aber sobald ich einen vagrant halt && vagrant upoder vagrant reloadden Dienst starte, wird er nicht gestartet, wenn die VM wieder hochgefahren wird.

Frustrierend ist, dass der mysqld-Dienst, den ich genauso konfiguriert habe, beim Start einwandfrei funktioniert.

Mein / var / log / httpd / error_log sagt dies:

[Thu Apr 17 09:31:09 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu Apr 17 09:31:09 2014] [notice] Digest: generating secret for digest authentication ...
[Thu Apr 17 09:31:09 2014] [notice] Digest: done
[Thu Apr 17 09:31:09 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.5.11 configured -- resuming normal operations
[Thu Apr 17 09:34:45 2014] [notice] caught SIGTERM, shutting down
Zac Crites
quelle
Was passiert, wenn Sie einen einfachen Neustart durchführen (Vagabund ignorieren)?
user9517
Das Fehlerprotokoll zeigt an, dass es aufgetreten ist, aber etwas hat es angewiesen, anzuhalten.
Michael Hampton
3
Haben Sie Ihr /vagrantMount zufällig als DocumentRoot festgelegt? Dies wurde möglicherweise nicht bereitgestellt, als Apache versucht zu starten, was zu einem fehlenden / nicht lesbaren DocumentRoot führt, was ein Grund für die sofortige Beendigung von Apache ist.
Oldskool

Antworten:

4

Es stellte sich heraus, dass die VM versuchte, den Apache-Dienst zu starten, bevor Vagrant die freigegebenen Ordner bereitgestellt hatte, und dass httpd DocumentRoot auf ein nicht vorhandenes Verzeichnis zeigte. Ich habe diese Anweisungen befolgt, um ein udev-Ereignis einzurichten, das wartet, bis der Mount erfolgt ist, bevor versucht wird, httpd zu starten.

http://razius.com/articles/launching-services-after-vagrant-mount/

Zac Crites
quelle
0

Wenn httpdauf in ist chkconfigund die Syntax korrekt ist , ist es wahrscheinlich Apache Dokument Fußpunkte zu synchronisierten Ordner, die zum Zeitpunkt des Beginns der Dienst nicht verfügbar ist.

Die Problemumgehung besteht darin, ein Shell-Skript in Ihr System bereitzustellen, Vagrantfiledas den Dienst überprüft und bei Bedarf jedes Mal startet, wenn der vagrantBefehl aufgerufen wird, z

config.vm.provision :shell, run: "always", :inline => "service httpd status || service httpd start"

oder:

config.vm.provision :shell, run: "always", path: "scripts/check_vm_services.sh"

Siehe auch: Apache startet nicht nach dem Neuladen von Vagrant bei SO

Kenorb
quelle