Der Apache-Server wird nicht automatisch gestartet

11

Ich habe Apache lange Zeit installiert, um die Entwicklungsumgebung auf meinem Laptop einzurichten.

Da ich es jedoch vor einigen Monaten gestoppt habe, wird es beim Booten nicht mehr automatisch gestartet. Ich habe dieses Problem auf meinem Laptop zu Hause UND auf meinem Laptop bei der Arbeit.

In beiden Fällen habe ich Apache vor einigen Monaten in Ubuntu 10.10 installiert, es mehrere Wochen lang ohne Probleme verwendet, aber dann habe ich es eines Tages gestoppt und jetzt startet es nicht mehr automatisch. Ich habe versucht, das Update rc manuell auszuführen, aber mir wurde mitgeteilt, dass das Init-Skript bereits verwendet wird.

Manuelles Starten / Neustarten mit

sudo service apache2 start/restart

funktioniert gut. In beiden Fällen ließ ich es bis nach dem Upgrade auf 11.04 sein, weil ich hoffte, dass es durch die neue Version gelöst würde. Aber es ist nicht! Ich wäre dankbar, wenn mir jemand sagen könnte, wie Apache automatisch wieder gestartet werden soll.

Carsten Agger
quelle

Antworten:

10

Versuche zu rennen

update-rc.d apache2 enable [list of run levels]

als Wurzel.

Sie könnten interessiert sein zu lesen

man update-rc.d
Ignar
quelle
1
Vielen Dank, ich habe den Befehl ausgeführt (ohne Liste der Runlevel, nur die Standardeinstellungen), und es scheint zu funktionieren. Wissen Sie, warum es nicht mehr zu funktionieren schien? Ich habe nicht mit den Init-Skripten herumgespielt, ich glaube, ich habe Apache nur über die Befehlszeile gestoppt - aber ich hatte nicht die Absicht, es dauerhaft zu stoppen . :-)
Carsten Agger
Ich habe keine Meinung, warum es nicht mehr funktioniert :) Vielleicht funktioniert nach dem Update etwas nicht mehr richtig.
Ignar
Danke, aber es hilft nicht. Egal wie ich update-rc.d apache2 enable nenne, Apache wird nicht mehr automatisch ausgeführt. Ich muss es immer manuell starten. Es scheint keine wirklichen Probleme zu geben, da es immer richtig startet, wenn ich es manuell mache.
Carsten Agger
9

Ich füge diese Antwort basierend auf den jüngsten Problemen hinzu, auf die ich mit denselben Symptomen gestoßen bin.

Zunächst einige Hintergrunddaten:

  • Ubuntu verwendet Skripte im /etc/init.d/Ordner, um Dienste zu starten / stoppen.
  • Ubuntu verwendet Symlinks zu diesen /etc/init.d/in den /etc/rc#.d/Ordnern gespeicherten Skripten, um Dienste basierend auf dem "Runlevel" zu starten / stoppen.
  • Symlinks, die mit einem "S" beginnen, geben an, dass der Dienst gestartet werden soll.
  • Symlinks, die mit einem "K" beginnen, zeigen an, dass der Dienst gestoppt (beendet) werden soll.
  • Runlevel 1 führt die Skripte aus, die mit Symlelink verknüpft sind /etc/rc1.d/, Runlevel 2 verwendet /etc/rc2.d/usw.
  • Der Standard-Runlevel für Ubuntu ist 2.
  • Die Installation von Apache wird im Wesentlichen ausgeführt sudo update-rc.d apache2 defaults, wodurch die entsprechenden Symlinks in den /etc/rc#.d/Ordnern erstellt werden.

Es scheint also, dass auf meinem Server irgendwann etwas oder jemand lief, sudo update-rc.d apache2 disableder alle "S" -Symlinks entfernte und durch "K" -Symlinks ersetzte. So wird Apache getötet oder einfach nicht gestartet, wenn einer der Runlevel initialisiert wird.

Meine Lösung bestand nur darin, Apache wieder zu aktivieren:

sudo update-rc.d apache2 enable

Jetzt startet / stoppt Apache wie erwartet beim Starten oder Wechseln von Runlevels.

NB:

Es ist erwähnenswert, dass ein erneutes Ausführen sudo update-rc.d apache2 defaultsnicht ausreicht, da Symlinks vorhanden sind und diese als erwünscht angesehen werden. Es antwortet nur mit:

