วันพฤหัสบดีที่ 19 พฤศจิกายน พ.ศ. 2552

การทำ virtual host for joomla

ในการจำลองเครื่องให้เป็น 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 แล้วค้นหาบรรทัด



view sourceprint?1.#

2.# Use name-based virtual hosting.

3.#

4.NameVirtualHost *:80

ตรงบรรทัด NameVirtualHost *:80 หากไม่เป็นแบบนี้ให้แก้เป็น



view sourceprint?1.NameVirtualHost *:80

จากนั้นคัดลอกข้อความด้านล่างนี้ไปวางไว้ที่ด้านล่างของไฟล์



view sourceprint?01.

02.

DocumentRoot c:/xampp/htdocs

03.

ServerName localhost

04.



05.



06.

Options Indexes FollowSymLinks Includes ExecCGI

07.

AllowOverride All

08.

Order Deny,Allow

09.

Allow from all

10.



11.



12.


คำอธิบาย

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 เท่านั้น เช่น



view sourceprint?01.

02.

DocumentRoot f:/xirbit

03.

ServerName xirbit

04.



05.



06.

Options Indexes FollowSymLinks Includes ExecCGI

07.

AllowOverride All

08.

Order Deny,Allow

09.

Allow from all

10.



11.



12.


จากตัวอย่างด้านบนนี้ ให้เราเก็บข้อมูลของเว็บไว้ที่ไดรฟ์ f:\xirbit เวลาจะดูเว็บให้พิมพ์ http://xirbit ที่เบราเซอร์ เราจะทำเพิ่มสักกี่เว็บก็ให้ทำในลักษณะนี้ตามที่ต้องการ เมื่อแก้ไขเสร็จแล้วให้บันทึกไฟล์



แก้ไขไฟล์ hosts

เปิดไฟล์ C:\WINDOWS\system32\drivers\etc\hosts ด้วย Text Editor



view sourceprint?1.127.0.0.1 localhost

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