- 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 ประมาณนี้
#ServerAlias juuier.xxx *.juuier.com<VirtualHost *:80>ServerName www.juuier.xxx
#ServerAlias juu.xxx *.juu.com
Options -IndexesServerAdmin juuier@gmail.comDocumentRoot /media/DATA/sites/juuier/ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,# alert, emergLogLevel warn
CustomLog /var/log/apache2/access.log combinedServerSignature 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
- http://juuier.blogspot.com/2010/04/create-web-site-on-windows-7-with-iis7.html
- http://juuier.blogspot.com/2009/05/create-web-site-to-server-2003.html
- http://juuier.blogspot.com/2010/07/set-alias-site-or-sub-site-of-apache2.html
- http://juuier.blogspot.com/2010/06/set-alias-site-or-sub-site-of-apache2.html
Refer
No comments:
Post a Comment