Saturday, December 25, 2010

VirtualHost ง่ายๆ สไตล์ Windows ด้วย Apache

VirtualHost ง่ายๆ สไตล์ Windows ด้วย Apache

     การติดตั้ง VirtualHost นี้อยู่บนพื้นฐานการติดตั้งบน WindowsXP ส่วนตัว Windows อื่นๆ ผู้อ่านต้องศึกษาเพิ่มเติมเอง และสำหรับตระกูล Linux ขอติดไว้ก่อนเพราะตอนนี้เครื่องผมยังไม่ได้ลง Linux และไม่ได้เล่นมาหลายเดือนแล้ว และอยู่บนพื้นฐานการติดตั้งเพื่อใช้งานในเครื่องเดียว (เพื่อเป็นแนวทางในการทำ VirtualHost) และจะมีหัวข้อ Advanch,FreeHost ซึ่งจะเป็นการทำในการใช้งานจริงซึ่งท่านจะต้องมีความรู้หลายอย่างเพิ่มเติม เช่น DNS,Apache,NameBaseVirtualHost) อีกอย่างอยู่บนพื่นฐานของ AppServ ครับ ท่านต้องติดตั้ง AppServ เรียบร้อยเสียก่อนครับ

สิ่งที่ต้องมี :
  • คอมพิวเตอร์
  • WindowsXP *
  • AppServ
  • Card Lan *
  • ความรู้เรื่อง TCP/IP *
* Windows ที่ไม่มีปัญหาคือ WindowsXP ส่วนเวอร์ชั่นอื่นๆ ต้องศึกษาข้อมูลเพิ่มเติมว่าต้อง Set อะไรเพิ่ม หรือจะเจอปัญหาอะไร เช่น XP,2000 อาจจะต้อง Config apache เพิ่ม หรือแก้ไขบางอย่าง
* Card Lan ไม่รู้เกี่ยวหรือป่าว เพราะเครื่องผมมี Cardlan ทุกเครื่อง และ สำหรับ Win XP,2000 อาจจะเจอปัญหาว่า มี Card Lan แต่ไม่ได้ Plug สายแลน ระบบ หรือ service TCP/IP จะไม่ทำงาน (อันนี้เป็น ปัญหาหรือ Bugs ของ windows ให้ศึกษาหรือหาทางแก้เอง) และเคยเห็นกระทู้ที่ว่า ไม่มี CardLan ไม่สามารถติดตั้ง Apache ได้ เพราะ Apache ทำงานบน TCP/IP Port 80
* ความรู้เรื่อง TCP/IP ขี้นอยู่กับว่าท่านจะนำไปทำในระดับไหน ยิ่งเพิ่มระดับยิ่งต้องมีความรู้เพิ่มเติมดังต่อไปนี้
ระดับผู้สนใจ
  • พื้นฐาน (ผู้ที่ติดตั้ง CMS ได้แล้วแต่ต้องการทำ หลายไซต์)
  • Advance (ใช้งานในระบบ LAN)
  • FreeHost (ใช้งานเป็น FreeHost เล่นๆ ได้เลย)
เริ่มกันเลย
1. เปิด Notepad แล้วพิมพ์ ดังนี้
โค้ด:

#ชื่อไซต์อะไรก็ได้ในที่นี้สมมุติว่าชื่อไซต์ soda1.com กะ soda2.com
#ชื่อไซต์ต้องไม่มีอยู่จริงเพราะถ้ามีอยู่จริง ท่านจะไม่สามารถเข้าไปในไซต์จริงได้
#เพราะว่ามันจะวนกลับมาหาเครื่องท่าน เช่นถ้าท่านตั้งชื่อว่า
http://www.yahoo.com/ เวลาที่ท่าน
#ต้องการเข้า net
http://www.yahoo.com/ มันจะวิ่งกลับมาที่เครื่องของท่านนะเอง แทนที่จะไปไซต์
#Yahoo จริง
# สามารถเพิ่มได้ไม่จำกัดขึ้นอยู่กับว่าท่านจะทำ VirtualHost กี่ไซต์
127.0.0.1       localhost
127.0.0.1       soda1.com
127.0.0.1       soda2.com
เสร็จแล้ว Save เป็นชื่อไฟล์ HOSTS ไว้ใน C:\WINDOWS\system32\drivers\etc ครับ ระวัง Notepad จะเติม HOSTS.TXT ให้โดยอัตโนมัติ ให้ rename เป็น HOSTS เฉยๆ

