การทำ virtual host

ในการจำลองเครื่องให้เป็น 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 ก็สามารถทดสอบข้อมูลต่าง ๆ ได้เหมือนกับอยู่บนอินเทอร์เน็ต โดยที่ไม่ต้องปรับแต่งข้อมูลอะไรเลย

One thought on “การทำ virtual host

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>