Apache2 (Httpd) non funziona dopo l'aggiornamento a High Sierra

9

Ho un problema in cui Apache non si avvia dopo l'aggiornamento a High Sierra 10.13.1. Non c'è nulla che mostri nei log degli errori, ma quando provo a apachectl start non succede nulla. Se eseguo apachectl configtest , ricevo "Sintassi OK

Ho usato comandi come sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist senza alcun risultato. Apache non verrà avviato. Posso eseguire sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist e anche questo non funziona.

Ho dato un'occhiata all'elenco dei servizi di brew e httpd compare nell'elenco insieme ad altri processi (mysql) ma lo stato di httpd mostra un "iniziato" giallo invece di uno verde.

Ho provato molte cose diverse e quello che sto scoprendo è che se guardo nel file system.log trovo com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

Se avvio apachectl, il comando sembra funzionare, ma quando eseguo il comando stop ottengo "httpd (nessun file pid) non in esecuzione.
Ricevo anche l'output di com.; Apple.xpc.launchd [1] (org.apache.httpd): per favore, passa da OnDemand a KeepAlive.

C'è qualcosa con High Sierra che impedisce ad Apache di funzionare quando funziona bene in Sierra?

    
posta Alcyeonnero 17.11.2017 - 16:33
fonte

3 risposte

10

Secondo me, hai nascosto i vari meccanismi di avvio / demone httpd avviando troppi comandi relativi a httpd.

Con homebrew e homebrew apache-httpd installati e il PATH predefinito hai sei modi per avviare httpd.

Apache di Apple:

  • sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • sudo /usr/sbin/apachectl start

Apache di Homebrew:

  • sudo apachectl start
  • apachectl start
  • sudo brew services start httpd
  • brew services start httpd

Se hai copiato manualmente il file homebrew.mxcl.httpd.plist in ~ / Library / LaunchAgents / o / Library / LaunchDaemons / hai altre due opzioni per avviarlo caricandole con (sudo) launchctl load ... .

Se non hai modificato i file di configurazione di httpd o gli script di apachectl, il ramo di Apple utilizzerà il file httpd.conf di Apple in / var e DocumentRoot nella cartella / Library.

Il ramo homebrew utilizza sottocartelle in / usr / local /.

Alcuni metodi di lancio non funzionano se hai collegato le porte httpd a porte inferiori a 1024!

Se utilizzi (sudo) brew services ... per avviare httpd devi utilizzare il comando (sudo) brew services list corretto per verificare lo stato:

Se lo si avvia come root, elencarlo con i privilegi di root:

sudo brew services start httpd > sudo brew services list

o con i privilegi utente:

brew services start httpd > brew services list .

Per risolvere il tuo problema scarica httpd di Apple:

  • sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • rimuovi qualsiasi homebrew.mxcl.httpd.plist installato manualmente
  • interrompi qualsiasi servizio httpd homebrew con (sudo) brew services stop httpd
  • interrompi qualsiasi httpd avviato da apachectl:

    apachectl stop
    sudo apachectl stop
    sudo /usr/sbin/apachectl stop
    
  • Apri Activity Monitor e controlla che nessun processo httpd sia in esecuzione.
  • Reboot

Ora, supponendo che tu voglia utilizzare l'httpd di homebrew su porte privilegiate, inserisci:

sudo brew services start httpd

Verifica l'avvio riuscito con sudo brew services list .

    
risposta data 18.11.2017 - 03:15
fonte
5

Per quanto riguarda l'homebrew httpd, un problema che ho incontrato di recente era un vecchio file httpd.pid rimasto che impediva l'avvio di httpd. Il sintomo era apachectl start detto che httpd è già in esecuzione, ma non lo era.

Causa era un vecchio file qui:

/usr/local/var/run/httpd/httpd.pid

La soluzione era eliminare questo file pid e poi httpd avviato.

    
risposta data 25.05.2018 - 16:30
fonte
2

Ho affrontato lo stesso dopo l'aggiornamento ad High Sierra oggi. Ho scoperto che i seguenti file di apache sono stati sostituiti con nuove versioni. Fortunatamente per tutti questi file esisteva un file precedente FILE ~ nella stessa cartella. Ho appena copiato la ~ versione precedente di quella originale, riavviato apache e tutto andava bene.

Nella cartella /etc/apache2 :

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Esempio:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
    
risposta data 21.11.2017 - 00:31
fonte

Leggi altre domande sui tag