2.ทดสอบโดย ping
http://www.soda1.com/ และ http://www.soda2.com/ จะต้องได้ผลดังนี้ครับ
โค้ด:

 C:\>ping www.soda1.com
Pinging www.soda1.com [127.0.0.1] with 32 bytes
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms


C:\>ping www.soda2.com

Pinging www.soda2.com [127.0.0.1] with 32 bytes
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

ถ้าไม่ได้ ให้ตรวจสอบให้ดีว่า มี ไฟล์ HOST อยู่หรือป่าว

3.แก้ไข ไฟล์ httpd.conf (โดยไปที่ Start -> Programs -> AppServ -> Apache Configure Server -> Edit the Apache httpd.conf Configuration File)
ให้เพิ่ม Code นี้เข้าไป ที่ท้ายสุดของไฟล์
โค้ด:

 NameVirtualHost *

  <VirtualHost *>
    ServerName localhost
    DocumentRoot "C:\AppServ\www"
</VirtualHost>

<VirtualHost *>
    ServerName soda1.com
    DocumentRoot "C:\AppServ\www\soda1"
</VirtualHost>

<VirtualHost *>
    ServerName soda2com
    DocumentRoot "C:\AppServ\www\soda2"
</VirtualHost>

Save ไฟล์
*ตรง ServerName นั้นให้สัมพันธ์กับการตั้งชื่อในไฟล์ HOSTS ส่วน DocumentRoot นั้นก็แล้วแต่ท่านว่า Site ไหน เก็บใน Folder ไหน ให้จำไว้ให้ดี เพราะจะใช้ในข้อต่อไป

4.ไปที่ Folder C:\AppServ\www สร้าง folder ขี้นมาให้สัมพันธ์กันกับข้างต้น
สร้างโฟล์เดอร์ soda1 ใน C:\AppServ\www
สร้างโฟล์เดอร์ soda2 ใน C:\AppServ\www

5.กลับ ไปที่ AppServ ทดสอบ Apache โดยไปที่ Start -> Programs -> AppServ -> Apache Configure Server -> Test the Apache httpd.conf Configuration File )
จะต้องได้ผลดังนี้( ไม่มี Error ) Syntax OK
โค้ด:

c:/appserv/apache/conf/httpd.conf: Syntax OK
Note the errors or messages above, and press the <ESC> key to exit. 18...
6.ทดสอบ Apache อีกครั้ง
ใช้ notepad สร้าง html เช่น
โค้ด:

<html> My Name's SODA1 </html>  โดยทำการบันทึกเก็บไว้ที่  "C:\AppServ\www\soda1\index.html"
และ
<html> My Name's SODA2 </html>  โดยทำการบันทึกเก็บไว้ที่  "C:\AppServ\www\soda2\index.html"

7. ทดสอบโดย
เปิด IE พิมพ์ url
www.soda1.com/ จะต้องได้ My Name's SODA1
   และ พิมพ์ url
www.soda2.com/ จะต้องได้ My Name's SODA2
เสร็จ แล้วครับ เห็นไหมครับ ง่ายนิดเดียว ความจริงอธิบายยาวไปแค่นั้นเองครับ เผื่อคนที่ไม่ค่อยมีความรู้เรื่อง DNS,VirtualHost และอื่นๆ
ถ้าจะสรุปจริงๆ คือ
     1.แก้ไขไฟล์ HOSTS
     2.แก้ไขไฟล์ httpd.conf
     3.สร้าง Folder ให้ตรงกันเสร็จแล้วครับ VirtualHost
     4.และการทำ Nuke ก็แค่ Dup Folder Nuke ทั้งตัว html และ ตัวฐานข้อมูลไป แต่ละไซต์และแก้ config ให้ตรงกันเท่านั้นเอง

** หลังจากแก้ไข httpd.conf แล้วอย่าลืม restart apache ด้วยครับ
ไปที่ Start -> Programs -> AppServ -> Apache Control Server -> Restart
                                                 

0 comments:

Post a Comment

 
Design by GURU