Zainstalowałem Apache przez długi czas w ramach konfigurowania środowiska programistycznego na moim laptopie.
Ponieważ jednak zatrzymałem go kilka miesięcy temu, nie uruchamia się już automatycznie przy starcie. Mam ten problem na laptopie w domu ORAZ na laptopie w pracy.
W obu przypadkach zainstalowałem Apache w Ubuntu 10.10 kilka miesięcy temu, używałem go przez kilka tygodni bez usterki, ale pewnego dnia przestałem go, a teraz nie uruchamia się automatycznie. Próbowałem uruchomić aktualizację rc dla niego ręcznie, ale powiedziano mi, że skrypt init jest już w użyciu.
Jednak uruchamianie / restartowanie go ręcznie za pomocą
sudo service apache2 start/restart
działa w porządku. W obu przypadkach pozwoliłem na to dopiero po aktualizacji do 11.04, ponieważ miałem nadzieję, że zostanie to rozwiązane przez nową wersję. Ale nie jest! Byłbym wdzięczny, gdyby ktoś mógł mi powiedzieć, jak ponownie uruchomić Apache automatycznie.
Dodaję tę odpowiedź w oparciu o ostatnie problemy, które napotkałem z tymi samymi objawami.
Najpierw jakieś dane w tle:
/etc/init.d/
folderze do uruchamiania / zatrzymywania usług./etc/init.d/
skryptów, przechowywanych w/etc/rc#.d/
folderach, w celu uruchamiania / zatrzymywania usług opartych na „poziomie pracy”./etc/rc1.d/
, używa runlevel 2/etc/rc2.d/
i tak dalej.sudo update-rc.d apache2 defaults
co tworzy odpowiednie dowiązania symboliczne w/etc/rc#.d/
folderach.Wygląda więc na to, że na moim serwerze coś lub ktoś w pewnym momencie uruchomił,
sudo update-rc.d apache2 disable
co usunęło wszystkie dowiązania symboliczne „S” i zastąpiło je dowiązaniami symbolicznymi „K”. Dlatego zabijanie lub po prostu nie uruchamianie Apache podczas inicjowania któregokolwiek z poziomów pracy.Moim rozwiązaniem było ponowne włączenie Apache:
Teraz Apache uruchamia się / zatrzymuje zgodnie z oczekiwaniami podczas uruchamiania lub przełączania poziomów pracy.
NB:
Warto zauważyć, że
sudo update-rc.d apache2 defaults
ponowne uruchomienie jest niewystarczające, ponieważ widzi, że istnieją dowiązania symboliczne i uważa, że są one tym, czego chcemy. Po prostu odpowiada:źródło
sudo update-rc.d apache2 enable defaults
usuwa to, co mam, a następnie przywraca je z powrotem. MamK09apache2
w rc0, 1 i 6, i mamS91apache2
w rc2, rc3, rc4, rc5.service apache2 start
działa dobrze, ale muszę to zrobić po każdym ponownym uruchomieniu, ponieważ nie uruchomi się automatycznie. Z drugiej strony mysql zawsze dobrze się uruchamia./var/log/syslog
i/var/log/apache2/error.log
. Wyślij do mnie link do pytania, a zobaczę, czy mogę pomóc.W tym przypadku dowiedziałem się, dlaczego Apache nie chce się uruchomić. Nie mogłem znaleźć śladu tego w dziennikach uruchamiania, tylko w danych wyjściowych drukowanych na ekranie podczas uruchamiania.
Ale proszę bardzo: ostatni wiersz skryptu
/etc/apache2/apache2.conf
nie powiódł się.Dlaczego?
To mówi:
Include sites-enabled/
Jednak dwie strony, które skonfigurowałem, znajdują się w moim własnym katalogu domowym - który jest zaszyfrowany!
Tak więc podczas uruchamiania (podczas uruchamiania Apache) strony te nie istnieją, a Apache ulega awarii i odmawia uruchomienia.
Rozwiązanie?
Stworzyłem mały skrypt o nazwie „disable_sites” i dowiązałem go symbolicznie do
/etc/rc0.d
i/etc/rc6.d
(zamknij i uruchom ponownie):Stworzyłem również skrypt, aby ponownie włączyć witryny przy każdym logowaniu i dodałem go jako program startowy w Ustawieniach systemu. Więc teraz to działa!
Przypuszczam, że lekcja tutaj polega na tym, że gdy Apache w niewytłumaczalny sposób nie ładuje się podczas uruchamiania i nie możesz znaleźć błędów w logach lub podczas ręcznego uruchamiania serwera, sprawdź, czy wszystkie potrzebne katalogi są dostępne. Można to prawdopodobnie rozwiązać w inny sposób.
źródło
apachectl configtest
powiadomiłby cię o braku uprawnień dostępu do plików podczas działania jako demon.W przypadku innych osób szukających (google) tego problemu sprawdź, czy po uruchomieniu:
dostajesz
jeszcze zrobić:
(przepraszam na Ubuntu Chkconfig odpowiednikiem jest update-rc.d zobacz alternatywę Chkconfig dla Ubuntu Server? )
źródło
Miałem ten sam problem i używam Ubuntu 14 na lokalnej instalacji Vagrant. Usunąłem
/etc/apache2/sites-enabled
katalog i dodałem łącze do mojego katalogu domowego, który oczywiście jest zamontowany na moim dysku lokalnym zgodnie z Vagrant configs.Okazuje się, że apache nie widział katalogu, ponieważ zasób nie został jeszcze zamontowany. Przepisałem przepis w Vagrant, aby po prostu skopiować
sites-enabled
katalog zamiast dodawać dowiązanie symboliczne.Zrobiłem także
sudo update-rc.d apache2 enable
zgodnie z sugestią byKarl Wilbur
upewnić się, że init Apache jest włączony.źródło