วิธีสร้าง Virtual Host ใน WampServer
WAMPServer 3 ทำให้กระบวนการนี้ง่ายขึ้นมาก!
คุณสามารถทำเกือบทุกอย่างจากยูทิลิตี้ที่ให้ไว้เป็นส่วนหนึ่งของ WAMPServer
สร้างโฟลเดอร์ภายในเพื่อบรรจุ project.site ของคุณ ซึ่งสามารถอยู่ภายใต้C:\wamp\www\
ไดเร็กทอรีหรือในโฟลเดอร์ที่แยกจากกันอย่างสมบูรณ์เช่นC:\websites
.
สร้างโฟลเดอร์ภายในตำแหน่งที่คุณเลือก EG C:\websites\project1\www
หรือภายใต้ไฟล์c:\wamp\www\project1\www
ตอนนี้เปิด localhost wampmanager->localhost
และคลิกที่ลิงค์Add a Virtual Host
ภายใต้ส่วน TOOLS ในหน้าแรก
คุณจะเห็นหน้าดังนี้:
กรอกข้อมูลในฟิลด์ตามที่ระบุโดยคำแนะนำด้านบนแต่ละฟิลด์
การกำหนดค่าโฮสต์เสมือนจะถูกสร้างขึ้นสำหรับคุณ
ตอนนี้คุณต้องรีสตาร์ท DNS Cache คุณสามารถทำเช่นนี้ได้จากเมนู wampmanager right click wampmanager->Tools->Restart DNS
เช่นนี้ DNS Cache จะถูกรีสตาร์ทจากนั้น Apache ก็จะหยุดทำงานและรีสตาร์ท เมื่อไอคอน wampmanager เป็นสีเขียวอีกครั้งทั้งหมดเสร็จสมบูรณ์
ตอนนี้คุณต้องสร้างindex.php
ไฟล์ง่ายๆหรือติดตั้งไซต์ของคุณลงในโฟลเดอร์ที่คุณสร้างไว้ด้านบน
สมมติว่า VH ของคุณถูกเรียกproject.dev
คุณควรจะเห็นชื่อนั้นภายใต้ส่วนโฮสต์เสมือนของคุณในหน้าแรกของ WAMPServer
คุณสามารถเปิดไซต์ได้จากเมนูนี้หรือเพียงแค่ใช้ชื่อโดเมนใหม่ในแถบที่อยู่ EG project1.dev
และการเปิดตัวไซต์ shoudl
กลไก WAMPServer 2.5 รุ่นเก่าหรือหากคุณต้องการทำทั้งหมดด้วยตนเอง
มีการเปลี่ยนแปลงแนวคิดใน WampServer 2.5 ขึ้นไปและมีเหตุผลที่ดีสำหรับการเปลี่ยนแปลงนี้!
ใน WampServer ตอนนี้ได้รับการสนับสนุนอย่างยิ่งให้สร้าง Virtual Host สำหรับแต่ละโปรเจ็กต์ของคุณแม้ว่าคุณจะยึดไว้ใน\wamp\www\subfolder
โครงสร้างก็ตาม
เอกสารโฮสต์เสมือน
ตัวอย่างโฮสต์เสมือน
หน้าแรกของ WampServer ( \wamp\www\index.php
) คาดว่าคุณจะสร้างโฮสต์เสมือนสำหรับโปรเจ็กต์ทั้งหมดของคุณแล้วดังนั้นจะทำงานได้อย่างถูกต้องก็ต่อเมื่อคุณทำเช่นนั้น
ประวัติศาสตร์
เพื่อให้ชีวิตง่ายขึ้นสำหรับผู้เริ่มต้นใช้ WampServer ในการเรียนรู้ PHP Apache และ MySQL ขอแนะนำให้คุณสร้างโฟลเดอร์ย่อยภายใต้\wamp\www\
โฟลเดอร์
wamp
|
|
|
|
โฟลเดอร์ย่อยเหล่านี้จะแสดงให้เห็นการเชื่อมโยงใน 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 สิ่งนี้สามารถและทำให้เกิดปัญหาเมื่อคุณย้ายไซต์ของคุณไปยังเซิร์ฟเวอร์ที่ใช้งานจริง
วิธีสร้าง Virtual Host ใน WampServer
จริงๆแล้วสิ่งนี้ควรใช้งานได้เหมือนกันสำหรับเซิร์ฟเวอร์ wndows Apache ใด ๆ โดยมีความแตกต่างเฉพาะที่คุณอาจพบไฟล์กำหนดค่า Apache
มี 3 ขั้นตอนในการสร้าง Virtual Host แรกของคุณใน Apache และมีเพียง 2 ขั้นตอนหากคุณได้กำหนดไว้แล้ว
- สร้างนิยามโฮสต์เสมือน
- เพิ่มชื่อโดเมนใหม่ของคุณในไฟล์ HOSTS
- ยกเลิกการใส่เครื่องหมายกำกับบรรทัดใน httpd.conf ที่มีไฟล์นิยาม Virtual Hosts
ขั้นตอนที่ 1สร้างข้อกำหนดโฮสต์เสมือน
แก้ไขไฟล์ที่เรียกว่าhttpd-hosts.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">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
ตอนนี้เรากำหนดโครงการของเราและแน่นอนว่าคุณทำกับแต่ละโครงการของคุณเมื่อคุณเริ่มโครงการใหม่
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
หมายเหตุ: แต่ละโฮสต์เสมือนที่DocumentRoot
กำหนดเอง นอกจากนี้ยังมีพารามิเตอร์อื่น ๆ อีกมากมายที่คุณสามารถเพิ่มลงในนิยามโฮสต์เสมือนตรวจสอบเอกสาร Apache
กันเล็ก ๆ
วิธีการทำงานของโฮสต์เสมือนใน Apache: คำจำกัดความแรกในไฟล์นี้จะเป็นไซต์เริ่มต้นด้วยดังนั้นหากชื่อโดเมนที่ใช้ในเบราว์เซอร์ไม่ตรงกับโดเมนที่โฮสต์เสมือนจริงที่กำหนดไว้จริงทำให้ localhost เป็นโดเมนแรกในไฟล์จึงจะทำให้ เป็นไซต์ที่โหลดหากมีการพยายามแฮ็กโดยใช้ที่อยู่ IP ของคุณ ดังนั้นหากเรามั่นใจว่าความปลอดภัยของ Apache สำหรับโดเมนนี้ถูกตั้งค่าไว้เสมอ
Require local
การแฮ็กแบบไม่เป็นทางการจากที่อยู่ภายนอกจะได้รับข้อผิดพลาดและไม่เข้าสู่พีซีของคุณ แต่หากคุณสะกดโดเมนผิดคุณจะเห็นหน้าแรกของ WampServer เนื่องจากคุณใช้พีซีเครื่องเดียวกับ WampServer และlocal
ดังนั้น
ขั้นตอนที่ 2 :
เพิ่มชื่อโดเมนใหม่ของคุณในไฟล์ HOSTS ตอนนี้เราต้องเพิ่มชื่อโดเมนที่เราใช้ในนิยามโฮสต์เสมือนลงในไฟล์ HOSTS เพื่อให้ windows ทราบว่าจะหาได้จากที่ใด สิ่งนี้คล้ายกับการสร้างระเบียน DNS A แต่จะมองเห็นได้เฉพาะในพีซีเครื่องนี้เท่านั้น
แก้ไข C:\windows\system32\drivers\etc\hosts
ไฟล์ไม่มีนามสกุลและควรเป็นแบบนั้น ระวังแผ่นจดบันทึกเพราะอาจลองและเพิ่ม.txt
ส่วนขยายหากคุณไม่มีตัวแก้ไขที่ดีกว่า ฉันขอแนะนำให้คุณดาวน์โหลด Notepad ++ ซึ่งเป็นโปรแกรมแก้ไขฟรีและดีมาก
นอกจากนี้ไฟล์นี้เป็นไฟล์ที่ได้รับการป้องกันดังนั้นคุณต้องแก้ไขด้วยสิทธิ์ของผู้ดูแลระบบดังนั้นเปิดตัวแก้ไขโดยใช้ตัวเลือกเมนูRun as Administrator
ไฟล์โฮสต์ควรมีลักษณะเช่นนี้เมื่อคุณแก้ไขเสร็จแล้ว
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
และเพียงแค่ลบ#
เพื่อยกเลิกการแสดงความคิดเห็นบรรทัดนั้น
ในการเปิดใช้งานการเปลี่ยนแปลงนี้ในขณะที่คุณเรียกใช้ Apache เราต้องหยุดและเริ่มบริการ Apache ใหม่
wampmanager.exe -> Apache -> Service -> Restart Service
ตอนนี้ถ้าไอคอน WAMP ในซิสเต็มเทรย์ไม่เป็นสีเขียวอีกแสดงว่าคุณอาจทำบางอย่างผิดพลาดใน\wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
ไฟล์
หากเป็นเช่นนั้นนี่เป็นกลไกที่มีประโยชน์ในการค้นหาว่ามีอะไรผิดปกติ มันใช้คุณสมบัติของ Apache exe (httpd.exe) เพื่อตรวจสอบไฟล์กำหนดค่าและรายงานข้อผิดพลาดตามชื่อไฟล์และหมายเลขบรรทัด
เปิดหน้าต่างคำสั่ง
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
ดังนั้นแก้ไขข้อผิดพลาดและทดสอบอีกครั้งจนกว่าคุณจะได้ผลลัพธ์
Syntax OK
ตอนนี้มีอีกอย่างหนึ่ง
มีรายการเมนูใหม่ 2 รายการในระบบเมนู wampmanager โครงการหนึ่งเรียกว่า'โครงการของฉัน'ซึ่งจะเปิดไว้โดยค่าเริ่มต้น และอันที่สองเรียกว่า'My Virtual Hosts'ซึ่งไม่ได้เปิดใช้งานตามค่าเริ่มต้น
'โครงการของฉัน' จะแสดงรายการไดเรกทอรีย่อยของไดเรกทอรี \ wamp \ www และให้ลิงก์เพื่อเปิดไซต์ในไดเรกทอรีย่อยนั้น ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้มันเปิดตัว 'project1' และไม่ใช่ 'localhost / project1' ดังนั้นเพื่อให้ลิงก์ใช้งานได้เราต้องสร้างคำจำกัดความของโฮสต์เสมือนเพื่อให้ลิงก์นี้เปิดไซต์นั้นในเบราว์เซอร์ของคุณโดยไม่มีข้อกำหนดโฮสต์เสมือน เปิดการค้นหาเว็บสำหรับชื่อไซต์เป็นคำหลักหรือเพียงแค่ส่งคืนเงื่อนไขที่ไม่พบไซต์
รายการเมนู 'โฮสต์เสมือนของฉัน' แตกต่างกันเล็กน้อย มันค้นหาไฟล์ที่ใช้ในการกำหนด Virtual Hosts (เราจะไปถึงนั้นในไม่กี่นาที) และสร้างลิงก์เมนูสำหรับพารามิเตอร์ ServerName แต่ละตัวที่พบและสร้างรายการเมนูสำหรับแต่ละรายการ สิ่งนี้อาจดูสับสนเล็กน้อยเมื่อเราสร้างคำจำกัดความโฮสต์เสมือนสำหรับไดเรกทอรีย่อยของโฟลเดอร์ \ wamp \ www บางรายการจะปรากฏในเมนู "โครงการของฉัน" และเมนู "โฮสต์เสมือนของฉัน"
ฉันจะเปิดเมนู 'โฮสต์เสมือนของฉัน' อื่น ๆ ได้อย่างไร
- สำรองข้อมูลไฟล์ \ wamp \ wampmanager.tpl ในกรณีที่คุณทำผิดพลาดไฟล์นี้เป็นไฟล์ที่สำคัญมาก
- แก้ไข \ wamp \ wampmanager.tpl
- ค้นหาพารามิเตอร์นี้
;WAMPPROJECTSUBMENU
ในส่วน "[Menu.Left]"
- เพิ่มพารามิเตอร์ใหม่นี้
;WAMPVHOSTSUBMENU
ก่อนหรือหลัง;WAMPPROJECTSUBMENU
พารามิเตอร์
- บันทึกไฟล์
- ตอนนี้คลิกขวาที่ไอคอน wampmanager แล้วเลือก 'รีเฟรช' หากไม่ได้เพิ่มเมนูให้ "ออก" และรีสตาร์ท wampmanager
Big Note
เมนูใหม่จะปรากฏก็ต่อเมื่อคุณได้กำหนด Virtual Hosts ไว้แล้ว! มิฉะนั้นคุณจะไม่เห็นความแตกต่างจนกว่าคุณจะกำหนด 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">
Options Indexes FollowSymLinks
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>
จากนั้นเพิ่มโดเมนการพัฒนาใหม่นี้ลงในไฟล์ HOSTS:
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 นั่นหมายความว่าเราไม่สามารถเข้าถึงไซต์จริงได้อีกต่อไปจากสิ่งนี้ พีซีตามที่จะนำ example.com ไปที่ 127.0.0.1 เช่นพีซีเครื่องนี้และไม่ออกสู่อินเทอร์เน็ต
นอกจากนี้: ดูว่าฉันได้อนุญาตให้เข้าถึงไซต์นี้จากอินเทอร์เน็ตจากภายในข้อกำหนด VHOST การเปลี่ยนแปลงนี้จะมีผลกับไซต์นี้เท่านั้นและจะไม่มีผลกับไซต์อื่น ๆ มีประโยชน์มากในการอนุญาตให้ไคลเอ็นต์ดูการเปลี่ยนแปลงของคุณเป็นเวลาประมาณหนึ่งชั่วโมงโดยไม่ต้องคัดลอกไปยังเซิร์ฟเวอร์ที่ใช้งานจริง ซึ่งหมายความว่าเราต้องแก้ไขไฟล์นี้ด้วยตนเองเพื่อเปิดและปิดการเข้าถึงนี้แทนที่จะใช้รายการเมนู Put Online / Offline บน wampmanager
นอกจากนี้ฉันได้เพิ่มการแก้ไขบางอย่างในการกำหนดค่า PHP อีกครั้งซึ่งจะใช้กับไซต์นี้เท่านั้น มีประโยชน์มากเมื่อดูแลไซต์ที่มีข้อกำหนดเฉพาะซึ่งแตกต่างจากไซต์อื่น ๆ ที่คุณดูแล ฉันเดาว่าเราสามารถสันนิษฐานได้จากพารามิเตอร์ที่ใช้ว่ามีหน้าเว็บที่ใช้งานได้ยาวนานอยู่ที่ไหนสักแห่งและเขียนได้ไม่ดีมากและจะไม่ทำงานโดยมีข้อผิดพลาดปรากฏบนเบราว์เซอร์โดยไม่ทำให้หน้าเสียหาย ผมเชื่อว่ามีอยู่เว็บไซต์เช่นนี้และผู้คนยังคงต้องการให้พวกเขารักษาไม่ดี แต่หมายความว่าเราต้องเปลี่ยนพารามิเตอร์เหล่านี้สำหรับไซต์เฉพาะนี้เท่านั้นไม่ใช่ทั่วโลกกับไซต์เสมือนทั้งหมดที่ทำงานบน WampServer