Apache 2.0 - Name Base VHost


พอไปอ่านกระทู้ใน thaibsd.com เลยกะต่อยอดเล็กน้อย หลังจากที่ติดตั้ง “Apache2.0 + PHP5 on FreeBSD” ก็ถึงครามาทำ Name Base Vhost ในรูปแบบของผม พูดถึงเรื่อง Vhosts มันทำได้หลายแบบ แต่ที่เราทำกันบ่อยๆก็ Name Base Host และ IP Base VHost

อะไรคือ “Name Base Vhost” ขอกล่าวถึง HTTP Protocol ละกันครับ เวลาที่ IE, Firefox ในเครื่องเ้้ราซึ่งเค้าเรียกรวมกันว่า Browser เข้าไปเว็บๆหนึ่ง เช่น เข้าไปที่ http://howtoconfig.com/index.php Browser ของเราก็จะสร้าง tcp connect ไปยัง IP ปลายทาง port 80 และส่ง

GET /index.php HTTP/1.0
HOST: howtoconfig.com

ตรงนี้เค้าเรียนว่า Header เวลา Server ได้รับ ก็จะส่ง กลับมาว่า

HTTP/1.1 301 Moved Permanently
Date: Mon, 21 Jul 2008 18:39:42 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.1.6
X-Pingback: http://www.howtoconfig.com/xmlrpc.php
Location: http://www.howtoconfig.com/
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

ส่วนนี้ก็ Header ที่ Apache ตอบกลับมา ถ้ามว่ามัน เกียวกัน ตรงไหน ก็สังเกตุดี ที่ Browser ส่ง Request ไป จะมี HOST: howtoconfig.com ไปด้วย เวลา apache ได้รับ Request ก็จะไปตรวจสอบที่ httpd.conf ว่ามีการทำ Vhost ไว้หรือไม่ ถ้ามีและชื่อ ตรงก็จะเปลี่ยน DocumetRoot ไปยัง ที่กำหนดไว้และ เอา Content ส่งไปยัง Broswer ต่อไป

อะไรคือ “IP Base VHost” มันก็เหมือนกะ Name Base Vhost แหละครับ แต่ Apache จะสนใจแค่ IP ที่ Client วิ่งเข้ามา ถ้าตรงกะ Vhost ที่ Config ไว้ระบบก็จะเปลีั่ยน DocumetRoot ไปยังที่กำหนด

อ่านมามาก มาสู่การทำงาน จริงๆ ผมได้ติดตั้ง Apache2.0 + PHP5 จาก Ports เพราะเวลาลงอะไรต่อๆไป จะได้ง่าย และสะดวกเวลา Upgrade PHP ในเมื่อ FreeBSD ออกแบบระบบ Ports มาให้ดีแล้ว เราก็ต้องใช้มัน เวลาผมลง จะ ไม่ยุ่งเกี่ยวกะไฟล์ httpd.conf เลยแต่จะสร้างไฟล์ /usr/local/etc/apache2/Includes/0default.conf แทนเพราะ apache2.0 ใน FreeBSD จะทำการ Include Includes/*.conf มาเอง ทำให้เราแก้ไขแค่ใน Includes/*.conf ก็พอ

แนะนำให้ไปอ่าน “Apache2.0 + PHP5 on FreeBSD” ก่อนนะครับ

การทำ Name Base Vhost โดย Domain ชื่อ abc.com และเก็บเว็บไว้ที่ /home/vhosts/abc.com เราก็ทำการสร้างไฟล์

vi /usr/local/etc/apache2/Includes/abc.com.conf
ServerName    abc.com
ServerAlias    www.abc.com
DocumentRoot    /home/vhosts/abc.com/httpdocs
CustomLog        /home/vhosts/abc.com/logs/access_log combined
ErrorLog        /home/vhosts/abc.com/logs/error_log
 
AllowOverride All
Options SymLinksIfOwnerMatch
Order allow,deny
Allow from all

ส่วนของ IP Base Vhost ก็เหมือนกันครับแต่เราต้องทำการ สร้าง Aliase IP ก่อน ที่ไฟล์ rc.conf เช่น

vi /etc/rc.conf
defaultrouter="192.168.1.1"
hostname="kumandtong.siambox.com"
ifconfig_rl0="inet 192.168.1.1  netmask 255.255.255.0"
ifconfig_rl0_alias0="inet 192.168.1.2  netmask 255.255.255.255

เราก็สร้างไฟล์ apache

vi /usr/local/etc/apach2/Includes/192.168.1.2.conf
DocumentRoot    /home/vhosts/ip-2/httpdocs
CustomLog        /home/vhosts/ip-2/logs/access_log combined
ErrorLog        /home/vhosts/ip-2/logs/error_log
 
AllowOverride All
Options SymLinksIfOwnerMatch
Order allow,deny
Allow from all

ง่ายปะครับ ไอ้คนที่เคยทำบ่อยๆอย่างผม ก็พูดได้ว่าง่ายๆ แต่คนที่ไม่ค่อยได้ setup นี้สิ ไงก็ลองเอาวิธี setup ของผมไปละกันนะครับ น่าจะช่วยเพื่อนๆได้ :)

Tags: , , , ,


2 Responses to “Apache 2.0 - Name Base VHost”

  1. How to Config » Blog Archive » Apache2.0 + PHP5 on FreeBSD Says:

    [...] ต่อตอน 2 เรื่อง “Apache2.0 + Name Base Vhost“ [...]

  2. golfreeze Says:

    คล้ายๆ ใน ข้อสอบ เลย อิอิ

Leave a Reply