Mam problem polegający na tym, że Apache nie uruchamia się po aktualizacji do High Sierra 10.13.1. W dziennikach błędów nic się nie pokazuje, ale kiedy próbuję apachectl start
nic się nie dzieje. Jeśli uruchomię apachectl configtest
, otrzymam komunikat „Składnia OK
Użyłem poleceń jak sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
bezskutecznie. Apache nie uruchomi się. Mogę biec sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist
i to też nie działa.
Spojrzałem na listę usług parzenia i httpd pojawia się na liście wraz z innym procesem (mysql), ale status httpd pokazuje żółty „uruchomiony” zamiast zielonego.
Próbowałem wielu różnych rzeczy i stwierdzam, że jeśli zajrzę do pliku system.log, to znajdę com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1
Po uruchomieniu apachectl start polecenie wydaje się działać, ale po uruchomieniu polecenia stop pojawia się komunikat „httpd (brak pliku pid) nie działa.
Otrzymuję również dane wyjściowe com.; Apple.xpc.launchd [1] ( org.apache.httpd): Przełącz się z OnDemand na KeepAlive.
Czy jest coś z High Sierra, które uniemożliwia uruchomienie Apache, gdy działało dobrze w Sierra?
źródło
brew services list' I receive a yellow indicator, I checked with all of the available users and ran
usług parzenia`` i wszystkie pokazują ten sam wskaźnik. Jeśli chodzi o przewodnik instalacji, do skonfigurowania apache wykorzystano Ansible. Zostało to zrobione na 5 innych MacBookach, nadal działają w Sierra. Ten MacBook miał problem, a Apple przeprowadził diagnostykę i zresetował system operacyjny, jednocześnie aktualizując system do High Sierraapachectl start
.). To samo z... configtest
!httpd
formuły Homebrew , a teraz apache nie odpowiada. Kiedy to robiębrew services list
, dostaję równieżstarted
httpd na żółto, a kiedy biegnęsudo apachectl stop
, mówi mi tohttpd (pid 87?) not responding.
Odpowiedzi:
Moim zdaniem ukryłeś różne demony / mechanizmy uruchamiania httpd, wykonując zbyt wiele poleceń powiązanych z httpd.
Po zainstalowaniu apache-httpd homebrew i homebrew oraz domyślnej ŚCIEŻKI masz sześć sposobów na uruchomienie httpd.
Apache firmy Apple:
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo /usr/sbin/apachectl start
Apache Homebrew:
sudo apachectl start
apachectl start
sudo brew services start httpd
brew services start httpd
Jeśli skopiowałeś plik homebrew.mxcl.httpd.plist ręcznie do ~ / Library / LaunchAgents / lub / Library / LaunchDaemons /, masz jeszcze dwie opcje, aby go uruchomić, ładując je
(sudo) launchctl load ...
.Jeśli nie zmodyfikowałeś plików konfiguracyjnych httpd lub skryptów apachectl, oddział Apple użyje pliku httpd.conf firmy Apple w katalogu / var i DocumentRoot w folderze / Library.
Gałąź homebrew używa podfolderów w / usr / local /.
Niektóre metody uruchamiania nie będą działać, jeśli powiążesz porty httpd z portami niższymi niż 1024!
Jeśli używasz
(sudo) brew services ...
do uruchomienia httpd, musisz użyć właściwego(sudo) brew services list
polecenia, aby sprawdzić status:Jeśli uruchomisz go jako root, to wypisz go z uprawnieniami roota:
sudo brew services start httpd
>sudo brew services list
lub z użytkownikami prywatnymi:
brew services start httpd
>brew services list
.Aby rozwiązać problem, zwolnij httpd firmy Apple:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
(sudo) brew services stop httpd
zatrzymaj dowolny httpd uruchomiony przez apachectl:
Teraz - zakładając, że chcesz używać httpd homebrew na uprzywilejowanych portach - wpisz:
Sprawdź udany początek z
sudo brew services list
.źródło
apachectl stop
dostarcza dane wyjściowe,httpd (no pid file) not running
a kiedy uruchomię,sudo brew services httpd start
sudo brew services list
wskazuje apache2 (httpd)started
w kolorze żółtym. Kiedy próbuję uzyskać dostęp do czegokolwiek związanego ze stroną internetową, nie mogę. Zastanawiam się, czy aktualizacja 10.13 zmieniła coś w apache, uniemożliwiając jej uruchomienie.Jeśli chodzi o homebrew httpd, jednym z problemów, na który ostatnio natknąłem, był stary pozostawiony plik httpd.pid, który uniemożliwiał uruchomienie httpd. Objawem było
apachectl start
powiedzenie, że httpd już działa, ale tak nie było.Bo tutaj był stary plik:
Rozwiązaniem było usunięcie tego pliku pid, a następnie uruchomiono httpd.
źródło
httpd
monitor aktywności nie istniał . To naprawiło to.brew services list
, otrzymywałem żółty status „uruchomiony”, co oznaczało, że coś było nie tak z aktywnym statusem serwera. Usunięcie pid naprawiło to i teraz lista usług pokazuje aktywny status jako zielony „uruchomiony” zamiast tego teraz. Dziękuję Ci za to!Tak samo było po aktualizacji do High Sierra dzisiaj. Odkryłem, że następujące pliki apache zostały zastąpione nowymi wersjami. Na szczęście dla wszystkich tych plików istniał poprzedni plik PLIK ~ w tym samym folderze. Właśnie skopiowałem poprzednią wersję ~ z powrotem do oryginalnych, ponownie uruchomiłem apache i wszystko było w porządku.
W folderze
/etc/apache2
:Przykład:
źródło
/etc/apache2/extra/
znajduje się około 10 plików z ~ poprzednimi dołączonymi do nich, jeśli wszystkie zostaną zmienione, lub tylko dwa wspomniane w/etc/apache2/extra/
folderzeMiałem ten sam problem
Oznacza to, że httpd został nieprawidłowo zamknięty.
Następnie ręcznie uruchomiłem httpd, aby zobaczyć, na czym polega problem
Patrząc na uprawnienia, było całkiem jasne
Myślę, że zacząłem httpd jako root, co spowodowało ten problem. Usunąłem pliki i później
wszystko było w porządku.
źródło
Wpadłem na to niedawno. Przyczyną jest to, że homebrew instaluje apache2 / httpd w folderach dostępnych dla użytkownika i działa jako użytkownik (uruchamiając polecenie: usługi brew start start httpd).
Brak działania jako zwykły użytkownik oznacza, że httpd nie może nasłuchiwać na uprzywilejowanych portach (1024 i niższych).
Więc nawet jeśli httpd.conf jest skonfigurowany do nasłuchiwania 80 i 443, httpd nie może odbierać żądań przez te porty.
Osobliwością jest uruchomienie httpd przez uruchomienie polecenia: sudo apachectl start. To polecenie uruchamia httpd jako użytkownik root. Użytkownik root może nasłuchiwać na portach 80 i 443. httpd następnie przywraca uprawnienia do działania jako użytkownik _www.
Tak więc krótką odpowiedzią jest uruchomienie homebrew httpd na portach 80, a 443 to uruchomienie go za pomocą: sudo apachectl start. Możesz także rozpocząć od: sudo brew services start httpd. Brew poinformuje cię, że żąda pewnych folderów do rootowania, co, jak sądzę, jest w porządku, ale nie jest konieczne, ponieważ sudo apachectl start nie wymaga uprawnień do plików i / lub zmian właściciela.
źródło
Sugerowałbym wręcz przeciwnie, co mówi HomeBrew, zawsze uruchamiaj httpd przez sudo. Tam, jeśli zrobisz ps -aef | grep httpd, zobaczysz, że jest na liście jako uruchomiony. Wykonanie bez sudo nie generuje danych wyjściowych ps, co może powodować błędne wrażenie, że httpd nie działa.
Nie jestem też pewien, czy w obu przypadkach są załadowane różne lub takie same konfiguracje. Zainstalowałem PHP i utworzyłem plik test.php z phpinfo w katalogu DocumentRoot. Jeśli uruchomisz apache z sudo, możesz zobaczyć phpinfo z localhost / test.php podczas korzystania z usług brew start httpd wyświetli błąd, jeśli DocumentRoot znajduje się w obszarze, w którym wymagany jest dostęp do roota.
źródło