เหตุใดจึงไม่ใช่ช่างฝีมือ PHP ของ laravel ที่ให้บริการเซิร์ฟเวอร์ที่สามารถเข้าถึงได้จาก WWW บน IIS


12

ฉันมีแอปพลิเคชัน laravel ที่ทำงานผ่านเซิร์ฟเวอร์ laravel artisan :

 php artisan serve

และทำงานได้ดีถ้าฉันไปlocalhost:8000.. นอกจากนี้ฉันเพิ่มกฎขาเข้าในเซิร์ฟเวอร์ IIS เช่นนั้น:

แผงควบคุม -> เครื่องมือการดูแลระบบ -> ไฟร์วอลล์ Windows ที่มีความปลอดภัยขั้นสูงกฎขาเข้า สร้างกฎใหม่ "อนุญาตพอร์ต, TCP, 8000, โปรไฟล์ทั้งหมด

อย่างไรก็ตามด้วยเหตุผลบางอย่างฉันยังคงไม่สามารถเข้าถึงเว็บไซต์จาก WWW (ฉันทำตามขั้นตอนเดียวกันสำหรับเซิร์ฟเวอร์ webrick (ในเครื่องเดียวกัน) และสิ่งต่าง ๆ ทำงานได้อย่างสมบูรณ์แบบ) .. มีความคิดอะไรบ้าง?


1
โดยไม่ทราบว่า Laravel หรือartisanฉันเดาว่ามันถูกผูกไว้กับlocalhostค่าเริ่มต้นเท่านั้นและคุณต้องกำหนดค่าให้จัดการกับคำขอที่ไม่ใช่ของท้องถิ่น ค้นหาเอกสารของระบบเพื่อตรวจสอบสิ่งนี้
สเวน

@SvW ถูกต้อง
ceejayoz

คำตอบ:


29

เพื่อให้มันทำงานนอก localhost ทำ php artisan serve --host 0.0.0.0

php artisan serve --host 0.0.0.0 --port 80หากคุณต้องการให้ทำงานโดยไม่ได้ระบุพอร์ตในเบราว์เซอร์ sudoจะเป็นสิ่งจำเป็น

หมายเหตุ: ไม่php artisan serveควรใช้สำหรับการผลิต สำหรับการพัฒนาและสาธิตเท่านั้นและจะไม่สามารถจัดการได้มากกว่าหนึ่งหรือสองมูลค่าการจราจร


ตกลงฟังดูดี .. แน่นอนเมื่อใช้คำแนะนำของคุณฉันสามารถดูได้จาก WWW (เช่น mydomain.com:8080) .. แต่ฉันยังสงสัยว่าทำไมฉันไม่สามารถให้ apache ใช้กับ WWW ได้จริงเหรอ? นี่เป็นสถานการณ์เฉพาะของฉัน: การทำงานartisan serveทำให้มันทำงานได้ดี .. แต่จากนั้นการเปิด apache ทำให้ฉันมีpage not foundข้อผิดพลาด .. ฉันได้สร้างโครงการ laravel ตัวอย่างโดยใช้นักแต่งเพลง .. และมันก็ใช้ได้ดีแม้ใน apache .. อย่างไรก็ตามโครงการนี้ฉัน คัดลอกมาจากเครื่องของนักพัฒนาคนอื่นจริง ๆ แล้วฉันคิดว่ามันน่าจะเกี่ยวข้องกับการอนุญาตไฟล์หรือไม่?
abbood

2
คุณจะต้องกำหนดค่า Apache ให้ชี้ไปที่ไดเรกทอรีที่ถูกต้อง ดูlaravel.com/docs/installation#pretty-urls
ceejayoz

ตกลง .. ฉันเปลี่ยนAllowOverrideไปAllเป็นhttpd.confไฟล์ในคำจำกัดความของDocumentRootคำสั่งที่นี่ .. แต่นั่นไม่ได้ผล .. ในเว็บไซต์ laravel มันบอกว่าถ้ามันไม่ทำงานลองOptions +FollowSymLinks RewriteEngine On .... แต่ฉันไม่แน่ใจว่าจะไปที่ไหน ใส่สิ่งเหล่านั้น พวกเขาควรจะไปที่ไฟล์ httpd.conf เดียวกันด้วยหรือไม่
abbood

DocumentRoot ของคุณชี้ไปที่ไดเรกทอรีสาธารณะหรือไม่
ceejayoz

1
@colinhoernig เพียงจำที่ไม่เคยใช้มันสำหรับการผลิต
ceejayoz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.