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.
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:
/etc/init.d/
Ordner, um Dienste zu starten / stoppen./etc/init.d/
in den/etc/rc#.d/
Ordnern gespeicherten Skripten, um Dienste basierend auf dem "Runlevel" zu starten / stoppen./etc/rc1.d/
, Runlevel 2 verwendet/etc/rc2.d/
usw.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 disable
der 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:
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 defaults
nicht ausreicht, da Symlinks vorhanden sind und diese als erwünscht angesehen werden. Es antwortet nur mit:quelle
sudo update-rc.d apache2 enable defaults
es starte, wird entfernt, was ich habe, und es wird sofort wieder zurückgesetzt. Ich habeK09apache2
in rc0, 1 und 6, und ich habeS91apache2
in rc2, rc3, rc4, rc5.service apache2 start
funktioniert gut, aber ich muss es nach jedem Neustart tun, da es nicht automatisch startet. MySQL hingegen startet immer gut./var/log/syslog
und enthalten sind/var/log/apache2/error.log
. Nachricht an mich mit dem Link zur Frage und ich werde sehen, ob ich helfen kann.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.conf
fehlgeschlagen.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.d
und/etc/rc6.d
(Herunterfahren und Neustart) verknüpft :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.
quelle
apachectl configtest
hätte Sie über das Fehlen von Berechtigungen für den Zugriff auf die Dateien informiert, während Sie als Daemon ausgeführt wurden.Wenn andere nach diesem Problem suchen (googeln), überprüfen Sie Folgendes, wenn Sie Folgendes ausführen:
du erhältst
sonst tun:
(Entschuldigung auf Ubuntu chkconfig äquivalent ist update-rc.d siehe Chkconfig Alternative für Ubuntu Server? )
quelle
Ich hatte das gleiche Problem und verwende Ubuntu 14 auf einem lokalen Vagrant-Setup. Ich habe das
/etc/apache2/sites-enabled
Verzeichnis 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-enabled
Verzeichnis zu kopieren, anstatt einen Symlink hinzuzufügen.Ich habe auch ,
sudo update-rc.d apache2 enable
wie vorgeschlagen durchKarl Wilbur
um sicherzustellen , dass Apache init aktiviert war.quelle