WAMPServer 2.5 โฮมเพจเมนูโครงการของคุณและโฮสต์เสมือน
มีการเปลี่ยนแปลงแนวคิดใน WampServer 2.5 และมีเหตุผลที่ดีสำหรับการเปลี่ยนแปลงนี้!
ใน WampServer 2.5 ตอนนี้ขอแนะนำอย่างจริงจังให้สร้างโฮสต์เสมือนสำหรับแต่ละโครงการของคุณแม้ว่าคุณจะค้างไว้ใน\wamp\www\subfolder
โครงสร้าง
เอกสารโฮสต์เสมือน
ตัวอย่างโฮสต์เสมือน
หน้าแรกของ WampServer (\ wamp \ www \ index.php) ตอนนี้คาดว่าคุณจะสร้างโฮสต์เสมือนสำหรับโครงการทั้งหมดของคุณและจะทำงานได้อย่างถูกต้องเฉพาะเมื่อคุณทำเช่นนั้น
ประวัติศาสตร์
เพื่อให้ง่ายขึ้นสำหรับผู้เริ่มต้นใช้ WampServer เพื่อเรียนรู้ PHP Apache และ MySQL เราแนะนำให้คุณสร้างโฟลเดอร์ย่อยภายใต้\wamp\www\
โฟลเดอร์
wamp
|-- www
|-- Chapter1
|-- Chapter2
|-- etc
โฟลเดอร์ย่อยเหล่านี้จะแสดงให้เห็นการเชื่อมโยงใน WampServer โฮมเพจภายใต้เมนูที่เรียกว่า 'โครงการของคุณ' localhost/subfoldername
และการเชื่อมโยงเหล่านี้จะมีการเชื่อมโยงไปยัง
ยอมรับได้เฉพาะบทเรียนง่ายๆ
สิ่งนี้ทำให้ชีวิตง่ายสำหรับผู้เริ่มต้นที่สมบูรณ์และเป็นที่ยอมรับอย่างสมบูรณ์แบบสำหรับบทเรียนต่อไปนี้เพื่อเรียนรู้การเขียนโค้ด PHP อย่างไรก็ตามมันไม่เคยมีไว้สำหรับใช้เมื่อพัฒนาเว็บไซต์จริงที่คุณต้องการคัดลอกไปยังเซิร์ฟเวอร์ที่โฮสต์อยู่ ในความเป็นจริงถ้าคุณใช้กลไกนี้มักจะทำให้เกิดปัญหาเนื่องจากการกำหนดค่าไซต์สดจะไม่ตรงกับการกำหนดค่าการพัฒนาของคุณ
ปัญหาการพัฒนาเว็บไซต์จริง
เหตุผลสำหรับเรื่องนี้คือแน่นอนว่าการตั้งค่า DocumentRoot เริ่มต้นสำหรับ wamp คือ
DocumentRoot "c:/wamp/www/"
ไม่ว่าโฟลเดอร์ย่อยของคุณชื่ออะไร สิ่งนี้กล่าวถึงบ่อยครั้งที่ใช้โค้ด PHP ที่สอบถามโครงสร้างหรือเว็บไซต์ของคุณได้รับข้อมูลที่แตกต่างกันเมื่อทำงานในการพัฒนา WampServer ของคุณกับสิ่งที่จะได้รับเมื่อทำงานบนเซิร์ฟเวอร์ที่โฮสต์สดโดยที่ DocumentRoot ชี้ไปที่โฟลเดอร์ด้านบนของเว็บไซต์ ลำดับชั้นของไฟล์ รหัสประเภทนี้มีอยู่ในหลาย ๆ เฟรมเวิร์คและ CMS ตัวอย่างเช่น WordPress และ Joomla เป็นต้น
ตัวอย่างเช่น
ช่วยบอกว่าเรามีโครงการที่เรียกว่า project1 จัดขึ้นในwamp\www\project1
และทำงานไม่ถูกต้องเป็นlocalhost/project1/index.php
นี่คือสิ่งที่จะรายงานโดยคำสั่ง PHP ที่เป็นปัญหา:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
ตอนนี้ถ้าเราได้กำหนดไซต์นั้นอย่างถูกต้องโดยใช้คำจำกัดความของโฮสต์เสมือนและเรียกใช้เป็นhttp://project1
ผลลัพธ์บนไซต์การพัฒนา WAMPServer จะตรงกับที่ได้รับเมื่ออยู่ในสภาพแวดล้อมที่โฮสต์สด
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
ตอนนี้ความแตกต่างอาจดูเล็กน้อยในตอนแรก แต่ถ้าคุณใช้เฟรมเวิร์กอย่าง WordPress หรือ CMS อย่าง Joomla อย่างนี้ก็สามารถทำให้เกิดปัญหาเมื่อคุณย้ายเว็บไซต์ของคุณไปยังเซิร์ฟเวอร์ที่ใช้งานจริง
วิธีการสร้างโฮสต์เสมือนใน WampServer
ที่จริงแล้วสิ่งนี้ควรใช้งานได้เหมือนกันสำหรับเซิร์ฟเวอร์ Apache ใด ๆ ที่มีความแตกต่างเฉพาะที่คุณอาจพบไฟล์กำหนดค่า Apache
มี 3 ขั้นตอนในการสร้างโฮสต์เสมือนแรกของคุณใน Apache และเพียง 2 ถ้าคุณมีหนึ่งกำหนดไว้แล้ว
- สร้างคำจำกัดความโฮสต์เสมือน
- เพิ่มชื่อโดเมนใหม่ของคุณไปยังไฟล์ HOSTS
- ยกเลิกหมายเหตุบรรทัดใน httpd.conf ที่มีไฟล์ข้อกำหนด Virtual Hosts
ขั้นตอนที่ 1สร้างคำจำกัดความโฮสต์เสมือน
แก้ไขไฟล์ชื่อhttpd-vhosts.conf
WampServer ที่ยังใช้งานอยู่
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(หมายเลขรุ่น Apache อาจแตกต่างกันโปรดใช้ความคิดก่อนดำเนินการต่อ)
หากนี่เป็นครั้งแรกที่คุณแก้ไขไฟล์นี้ให้ลบโค้ดตัวอย่างเริ่มต้นออกซึ่งไม่มีประโยชน์
ฉันสมมติว่าเราต้องการสร้างคำนิยามสำหรับไซต์ที่เรียกว่า project1 ที่ใช้งานได้
\wamp\www\project1
สำคัญมากอันดับแรกเราต้องตรวจสอบให้แน่ใจว่า localhost ยังคงใช้งานได้นั่นคือคำจำกัดความ VHOST แรกที่เราจะใส่ในไฟล์นี้
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
AllowOverride All
Require local
</Directory>
</VirtualHost>
ตอนนี้เรากำหนดโครงการของเรา: และแน่นอนว่าคุณทำเพื่อโครงการแต่ละโครงการของคุณเมื่อคุณเริ่มโครงการใหม่
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
AllowOverride All
Require local
</Directory>
</VirtualHost>
หมายเหตุ: ว่าแต่ละโฮสต์เสมือนตามที่DocumentRoot
กำหนดไว้ นอกจากนี้ยังมีพารามิเตอร์อื่น ๆ อีกมากมายที่คุณสามารถเพิ่มลงในคำจำกัดความโฮสต์เสมือนตรวจสอบเอกสาร Apache
ขนาดเล็กกัน
วิธีโฮสต์เสมือนทำงานใน Apache: คำจำกัดความแรกในไฟล์นี้จะเป็นเว็บไซต์เริ่มต้นดังนั้นชื่อโดเมนที่ใช้ในเบราว์เซอร์จะไม่ตรงกับโดเมนที่โฮสต์ไว้จริงใด ๆ ทำให้ localhost เป็นโดเมนแรกในไฟล์ เป็นไซต์ที่โหลดถ้าแฮ็คพยายามใช้ที่อยู่ IP ของคุณ ดังนั้นหากเรามั่นใจในความปลอดภัยของ Apache สำหรับโดเมนนี้อยู่เสมอ
Require local
การแฮ็คแบบชั่วคราวใด ๆ จากที่อยู่ภายนอกจะได้รับข้อผิดพลาดและไม่เข้าสู่พีซีของคุณ แต่หากคุณสะกดชื่อโดเมนคุณจะแสดงหน้าแรกของ WampServer เนื่องจากคุณอยู่บนพีซีเครื่องเดียวกับ WampServer และlocal
ก่อนหน้านี้
ขั้นตอนที่ 2 :
เพิ่มชื่อโดเมนใหม่ของคุณไปยังไฟล์ HOSTS ตอนนี้เราต้องเพิ่มชื่อโดเมนที่เราใช้ในการกำหนดโฮสต์เสมือนในไฟล์โฮสต์เพื่อให้ windows รู้ว่าจะหาได้ที่ไหน สิ่งนี้คล้ายคลึงกับการสร้างระเบียน DNS A แต่จะปรากฏเฉพาะในกรณีนี้ในพีซีนี้โดยเฉพาะ
แก้ไข C:\windows\system32\drivers\etc\hosts
ไฟล์ไม่มีส่วนขยายและควรเป็นเช่นนั้น ระวัง Notepad เพราะอาจลองและเพิ่ม.txt
ส่วนขยายหากคุณไม่มีโปรแกรมแก้ไขที่ดีกว่า ฉันแนะนำให้คุณดาวน์โหลด Notepad ++ ซึ่งเป็นโปรแกรมฟรีและเป็นตัวแก้ไขที่ดีมาก
และนี่เป็นไฟล์ที่ได้รับการป้องกันดังนั้นคุณต้องแก้ไขด้วยสิทธิ์ผู้ดูแลระบบเพื่อเปิดใช้ตัวแก้ไขโดยใช้ตัวเลือกเมนูเรียกใช้ในฐานะผู้ดูแลระบบ
ไฟล์โฮสต์ควรมีลักษณะเช่นนี้เมื่อคุณแก้ไขเสร็จแล้ว
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
โปรดทราบว่าคุณควรมีคำจำกัดความที่นี่สำหรับที่อยู่ลูปแบ็ค IPV4 127.0.0.1
และที่อยู่ลูปแบ็ค IPV6 ::1
เนื่องจาก Apache ตอนนี้รับรู้ IPV6 แล้วและเบราว์เซอร์จะใช้ IPV4 หรือ IPV6 หรือทั้งสองอย่าง ฉันไม่รู้ว่าจะตัดสินใจเลือกใช้แบบไหน แต่ก็สามารถใช้อย่างใดอย่างหนึ่งได้หากคุณเปิด IPV6 สแต็กและระบบปฏิบัติการหน้าต่างส่วนใหญ่ใช้ XP SP3
ตอนนี้เราต้องบอกให้ windows รีเฟรชแคชชื่อโดเมนดังนั้นเปิดหน้าต่างคำสั่งอีกครั้งโดยใช้ตัวเลือกเมนูRun as Administratorอีกครั้งและทำดังต่อไปนี้
net stop dnscache
net start dnscache
project1
กองกำลังนี้หน้าต่างเพื่อล้างแคชชื่อโดเมนและโหลดมันในการโหลดมันจะอีกครั้งอ่านแฟ้มโฮสต์ดังนั้นตอนนี้มันรู้เกี่ยวกับโดเมน
ขั้นตอนที่ 3 : ยกเลิกหมายเหตุบรรทัดใน httpd.conf ที่มีไฟล์คำจำกัดความโฮสต์เสมือน
แก้ไข httpd.conf ของคุณใช้เมนู wampmanager.exe เพื่อให้แน่ใจว่าคุณแก้ไขไฟล์ที่ถูกต้อง
ค้นหาบรรทัดนี้ใน httpd.conf
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
และเพียงแค่ลบ#
เพื่อไม่แสดงข้อคิดเห็นบรรทัดนั้น
เพื่อเปิดใช้งานการเปลี่ยนแปลงนี้ในขณะที่คุณกำลังใช้งาน Apache ตอนนี้เราต้องหยุดและเริ่มบริการ Apache ใหม่
wampmanager.exe -> Apache -> Service -> Restart Service
ตอนนี้ถ้าไอคอน WAMP ในซิสเต็มเทรย์ไม่ได้เป็นสีเขียวอีกครั้งนั่นหมายความว่าคุณอาจทำสิ่งผิดปกติใน\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
ไฟล์
ถ้าเป็นเช่นนี้เป็นกลไกที่มีประโยชน์ในการค้นหาสิ่งที่ผิด จะใช้คุณสมบัติของ Apache exe (httpd.exe) เพื่อตรวจสอบไฟล์กำหนดค่าและรายงานข้อผิดพลาดโดยชื่อไฟล์และหมายเลขบรรทัด
เรียกใช้หน้าต่างคำสั่ง
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
ดังนั้นแก้ไขข้อผิดพลาดและทดสอบซ้ำอีกครั้งจนกว่าคุณจะได้รับผลลัพธ์
Syntax OK
ตอนนี้มีอีกหนึ่งสิ่ง
มีรายการเมนูใหม่ 2 รายการในระบบเมนู wampmanager หนึ่งเรียกว่า [b] 'My Projects' [/ b] ซึ่งถูกเปิดใช้งานตามค่าเริ่มต้น และอันที่สองเรียกว่า [b] 'My Virtual Hosts' [/ b] ซึ่งไม่ได้เปิดใช้งานโดยค่าเริ่มต้น
'โครงการของฉัน' จะแสดงรายการไดเรกทอรีย่อยใด ๆ ของไดเรกทอรี \ wamp \ www และให้ลิงก์เพื่อเปิดเว็บไซต์ในไดเรกทอรีย่อยนั้น อย่างที่ฉันพูดไปก่อนหน้านี้มันเปิดตัว 'project1` และไม่ใช่' localhost / project1 'เพื่อให้ลิงก์ทำงานเราต้องสร้างคำจำกัดความโฮสต์เสมือนเพื่อให้ลิงก์นี้เปิดใช้ไซต์นั้นจริงในเบราว์เซอร์ของคุณ เรียกใช้การค้นหาเว็บสำหรับชื่อไซต์เป็นคำหลักหรือเพียงแค่ส่งคืนไซต์ที่ไม่พบเงื่อนไข
รายการเมนู 'My Virtual Hosts' นั้นแตกต่างกันเล็กน้อย มันค้นหาไฟล์ที่ใช้ในการกำหนดโฮสต์เสมือน (เราจะไปที่นั้นในนาที) และสร้างการเชื่อมโยงเมนูสำหรับแต่ละพารามิเตอร์ ServerName มันค้นหาและสร้างรายการเมนูสำหรับแต่ละคน สิ่งนี้อาจดูสับสนเล็กน้อยเมื่อเราสร้างคำจำกัดความโฮสต์เสมือนสำหรับไดเรกทอรีย่อยของโฟลเดอร์ \ wamp \ www บางรายการจะปรากฏบนเมนู 'โครงการของฉัน' และเมนู 'โฮสต์เสมือนของฉัน'
ฉันจะเปิดเมนู 'โฮสต์เสมือนของฉัน' อื่นได้อย่างไร
- ทำสำเนาสำรองของไฟล์ \ wamp \ wampmanager.tpl ในกรณีที่คุณทำผิดมันเป็นไฟล์ที่สำคัญมาก
- แก้ไข \ wamp \ wampmanager.tpl
- ค้นหาพารามิเตอร์นี้
;WAMPPROJECTSUBMENU
ในส่วน '[Menu.Left]'
- เพิ่มพารามิเตอร์ใหม่นี้
;WAMPVHOSTSUBMENU
ก่อนหรือหลัง;WAMPPROJECTSUBMENU
พารามิเตอร์
- บันทึกไฟล์
- ตอนนี้คลิกขวาที่ไอคอน wampmanager และเลือก 'รีเฟรช' หากนี่ไม่ได้เพิ่มเมนู 'exit' และรีสตาร์ท wampmanager
Big Note
เมนูใหม่จะปรากฏขึ้นก็ต่อเมื่อคุณได้กำหนดโฮสต์เสมือนไว้แล้ว! มิฉะนั้นคุณจะไม่เห็นความแตกต่างจนกว่าคุณจะกำหนด VHOST
ตอนนี้ถ้าคุณนำสิ่งนี้ไปยังส่วนขยายตรรกะ
ตอนนี้คุณสามารถย้ายรหัสเว็บไซต์ของคุณอย่างสมบูรณ์นอก\wamp\
โครงสร้างโฟลเดอร์เพียงแค่เปลี่ยนพารามิเตอร์ DocumentRoot ในคำจำกัดความของ VHOST ตัวอย่างเช่นคุณสามารถทำได้:
สร้างโฟลเดอร์บนดิสก์ wamp หรือดิสก์อื่น ๆ (ระวังไดรฟ์เครือข่ายพวกเขาจะซับซ้อนกว่าเล็กน้อย)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
ตอนนี้คุณคัดลอกรหัสไซต์ของคุณไปที่หรือเริ่มสร้างมันใน\websites\example.com\www
โฟลเดอร์และกำหนด VHOST ของคุณเช่นนี้:
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
จากนั้นเพิ่มโดเมนการพัฒนาใหม่นี้ในไฟล์โฮสต์:
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
หมายเหตุ: ไม่ใช่ความคิดที่ดีที่จะใช้ ServerName หรือ ServerAlias ที่เหมือนกับชื่อโดเมนสดของคุณราวกับว่าเราใช้ example.com เป็น ServerName นั่นหมายความว่าเราไม่สามารถไปยังไซต์สดจริงได้อีกต่อไป PC อย่างที่มันจะนำ example.com ไปยัง 127.0.0.1 เช่นพีซีนี้และไม่ได้เชื่อมต่อกับอินเทอร์เน็ต
นอกจากนี้: เห็นว่าฉันอนุญาตให้ไซต์นี้เข้าถึงได้จากอินเทอร์เน็ตจากภายในคำจำกัดความของ VHOST การเปลี่ยนแปลงนี้จะมีผลกับไซต์นี้เท่านั้นและไม่มีอื่นใด มีประโยชน์มากสำหรับการอนุญาตให้ไคลเอ็นต์ดูการเปลี่ยนแปลงของคุณเป็นเวลาหนึ่งชั่วโมงหรือมากกว่านั้นโดยไม่ต้องคัดลอกไปยังเซิร์ฟเวอร์สด นี่หมายความว่าเราต้องแก้ไขไฟล์นี้ด้วยตนเองเพื่อเปิดและปิดการเข้าถึงนี้แทนที่จะใช้รายการเมนู Put Online / Offline บน wampmanager
นอกจากนี้ฉันได้เพิ่มการแก้ไขบางอย่างในการกำหนดค่า PHP อีกครั้งที่จะใช้กับเว็บไซต์นี้เท่านั้น มีประโยชน์มากเมื่อบำรุงรักษาไซต์ที่มีข้อกำหนดเฉพาะซึ่งแตกต่างจากไซต์อื่น ๆ ทั้งหมดที่คุณบำรุงรักษา ฉันเดาว่าเราสามารถสันนิษฐานได้จากพารามิเตอร์ที่ใช้ว่ามีหน้ายาวอยู่ในนั้นและเขียนได้แย่มากและจะไม่ทำงานโดยมีข้อผิดพลาดปรากฏบนเบราว์เซอร์โดยไม่ทำให้หน้ายุ่งเหยิง เชื่อว่าเว็บไซต์ที่ผมเป็นแบบนี้อยู่และผู้คนยังคงต้องการให้พวกเขารักษาไม่ดี แต่นี่หมายความว่าเราจะต้องเปลี่ยนพารามิเตอร์เหล่านี้สำหรับไซต์นี้โดยเฉพาะและไม่ใช่ทั่วโลกเป็นเว็บไซต์เสมือนทั้งหมดที่ทำงานบน WampServer
c:\wamp\htdocs
? จะง่ายกว่าถ้าคุณสร้างโฟลเดอร์ภายใน htdocs และสร้างไฟล์ index.html, index.htm หรือ index.php เพื่อให้คุณสามารถไปที่https://localhost/myfolder
และมันจะอ่านไฟล์ดัชนีโดยอัตโนมัติและแสดงเนื้อหาของหน้า ...