ในการจำลองเครื่องให้เป็น Web Server ด้วยโปรแกรมต่าง ๆ เช่น AppServ หรือ XAMPP เป็นต้นนั้น ปกติแล้วจะได้เพียงแต่ localhost เท่านั้น นั่นหมายความว่า จะดูเว็บแต่ละครั้งก็ต้องพิมพ์ http://localhost อย่างเดียว จะทำเว็บหลาย ๆ เว็บก็สร้างโฟลเดอร์ย่อยเอา ทำ WordPress แยกกัน 2 เว็บแบบเรียกโดเมนต่างกันก็ไม่ได้ ต้องผ่าน localhost อย่างเดียว อยากทดสอบเว็บ joomla กับ WordPress ต่างกันก็ไม่ได้ สุดท้าย ก็ localhost เหมือนเดิม
บทความนี้ จะสอนให้คุณทำ virtual host สามารถเรียกเว็บได้จากชื่อต่าง ๆ ตามที่ต้องการได้เลย เช่น ทำเว็บ WordPress ก็เรียก http://mywordpress หรือ ทำเว็บ joomla ก็เรียก http://myjoomla ได้เลย หรือจะเรียกแบบโดเมนจริง ๆ ก็ยังทำได้ จะทำกี่โดเมนก็ได้ จะเก็บข้อมูลไว้ในไดรฟ์เดียวกันหรือต่างไดรฟ์ก็ได้ สะดวกในการทำเว็บต่าง ๆ หรือการนำข้อมูลจาก Online มาเป็น Offline ก็ทำได้สะดวกยิ่งขึ้น
เริ่มแรก เปิดไฟล์ c:\xampp\apache\conf\extra\httpd-vhosts.conf สำหรับ XAMPP หรือ c:\appserv\apache2.2\conf\extra\httpd-vhosts.conf สำหรับ AppServ ด้วย Text Editor แล้วค้นหาบรรทัด
# # Use name-based virtual hosting. # NameVirtualHost *:80
ตรงบรรทัด NameVirtualHost *:80 หากไม่เป็นแบบนี้ให้แก้เป็น
NameVirtualHost *:80
จากนั้นคัดลอกข้อความด้านล่างนี้ไปวางไว้ที่ด้านล่างของไฟล์
<VirtualHost *:80> DocumentRoot c:/xampp/htdocs ServerName localhost <Directory c:/xampp/htdocs> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order Deny,Allow Allow from all </Directory> </VirtualHost>
คำอธิบาย
- DocumentRoot คือ ไดเร็คทอรี่ที่เก็บไฟล์ของเว็บ ค่าเริ่มต้นของ AppServ คือ c:/AppServ/www ถ้าเป็นของ XAMPP คือ c:/xampp/htdocs ถ้าไดเร็คทอรี่มีช่องว่างอยู่ จะต้องใส่เครื่องหมาย ” เปิดหัวท้ายของไดเร็คทอรี่ด้วย เช่น “c:/my sites”
- ServerName คือ ชื่อโดเมนที่เราจะใช้เรียกเว็บ เช่น ในตัวอย่างนี้คือ localhost เวลาเราเรียกชื่อเว็บ ก็พิมพ์ http://localhost ที่เบราเซอร์เพื่อเปิดเว็บนั่นเอง เราอยากได้ชื่อโดเมนอะไร เราก็ต้องชื่อตรงนี้
- Directory คือ ไดเร็คทอรี่ที่เก็บไฟล์ของเว็บนั่นเอง ซึ่งจะต้องเหมือนกับ DocumentRoot แต่ตรงนี้เป็นการกำหนดคุณสมบัติของไดเร็คทอรี่บน Server นั่นเอง
หมายเหตุ โดยปกติแล้ว เราสามารถเปิด http://localhost ได้ตามปกติ โดยที่ไม่ต้องกำหนดในส่วนของ localhost ตามด้านบนเลย แต่หากเราทำ Virtual Host เราก็จะต้องกำหนดส่วนของ localhost ขึ้นมาด้วย เพราะหากไม่กำหนด ก็จะไม่สามารถเรียก localhost ได้
เพิ่มโดเมน/เซิร์ฟเวอร์
เมื่อเราต้องการเพิ่มโดเมนอื่น ๆ เพื่อทำเว็บเพิ่มเติม ให้คัดลอกข้อมูลจากด้านบน แล้วเปลี่ยนเฉพาะข้อมูลตรงส่วน DocumentRoot, ServerName และ Directory เท่านั้น เช่น
<VirtualHost *:80> DocumentRoot f:/xirbit ServerName xirbit <Directory f:/xirbit> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order Deny,Allow Allow from all </Directory> </VirtualHost>
จากตัวอย่างด้านบนนี้ ให้เราเก็บข้อมูลของเว็บไว้ที่ไดรฟ์ f:\xirbit เวลาจะดูเว็บให้พิมพ์ http://xirbit ที่เบราเซอร์ เราจะทำเพิ่มสักกี่เว็บก็ให้ทำในลักษณะนี้ตามที่ต้องการ เมื่อแก้ไขเสร็จแล้วให้บันทึกไฟล์
แก้ไขไฟล์ hosts
เปิดไฟล์ C:\WINDOWS\system32\drivers\etc\hosts ด้วย Text Editor
127.0.0.1 localhost 127.0.0.1 xirbit
พิมพ์เลข 127.0.0.1 เว้นวรรค แล้วตามด้วยชื่อ ServerName ที่เรากำหนดไว้ในไฟล์ httpd-vhosts.conf ด้านบน กำหนดเท่ากับจำนวนของ ServerName โดยแยกบรรทัดกัน
restart Apache
เมื่อกำหนดค่าต่าง ๆ ทั้งไฟล์ httpd-vhosts.conf และไฟล์ hosts เสร็จแล้ว ให้ทำการ restart Apache อีกครั้ง เพื่อให้ Apache อ่านค่าต่าง ๆ ใหม่ จากนั้นก็สามารถพิมพ์ชื่อโดเมนที่กำหนดในเบราเซอร์ได้เลย
การตั้งชื่อ ServerName นั้นสามารถกำหนดเป็นเหมือนกับโดเมนอินเทอร์เน็ตก็ได้ เช่น xirbit.com แต่เครื่องนั้นจะต้องไม่เชื่อมต่ออินเทอร์เน็ต และการที่ทำในลักษณะ xirbit.com แบบนี้ จะช่วยให้เราสามารถนำข้อมูลจากอินเทอร์เน็ตในโดเมนเดียวกันมาใช้กับเครื่องที่ไม่ได้เชื่อมต่ออินเทอร์เน็ตได้ โดยที่เราไม่ต้องแก้ไขฐานข้อมูลเพิ่มเติมเลย
เช่น ผมทำเว็บ xirbit.com โดยใช้ WordPress และสำรองข้อมูลต่าง ๆ ของ xirbit.com มาทดสอบที่เครื่องที่ไม่ได้เชื่อมต่ออินเทอร์เน็ต และตั้ง virtual host เป็น xirbit.com ก็สามารถทดสอบข้อมูลต่าง ๆ ได้เหมือนกับอยู่บนอินเทอร์เน็ต โดยที่ไม่ต้องปรับแต่งข้อมูลอะไรเลย
ขอบคุณครับท่าน