System start/stop links for /etc/init.d/apache2 already exist.
Karl Wilbur
quelle
1
Vielen Dank! Dies war sehr hilfreich bei der Fehlerbehebung bei meiner Konfiguration.
Reor
1
Ich habe dieses Problem, aber diese Lösung hat überraschenderweise nicht funktioniert. Wenn ich sudo update-rc.d apache2 enable defaultses starte, wird entfernt, was ich habe, und es wird sofort wieder zurückgesetzt. Ich habe K09apache2in rc0, 1 und 6, und ich habe S91apache2in rc2, rc3, rc4, rc5. service apache2 startfunktioniert gut, aber ich muss es nach jedem Neustart tun, da es nicht automatisch startet. MySQL hingegen startet immer gut.
Buttle Butkus
1
Die sehen richtig aus. Möglicherweise möchten Sie eine neue Frage mit den Details Ihres spezifischen Problems öffnen und sicherstellen, dass relevante Zeilen aus Ihrem /var/log/syslogund enthalten sind /var/log/apache2/error.log. Nachricht an mich mit dem Link zur Frage und ich werde sehen, ob ich helfen kann.
Karl Wilbur
3

In diesem Fall fand ich heraus, warum Apache nicht starten würde. Ich konnte keine Spur davon in den Startprotokollen finden, nur in der Ausgabe, die beim Booten auf dem Bildschirm gedruckt wurde.

Aber los geht's: Die letzte Zeile im Skript ist /etc/apache2/apache2.conffehlgeschlagen.

Warum?

Es sagt:

Include sites-enabled/

Zwei der von mir eingerichteten Sites befinden sich jedoch in meinem eigenen Home-Verzeichnis - das verschlüsselt ist!

Beim Booten (während des Starts von Apache) sind diese Sites nicht vorhanden, und Apache schlägt fehl und kann nicht ausgeführt werden.

Lösung?

Ich habe ein kleines Skript namens "disable_sites" erstellt und es mit /etc/rc0.dund /etc/rc6.d(Herunterfahren und Neustart) verknüpft :

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

Ich habe auch ein Skript erstellt, um die Sites bei jeder Anmeldung wieder zu aktivieren, und es als Startprogramm in meinen Systemeinstellungen hinzugefügt. Also jetzt funktioniert es!

Ich nehme an, die Lektion hier lautet: Wenn Apache während des Startvorgangs unerklärlicherweise nicht geladen werden kann und Sie keine Fehler in den Protokollen finden oder wenn Sie den Server manuell starten, überprüfen Sie, ob alle benötigten Verzeichnisse verfügbar sind. Dies könnte wahrscheinlich auch auf andere Weise gelöst werden.

Carsten Agger
quelle
Ich bin überrascht, dass Sie keine Fehler in den Protokollen gefunden haben. Ich habe in der Vergangenheit festgestellt, dass einige Apache-Startfehler nicht in der erwarteten Protokolldatei, sondern in einer Protokolldatei für einen meiner virtuellen Hosts enthalten waren. Könnte dies der Fall sein?
Marius Gedminas
apachectl configtesthätte Sie über das Fehlen von Berechtigungen für den Zugriff auf die Dateien informiert, während Sie als Daemon ausgeführt wurden.
Anuga
1

Wenn andere nach diesem Problem suchen (googeln), überprüfen Sie Folgendes, wenn Sie Folgendes ausführen:

chkconfig |grep httpd

du erhältst

httpd 0: aus 1: aus 2: ein 3: ein 4: ein 5: ein 6: aus

sonst tun:

chkconfig httpd on

(Entschuldigung auf Ubuntu chkconfig äquivalent ist update-rc.d siehe Chkconfig Alternative für Ubuntu Server? )

dfliess
quelle
0

Ich hatte das gleiche Problem und verwende Ubuntu 14 auf einem lokalen Vagrant-Setup. Ich habe das /etc/apache2/sites-enabledVerzeichnis entfernt und einen Link zu meinem Home-Verzeichnis hinzugefügt, der natürlich gemäß den Vagrant-Konfigurationen auf meinem lokalen Laufwerk bereitgestellt wird.

Es stellte sich heraus, dass Apache das Verzeichnis nicht sah, da die Ressource noch nicht bereitgestellt war. Ich habe meine Bestimmung in Vagrant umgeschrieben, um nur das sites-enabledVerzeichnis zu kopieren, anstatt einen Symlink hinzuzufügen.

Ich habe auch , sudo update-rc.d apache2 enablewie vorgeschlagen durch Karl Wilburum sicherzustellen , dass Apache init aktiviert war.

user288900
quelle