Monday, April 4, 2011

Virtual host of apache (Ubuntu 10.10)

  • virtual host คือ โฮมเสมือน ประมาณว่า server เครื่องหนึ่ง สามารถมีได้หลาย site ซึ่งทุกไซต์จะชี้มาไอพีเดียวกันหมด (ในกรณีมี NIC ตัวเดียว)
  • ตัว virtual host จะเป็นตัวกำหนดเองว่า domain name นี้จะไปเรียกที่พาธอะไรซึ่งจะขึ้นอยู่กับค่าที่เราคอนฟิก virtual host อีกที
  • ก่อนทำ virtual host ในที่นี้ได้ทำการติดตั้ง apache2 เรียบร้อยแล้ว
  • ถ้ายังก็ติดตั้งด้วยคำสั่งนี้เลย
sudo apt-get install apache2
  • ตัวอย่างนี้เราจะสร้าง virtual host โดยใช้ชื่อ www.juuier.xxx

Enable virtual host
  • ทำตัวเองให้กลายเป็น root ก่อนถึงจะจัดการทุกอย่างได้ง่าย
sudo -i
  • เมื่อเราเป็น root ให้เราสร้างไฟล์ชื่อ www.juuier.xxx และวางไว้ภายใต้ /etc/apache2/sites-available
nano /etc/apache2/sites-available/www.juuier.xxx
  • ในไฟล์จะมี content ประมาณนี้
<VirtualHost *:80>
ServerName www.juuier.xxx 
          #ServerAlias juuier.xxx *.juuier.com
          #ServerAlias juu.xxx *.juu.com
ServerAdmin juuier@gmail.com
DocumentRoot /media/DATA/sites/juuier/
ErrorLog /var/log/apache2/error.log
         Options -Indexes
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature Off
</VirtualHost>
  • ทำการ save ไฟล์ให้เรียบร้อย
  • และตามด้วยคสั่งนี้ เพื่อ เปิดใช้งาน virtual host ใหม่เรา (คำสั่งนี้จะทำให้เกิดไฟล์ link ใน /etc/apache2/sites-enabled)
a2ensite www.juuier.xxx
  • และสุดท้ายก็ reload config ของ apache เราซะหน่อย
/etc/init.d/apache2 reload

การทดสอบอย่างง่าย
  • ใน Ubuntu เราทดสอบได้โดยแก้ไขไฟล์นี้ /etc/hosts
127.0.1.1 www.juuier.xxx # add by juuier
  • ทำการ save ให้เรียบร้อย จากนั้นเปิด Firefox ขึ้นมาพิมพ์
  • http://www.juuier.xxx ก็จะเข้าไปเปิดไฟล์ที่พาธ /media/DATA/sites/juuier/ ที่นี้เลย
  • ส่วนใน windows แก้ไขไฟล์ที่ C:\Windows\System32\drivers\etc\hosts

Disable virtual host
  • virtual host ใหนที่เปิดใช้งานอยู่มันจะมี link อยู่ที่ /etc/apache2/sites-enabled/
  • สมมุติในที่นี้เราจะปิด virtual host www.juuier.xxx เราเพียงแค่ใช้คำสั่งนี้
a2dissite www.juuier.xxx
  • คำสั่งนี้จะมีผลทำให้ไฟล์ link ของ www.juuier.xxx ซึ่งอยู่ใน /etc/apache2/sites-enabled/ หายไปด้วย
  • ผู้เขียนไม่แน่ใจว่า ถ้าเราไม่ใช้คำสั่ง a2dissite แต่เราไปลบไฟล์ link โดยตรงจะเป็นการ disable virtual host ได้เลยหรือเปล่า

เพิ่มเติม
  • *:80 คือ listen ทุก IP ที่พอร์ต 80 หมายความประมาณว่า ในกรณีเรามี NIC 2 ตัว ต้องการทำ web server แค่ NIC ตัวเดียวเราก็ระบุหมายเลขไอพีของ NIC นั้นแทน * ได้เลยมันก็จะได้ประมาณ
202.56.xxx.xxx:80
  • เกี่ยวกับ ServerAlias คงประมาณเว็บนี้พาธนี้ มีหลาย Domain Name เราก็นำ domain name อื่นๆ ไปวางเป็น ServerAlias ได้เลย (มั้ง)


ปัญหาที่พบ
  • ตอนแรกใช้แค่
<VirtualHost *>
  • virtual host เราไม่ทำงานหว่า แถมตอน reload config มันยัง warning เราด้วยว่า
[Mon Apr 04 13:57:31 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
...done.
  • พอปรับเป็น
<VirtualHost *:80>
  • บันทึกและ sudo /etc/init.d/apache2 reload อีกรอบผลคือ
Reloading web server config apache2
...done.
  • และ virtual host เราก็ใช้งานได้

Related

Refer

No comments:

Post a Comment

Popular Posts