localhost non funziona su OS X Yosemite


11

Ho il server Apache locale del mio Mac in esecuzione e quando visito localhost ottengo la pagina standard "Funziona".La pagina "Funziona" è stata memorizzata nella cache - in realtà è rotta come la 127.0.0.1. Quando visito 127.0.0.1 comunque Chrome mi dà Error code: ERR_CONNECTION_REFUSED. Quindi ho corso a telnet. Risultato:

harryg$ telnet localhost 80
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
Trying fe80::1...
telnet: connect to address fe80::1: Connection refused
telnet: Unable to connect to remote host

Ma scutildà questo:

harryg$ scutil -r localhost
Reachable,Local Address,Directly Reachable Address

Qualche idea sul perché non funzioni? Apache è in ascolto su una porta diversa? In tal caso, come posso verificare? Ho alcuni vhosts locali che dovrebbero essere accessibili da alcuni .devhost virtuali locali che ho aggiunto al mio file hosts. Ad esempio, 127.0.0.1 home.devma anche loro danno l'errore sopra.

modificare

Sembra che nulla stia ascoltando sulla porta 80. Quando corro sudo lsof -iTCP:80 -sTCP:LISTENnon ottengo alcun output. Sembra che Apache sia in esecuzione - ho eseguito il apachectlriavvio` molte volte.


potresti verificare se il tuo webshare sta funzionando con questo strumento; clickontyler.com/web-sharing
siniradam,

Il tuo localhostfunziona perfettamente. Apache non lo è. Aggiorna la tua domanda per rappresentare questo fatto e non dimenticare di includere i bit rilevanti della tua configurazione di Apache e dei suoi file di registro.
Daniel B,

Ho avuto un problema simile e sono stato in grado di risolverlo: stackoverflow.com/questions/26454160/…
Xaver

Il modo normale per farlo su Mavericks / Yosemite è port forwarding dalla porta 80 alla porta 8080. Vedi gist.github.com/mindw0rk/dcc6c02a92b49bde0f13 per un esempio di come impostare questo usando pfctl, quindi cambia la tua configurazione di apache da usare Ascolta 8080. Sarai in grado di connetterti alla porta 80 e il traffico verrà inoltrato ad Apache. (nel nostro negozio di sviluppo tutti usano questa configurazione, tranne con nginx)
bazzargh,

Risposte:


11

Controlla la tua configurazione di Apache con questo comando:

sudo apachectl -t

Questo verifica i file di configurazione e ti dice se c'è un errore. L'esecuzione sudo apachectl startnon genera errori di sintassi dei file di configurazione nei log per qualche motivo.


Lo stesso problema qui. sudo apachectl -tritorna Syntax OK. Cosa poi?
Pmpr

2

Questo comando dovrebbe dirti su quale porta e quale indirizzo IPv (4/6) è in ascolto per Apache:

sudo lsof -P -n -iTCP -sTCP:LISTEN | grep httpd

Se non c'è niente in ascolto, cosa ottieni da questo?

sudo serveradmin status web
sudo serveradmin settings web
ps -acx | grep http

.

All'ultimo ricorso:

sudo serveradmin stop web

Apri Console.app e posiziona un segnalibro

sudo serveradmin start web

Controlla i registri


Si è verificato un problema con il file di configurazione che ha impedito l'avvio di Apache! Le pagine memorizzate nella cache mi hanno portato a credere che fosse in esecuzione per localhost ma non per il mio IP locale.
harryg,

Ok, serveradmin innesca httpd e generalmente genera log di avvio, sei stato in grado di risolvere il problema? qual è il messaggio di errore plz (per gli altri membri)?
Florian Bidabe,

Sì, è risolto. Avevo dimenticato di decommentare un modulo vhosts di Apache, quindi Apache ha riscontrato un errore quando ha visto VirtualDocumentRoutenel mio file di configurazione di vhosts.
harryg

2
ciao harryg, se hai la possibilità di aggiornare lo stato per risolto.
Florian Bidabe,

Ho avuto questo problema e un errore silenzioso all'avvio di apache. Nulla nei registri, a causa di un errore di sintassi nella configurazione. Questo comando emerse:sudo apachectl -t
Matt Gibson,

0

Credo che la porta predefinita sia 8080, ma puoi controllare il file httpd.conf per le porte su cui Apache è in ascolto.


8080 non funziona e il mio file di configurazione contiene Listen 80.
harryg,

Riesci a vedere Apache in esecuzione, forse con un "ps aux"? Inoltre, il registro degli errori mostra qualcosa? La posizione predefinita dovrebbe essere / var / log / apache2 / error_log

Qual è l'output di netstat -tulpn | grep :80?
sardo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.