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 และส่ง
ตรงนี้เค้าเรียนว่า 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: Apache, IP Base Vhost, Name Base Vhost, PHP, Vhost
July 22nd, 2008 at 2:11 am
[...] ต่อตอน 2 เรื่อง “Apache2.0 + Name Base Vhost“ [...]
August 22nd, 2008 at 2:28 pm
คล้ายๆ ใน ข้อสอบ เลย อิอิ