วันนี้ขอเสนอเรื่อง
Virtual Host นะครับ !!!!
เห็นชื่อแล้วอย่าเพิ่งเบื่อนาาา มันเป็นความรู้ที่ผมได้จากการฝึกงานนี่แหละ
เท้าความมมมมม......
ปกติแล้วเว็บเซิร์ฟเวอร์ ที่เรามีกันอยู่นี่อ่ะ มันก็จะให้บริการ 1 โดเมนเนม ( ฟังดูทะแม่งๆ ๆ ไงไม่รู้ ) เอาแบบนี้ดีกว่า ปกติแล้วเว็บเซิร์ฟเวอร์ 1 เครื่องอ่ะ มันก้อจะให้บริการ 1 เว็บไซต์ คือ พอมีการเรียกดูเว็บไซต์ หนึ่ง แล้วก้อจะมีคำร้องขอวิ่งมาที่เว็บเซิร์ฟเวอร์ที่ดูแลเว็ไซต์นั้นๆ ๆอยู่ แล้วเมื่อเว็บเซิร์ฟเวอร์เครื่องดังกล่าวได้รับคำร้องขอก็จะ ไปดึงข้อมูลในตำแหน่งไดเร็คทอรี ที่เก็บข้อมูลอยู่โดยอัตโนมัติ ซึ่งมีการระบุไว้ก่อนด้วย ( DocumentRoot นั่นเอง )
อ่ะ งงมาพอได้ที่แล้วช่ายมะ คราวนี้ก้อมาพูดต่อ โดยปกติแล้วการกำหนดค่า DocumentRoot นั้น จะทำให้
Apache ( เป็นตัวให้บริการเว็บเซิร์ฟเวอร์ จะเรียกว่าเป็นโปรแกรมตัวไม่รู้จะถูกรึป่าว คือติดตั้งโปรแกรมนี้แล้วจะให้บริการเป็นเว็บเซิร์ฟเวอร์ได้อ่ะ ) สามารถไปหาตำแหน่งของข้อมูลที่จะเรียกได้ถูกต้อง ซึ่งจริง แล้วก้อมีตัวอื่นอีก แต่ผมและ คิดว่าหลายคนใช้ Apache ในการให้บริการ
มาถึงตรงนี้แล้วยังไม่ได้บอกเลยนี่หว่าว่ามันคืออะไร -> อย่างที่บอกว่าปกติแล้วเครื่องนึงจะให้บริการ 1 เว็บไซต์ แต่ Virtual Host นี่อ่ะจะทำให้เครื่องนั้น ๆ สามารถให้บริการเก็บข้อมูลของเว็บไซต์ได้มากกว่า 1 เว็บไซต์นั่นเอง
ฟังดูเหมือนไม่ได้เกิดประโยชน์อะไรมากช่ายมะ.... ผิด ๆ ๆๆ มันก็มีประโยชน์ของมันอยู่นะเราไม่ต้องเปลืองทรัพยากรคอมพิวเตอร์ในการให้บริการเว็บไซต์ มากกว่า 1 เว็บไซต์ เพราะเราสามารถเก็บข้อมูลของแต่ละเว็บไซต์ได้ในเครื่องเดียวกันเรย ไม่ต้องติดตั้งระบบปฏิบัติการ ให้เครื่องอื่น ไม่ต้องปรับแต่งค่าของเว็บเซิร์ฟเวอร์หลาย ๆ เครื่อง ....และอื่นๆ ( ทั้งข้อดีและข้อเสีย )
นั่นคือภาพรวมนะ
ต่อมาก้อวิธีการทำละ
โดยปกติแล้ว เราต้องมีการ ปรับแต่งค่า ของเว็บเซิร์ฟเวอร์ซึ่งจะแก้ไขค่าในไฟล์ httpd.conf ( บางเวอร์ชั่นหรือระบบปฏิบัติการจะเป็น apache.conf ) จากการปรับแต่งค่าปกติแล้ว ก้อเพิ่มบรรทัดนี้เข้าไปเพื่อบอกให้รู้ว่า เรามีการใช้ Virtual Host นะ
Include path/to/file/vhosts.conf
กอ้แก้ไขค่าของตำแหน่งเอาเองนะครับ แล้วเราก้อมาพูดถึงไฟล์ vhosts.conf กันบ้าง
มันเป็นไฟล์ที่เก็บค่า configuration ต่างๆในส่วนของ virtual host ไว้มีลักษณะดังนี้
NameVirtualHost *
<VirtualHost *>
DocumentRoot path/to/documentroot/of/this/website
ServerName www.xxx.yyy
ServerAlias aliasname1 aliasname2
#JkMount /*.jsp ajp13
#JkMount /servlet/* ajp13
Setenv VLOG /path/to/log/directory
ErrorLog /path/to/error/log/file
RewriteEngine On
RewriteOptions inherit
<Directory path/to/documentroot/of/this/website>
Options +FollowSymLinks
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
</VirtualHost>
อะไรประมาณนี้อ่ะครับ ส่วนบรรทัดที่เป็น # อยู่ข้างหน้าอ่ะมันเป็นการปรับแต่งค่าเพิ่มเติมไม่ต้องสนใจก่อนก็ได้เพราะยังไม่จำเป็น อันนี้สำหรับ 1 เว็บไซต์ ข้อมูลของเว็บไซต์ที่ 2 3 และอื่นๆ ก้อทำในลักษณะเดียวกันต่อๆ กันมา แต่ NameVirtualHost * อ่ะใส่ไว้ข้างบนสุดที่เดียวนะครับ
อ้อลืมไป virtual host นี่อ่ะนะมี 2 แบบคือ
1 IP BASE
2 Name BASE
ข้างบนเนี่ยเป็น Name BASE คือมี ip เดียวแต่ให้บริการมากกว่า 1 ชื่อเว็บไซต์นะครับ
ส่วน IP BASE เนี่ย คือเรากำหนดให้ แต่ละชื่อเว็บไซต์มี ไอพีของตัวเองไม่ซ้ำกัน ก็แล้วแต่ความเหมาะสมในการใช้งานครับ
เป็นไงครับ งงงง กันเป็นไก่ตาแตกเรยดิ บอกแล้วอย่าให้เขียนอ่ะไรที่มีสาระ ไม่ค่อยรู้เรื่องหรอก
หมายเหตุ : ข้อมูลข้างต้นได้มาจากประสบการณ์ในการฝึกงาน และความเข้าใจของผู้เขียนหลังจากได้ลองค้นคว้าจากแหล่งข้อมูลต่างๆ หากมีข้อผิดพลาดประการใด .... ก้อบอกกันดี ๆ นะ
เดี๋ยว คราวหน้าจะพัฒนา ในส่วนต่อ ไป