localhost tidak bekerja di OS X Yosemite

11

Saya menjalankan server apache lokal Mac saya dan ketika saya mengunjungi localhost saya mendapatkan halaman standar "Ini Bekerja".Halaman "Berhasil" di-cache - sebenarnya rusak sama dengan 127.0.0.1. Ketika saya mengunjungi 127.0.0.1 namun chrome memberi saya Error code: ERR_CONNECTION_REFUSED. Jadi saya berlari telnet. Hasil:

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

Tetapi scutilberikan ini:

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

Adakah yang tahu mengapa itu tidak berhasil? Apakah apache mendengarkan pada port yang berbeda? Jika demikian, bagaimana saya memeriksa? Saya memiliki beberapa vhost lokal yang harus dapat diakses oleh beberapa .devhost virtual lokal yang telah saya tambahkan ke file host saya. Misalnya 127.0.0.1 home.devtetapi mereka juga memberikan kesalahan di atas.

Edit

Sepertinya tidak ada yang mendengarkan pada port 80. Ketika saya menjalankan sudo lsof -iTCP:80 -sTCP:LISTENsaya tidak mendapatkan output. Apache tampaknya berjalan meskipun - saya telah menjalankan apachectlrestart` berkali-kali.

harryg
sumber
bisa Anda periksa apakah webshare Anda berfungsi dengan alat ini; clickontyler.com/web-sharing
siniradam
Anda localhostbekerja dengan sangat baik. Apache tidak. Perbarui pertanyaan Anda untuk mewakili fakta ini dan jangan lupa untuk memasukkan bit relevan dari konfigurasi Apache Anda dan file log-nya.
Daniel B
Saya memiliki masalah serupa dan dapat menyelesaikannya: stackoverflow.com/questions/26454160/…
Xaver
Cara normal untuk melakukan ini pada Mavericks / Yosemite adalah dengan mem - port forward dari port 80 ke port 8080. Lihat gist.github.com/mindw0rk/dcc6c02a92b49bde0f13 untuk contoh cara mengatur ini menggunakan pfctl, kemudian ubah konfigurasi apache Anda untuk menggunakan Dengarkan 8080. Anda akan dapat terhubung ke port 80 & lalu lintas akan diteruskan ke apache. (di toko dev kami semua orang menggunakan pengaturan ini, kecuali dengan nginx)
bazzargh

Jawaban:

11

Periksa konfigurasi Apache Anda dengan perintah ini:

sudo apachectl -t

Ini menguji file konfigurasi dan memberi tahu Anda jika ada kesalahan. Menjalankan sudo apachectl starttidak menghasilkan kesalahan sintaks file konfigurasi ke log untuk beberapa alasan.

Matt Gibson
sumber
Persis masalah yang sama di sini. sudo apachectl -tkembali Syntax OK. Lalu bagaimana?
Pmpr
2

Perintah ini harus memberi tahu Anda apa di port mana dan alamat IPv (4/6) mana yang didengarkan Apache Anda:

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

Jika tidak ada yang mendengarkan, apa yang Anda dapatkan dari ini?

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

.

Akhirnya resor:

sudo serveradmin stop web

Buka Console.app dan letakkan bookmark

sudo serveradmin start web

Periksa log

Florian Bidabe
sumber
Ada masalah file konfigurasi yang mencegah Apache untuk memulai sama sekali! Halaman dalam cache membuat saya yakin itu berjalan untuk localhost tetapi tidak untuk IP lokal saya.
harryg
Oke, serveradmin memicu httpd, dan umumnya menghasilkan log startup, apakah Anda dapat menyelesaikan masalah ini? apa pesan kesalahan tlg (untuk anggota lain)?
Florian Bidabe
Ya itu terpecahkan. Saya lupa untuk menghapus komentar modul aphost vhosts sehingga Apache mengalami kesalahan saat melihatnya VirtualDocumentRoutedi file konfigurasi vhosts saya.
harryg
2
hai harryg, jika Anda mendapat kesempatan perbarui status untuk diselesaikan.
Florian Bidabe
Saya mengalami masalah ini dan kegagalan diam saat memulai apache. Tidak ada di log, karena kesalahan sintaks di konfigurasi. Perintah ini muncul:sudo apachectl -t
Matt Gibson
0

Saya percaya port default adalah 8080, tetapi Anda dapat memeriksa file httpd.conf untuk port yang didengarkan Apache.


sumber
8080 tidak berfungsi, dan file konfigurasi saya memiliki Listen 80 di dalamnya.
harryg
Bisakah Anda melihat Apache berjalan, mungkin dengan "ps aux"? Juga, apakah log kesalahan menunjukkan sesuatu? Lokasi default adalah / var / log / apache2 / error_log
apa output dari netstat -tulpn | grep :80?
sardean