บางคำเกี่ยวกับข้อผิดพลาดที่คุณได้รับซึ่งหวังว่าจะช่วยให้คุณประหยัดจากสถานการณ์ที่คล้ายกันในอนาคต
ในพอร์ต Linux ตั้งแต่ 0 ถึง 1024 ถูกสงวนไว้สำหรับการใช้งานระบบ ซึ่งหมายความว่าในการใช้งานคุณต้องมีสิทธิ์ในการเปลี่ยนแปลง - เข้าถึงการตั้งค่าระบบพื้นฐาน ผู้ใช้รูทมีสิทธิ์ดังกล่าวและสามารถใช้พอร์ตได้จริงในช่วง 0 - 1024
ในปัญหาของคุณอย่างที่คุณเห็นระบบผ่านการตอบสนอง Apache2 ระบุว่ารากของปัญหา ([... ] ไม่สามารถผูกกับที่อยู่ blah blah 80 ):
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
เมื่อ Apache2 http daemon เริ่มทำงานมันจะพยายามผูกพอร์ต 80 พอร์ตเนื่องจากเป็นพอร์ตเริ่มต้นสำหรับใช้ใน HTTP seeซึ่งเป็นพอร์ตภายในพอร์ตที่ระบบกำหนดและสามารถเข้าถึงได้โดยรูทเท่านั้น
คุณดำเนินการคำสั่งเริ่มต้นในฐานะผู้ใช้ทั่วไปโดยไม่มีสิทธิ์รูทและทำให้ความล้มเหลวในการทำเช่นนั้น
ในคำง่าย ๆ :
คุณ:
สวัสดี Apache2 ฉันคือ Kongthap และฉันบอกให้คุณเริ่ม ( /etc/init.d/apache2 start
)
apache2:
ตกลง. ฉันกำลังเริ่มต้น (การเริ่มต้นเว็บเซิร์ฟเวอร์ apache2)
ระบบโปรดให้พอร์ต 80 เพื่อใช้และรับฟังการเชื่อมต่อ
ระบบ:
ตกลง. สักครู่เพื่อตรวจสอบ ...
อ่า ... ขอโทษ Apache2 แต่ฉันไม่สามารถให้คุณวิ่งที่ 80 พอร์ตมันเป็นของใช้ส่วนตัว
และคุณไม่มีสิทธิ์ที่ถูกต้องในการผูกมัน ( Operation not permitted
)
apache2:
โอ้โห Kongthap ฉันล้มเหลวในการเริ่มระบบไม่ยอมให้ฉันทำ ( (13)Permission denied:[...]
)
ข้อสรุป
มีสองวิธีแก้ปัญหานี้เป็นหลัก:
รัน Apache2 HTTP daemon ด้วยสิทธิ์พิเศษโดยใช้sudo
:
sudo service apache2 start
หรือ:
sudo /etc/init.d/apache2 start
เปลี่ยนพอร์ตเริ่มต้นจาก80
บางสิ่งบางอย่างที่ยิ่งใหญ่กว่า1024
การพูด2000
, 2500
, 9000
ฯลฯ พอร์ตโดยทั่วไปจะเรียกใช้เมื่ออยู่ในสถานการณ์ดังกล่าว8080
sudo vi /etc/apache2/ports.conf
มองหาหรือไม่เพิ่ม:
Listen 8080
หรือพอร์ตอื่น ๆ ที่คุณเลือกเช่นพอร์ต> 1024
และพอร์ตที่เลือกไม่ได้ใช้โดยกระบวนการอื่น