localhost ไม่ทำงานบน OS X Yosemite


11

ฉันมีเซิร์ฟเวอร์ apache บนเครื่อง Mac ของฉันทำงานอยู่ และเมื่อฉันเยี่ยมชม localhost ฉันจะได้รับหน้า "การทำงาน" มาตรฐานหน้า "ใช้งานได้" ถูกแคช - ในความเป็นจริงมันแตกเหมือน 127.0.0.1 เมื่อฉันเข้าชม 127.0.0.1 Error code: ERR_CONNECTION_REFUSEDแต่โครเมี่ยมให้ฉัน telnetดังนั้นผมจึงวิ่ง ผลลัพธ์:

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

แต่scutilให้สิ่งนี้:

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

มีความคิดว่าทำไมมันไม่ทำงาน? apache กำลังฟังบนพอร์ตที่แตกต่างกันบ้างไหม? ถ้าเป็นเช่นนั้นฉันจะตรวจสอบได้อย่างไร ฉันมี.devโฮสต์ในพื้นที่บางแห่งซึ่งควรเข้าถึงได้โดยโฮสต์เสมือนท้องถิ่นบางตัวที่ฉันเพิ่มลงในไฟล์โฮสต์ของฉัน เช่น127.0.0.1 home.devแต่พวกเขาให้ข้อผิดพลาดด้านบนด้วย

แก้ไข

ดูเหมือนว่าไม่มีอะไรฟังบนพอร์ต 80 เมื่อฉันรันsudo lsof -iTCP:80 -sTCP:LISTENฉันจะไม่ได้รับผลลัพธ์ใด ๆ Apache ดูเหมือนว่าจะทำงานแม้ว่า - ฉันได้เริ่มapachectlต้นใหม่หลายครั้ง


คุณช่วยตรวจสอบว่า webshare ของคุณทำงานกับเครื่องมือนี้ clickontyler.com/web-sharing
siniradam

คุณlocalhostทำงานได้อย่างสมบูรณ์แบบ Apache ไม่ใช่ อัปเดตคำถามของคุณเพื่อแสดงถึงข้อเท็จจริงนี้และอย่าลืมที่จะรวมบิตที่เกี่ยวข้องของการกำหนดค่า Apache และไฟล์บันทึกของมัน
Daniel B

ฉันมีปัญหาที่คล้ายกันและสามารถแก้ไขได้: stackoverflow.com/questions/26454160/ …
Xaver

วิธีปกติในการทำสิ่งนี้บน Mavericks / Yosemite คือการส่งต่อพอร์ตจากพอร์ต 80 ไปที่พอร์ต 8080 ดูgist.github.com/mindw0rk/dcc6c02a92b49bde0f13สำหรับตัวอย่างวิธีตั้งค่า pfctl ฟัง 8080 คุณจะสามารถเชื่อมต่อกับพอร์ต 80 และการรับส่งข้อมูลจะถูกส่งต่อไปยัง apache (ในร้านค้า dev ของเราทุกคนใช้การตั้งค่านี้ยกเว้นกับ nginx)
bazzargh

คำตอบ:


11

ตรวจสอบ Apache config ของคุณด้วยคำสั่งนี้:

sudo apachectl -t

นี่เป็นการทดสอบไฟล์กำหนดค่าและบอกคุณว่ามีข้อผิดพลาดหรือไม่ การรันsudo apachectl startไม่ได้ส่งเอาต์พุตข้อผิดพลาดทางไวยากรณ์ไฟล์กำหนดค่าไปยังล็อกด้วยเหตุผลบางประการ


ปัญหาเดียวกันแน่นอนที่นี่ ผลตอบแทนsudo apachectl -t Syntax OKถ้าเช่นนั้นจะเป็นอย่างไร
2017

2

คำสั่งนี้ควรบอกคุณว่าพอร์ตใดและที่อยู่ IPv (4/6) ที่ Apache ของคุณกำลังรับฟัง:

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

หากไม่มีอะไรฟังคุณจะได้อะไรจากสิ่งนี้

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

.

ที่รีสอร์ทสุดท้าย:

sudo serveradmin stop web

เปิด Console.app และวางที่คั่นหน้า

sudo serveradmin start web

ตรวจสอบบันทึก


มีปัญหาไฟล์การกำหนดค่าที่ป้องกัน Apache ไม่ให้เริ่มเลย! หน้าแคชทำให้ฉันเชื่อว่ามันกำลังทำงานสำหรับ localhost แต่ไม่ใช่สำหรับ IP ในเครื่องของฉัน
30725 harryg

โอเคทีนี้เซิร์ฟเวอร์ทริกเกอร์ HTTPd ทริกเกอร์และโดยทั่วไปจะสร้างบันทึกการเริ่มต้นคุณสามารถแก้ไขปัญหาได้หรือไม่ ข้อความแสดงข้อผิดพลาดคืออะไร (สำหรับสมาชิกคนอื่น ๆ )?
Florian Bidabe

ใช่มันแก้ไขแล้ว ฉันลืมที่จะไม่แสดงข้อคิดเห็นโมดูล apache vhosts ดังนั้น Apache ก็พบข้อผิดพลาดเมื่อมันเห็นVirtualDocumentRouteในไฟล์ config vhosts ของฉัน
harryg

2
เฮ้ harryg ถ้าคุณได้รับโอกาสในการปรับปรุงสถานะการแก้ไข
Florian Bidabe

ฉันมีปัญหานี้และความล้มเหลวเงียบเมื่อเริ่ม apache ไม่มีสิ่งใดในบันทึกเนื่องจากข้อผิดพลาดทางไวยากรณ์ในการกำหนดค่า คำสั่งนี้โผล่ขึ้นมา:sudo apachectl -t
แมตต์กิบสัน

0

ฉันเชื่อว่าพอร์ตเริ่มต้นคือ 8080 แต่คุณสามารถตรวจสอบไฟล์ httpd.conf สำหรับพอร์ตที่ Apache กำลังฟังอยู่


8080 ไม่ทำงานและไฟล์ config ของฉันมี Listen 80 อยู่
harryg

คุณเห็น Apache กำลังทำงานอยู่โดยใช้ "ps aux" หรือไม่? นอกจากนี้บันทึกข้อผิดพลาดจะแสดงอะไรหรือไม่ ตำแหน่งเริ่มต้นควรเป็น / var / log / apache2 / error_log

ผลลัพธ์ของnetstat -tulpn | grep :80อะไร
sardean
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.