นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน
อ่าน: 3085
ความเห็น: 0

การปรับตั้งค่า virtual host บน apache

httpd-vhosts.conf,วิธีการ config httpd-vhosts.conf,วิธีการ config virtual host

 

 

 

 

 

 

กราบสวัสดีลุงป้าน้าอาพี่น้องบุคลากรของมหาวิทยาลัยสงขลานครินทร์ทุกท่าน รวมไปถึงมิตรรักแฟนเพลงด้วย..ช่วงนี้ใกล้ออกพรรษาแล้วซองเยอะเป็นพิเศษเล่นเอา
พนักงานเงินรายได้ตาดำๆกระเป๋าแบนได้เลยทีเดียว แต่ช่างมันบุญใครทำคนนั้นได้ !!!!!

     เข้าเรื่องเลยนะครับในบางครั้งการบริหารจัดการเว็บไซต์หน่วยงานภายใน
มันก็มีเรื่องเข้ามาให้ต้องปรับนู่นปรับนี่กันพอสมควร ซึ่งจะส่งผลกับผู้ดูแล
เว็บซิร์ฟเวอร์พอสมควรเลยล่ะ โดยเฉพาะกับมือใหม่ที่ยังไม่เก๋าเกมส์ โดยผม
ก็เป็นหนึ่งในนั้นอยู่เหมือนกัน ซึ่งตอนนี้สามารถแก้ไขปัญหาได้แล้ว

ในบันทึกบทนี้ผมจะมาอธิบายการ config ค่า virtual host ใน Apache
ซึ่งเราจะ config ค่า virtual host กันก็ต่อเมื่อเรามีโดเมน หรือ เว็บไซต์
หลายตัวในเครื่องเดียวกัน ip เดียวกันหรือบางครั้ง ip ต่างกัน ซึ่งตรงนี้เราสามารถใช้วิธีการ config virtualhost เพื่อให้สามารถแก้ไขปัญหาดังกล่าวได้ ซึ่งผมจะยกตัวอย่าง
ปัญหาที่เกิดขึ้นกับที่ทำงานละกันนะครับเพื่อให้ง่ายต่อการเข้าใจ เรื่องมันมี
อยู่ว่ามีเว็บไซต์ภายในของหน่วยงานซึ่งก็คือเว็บ
www.conference-libarts.psu.ac.th นั่นเองมันเก็บไว้คนละที่ ซึ่งที่แรก
เก็บไว้ที่ศูนย์คอม อีกที่เก็บไว้ที่คณะ ดังนั้นเจ้าของเว็บไซต์จึงมีความคิด
ที่จะให้ผู้ที่เปิดเว็บ conference ถูกส่งข้อมูลมายังเว็บเซิร์ฟเวอร์ของที่คณะ
บางท่านสงสัยทำไมไม่ปิดเว็บที่อยู่ที่ศูนย์คอมไปเลยหล่ะ นั่นก็เพราะว่า
url เก่ายังคงมีคนใช้งานอยู่ จึงต้องทำการ config virtualhost โดย os ของเซิร์ฟเวอร์เป็น windows (คาดว่าอาจมีการเปลี่ยนแปลงในอนาคต) เราจึงเข้าไปแก้ไขไฟล์ใน folder ดังนี้ 

 

เริ่มภาระกิจ

c:/program Files/appserv/apache/conf/extra/httpd-vhosts.conf โดยในความที่แก้ก็มีดังต่อไปนี้


NameVirtualHost *:80   //หาก server เรามีเพียงแค่ ip เดียวก็ใส่เครื่องหมาย *
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

<VirtualHost *:80>  // ip ของ root directory ถ้าในเครื่องเรามีมากกว่า 1 ip ค่อยใส่ ip แยกตาม เช่น หากเรามี network card 2 ใบและอยากให้ใบหนึ่งใช้งานเว็บใดเว็บหนึ่งโดยเฉพาะเจาะจง ตอนนั้นค่อยใส่ค่า ip
    ServerAdmin athit.a@psu.ac.th   // ชื่อผู้ติดต่อใส่หรือไม่ใส่ก็ได้
    DocumentRoot "C:/AppServ/www"  // root directory จำเป็นต้องมีเพื่อให้ apache สามารถใส่ค่าไปได้ถูก
    ServerName localhost  //ชื่อเซิร์ฟเวอร์หลัก
    ServerAlias http://sv.libarts.psu.ac.th/   //ชื่อเซิร์ฟเวอร์แฝง(ชื่อสำรองนั่นแหละ)
    #ErrorLog  "C:/AppServ/Apache2.2/logs/root.error.log"   //บรรทัดนี้เป็นการเก็บ log file การ error ของ reuest ต่างๆที่มายัง เว็บเซิร์ฟเวอร์ โดยสามารถระบุ path ที่จะเก็บได้ด้วย ซึ่งผมใส่เครื่องหมาย # ไว้เพราะว่าผมแก้ config httpd.conf ไฟล์เพื่อเก็บค่า log แบบรวมไว้แล้ว
    #CustomLog "C:/AppServ/Apache2.2/logs/root.access.log" common  //อันนี้ก็เหมือนข้างบนเพียงแต่เก็บค่า request ที่เข้ามาจากฝั่ง client นั่นเอง
</VirtualHost>  //ปิด tag


<VirtualHost *:80>  //ไม่ต้องระบุ ip เหมือนเดิม
    ServerAdmin suchada.k@psu.ac.th ชื่อผู้ดูแล
    DocumentRoot "C:/AppServ/www/conference5"  //ชื่อ directory ที่เก็บไฟล์เว็บไซต์
    ServerName www.libarts-conference.psu.ac.th  //ชื่อเว็บเซิร์ฟเวอร์หลัก ซึ่งตรงนี้เราต้องให้ทีมเน็ตเวิร์ก fw ค่า url นี้ให้มาที่ ip ของ server ของคณะในที่นี้คือ 192.168.74.xx
    ServerAlias http://sv.libarts.psu.ac.th/conference5  //ชื่อสำรองของเว็บไซต์ของเราเพื่อให้เราสามารถเข้าถึงได้จากชื่อสำรองด้วย
</VirtualHost>  //ปิด tag

//อันข้างล่างนี้เป็นเว็บไซต์อื่นภายในเครื่องเดียวกัน ซึ่งสามารถอยู่ด้วยกันได้ตามปกติ
<VirtualHost *:80>   // หากไม่มี ip ที่เราเฉพาะเจาะจงจะกำหนดค่าก็ไม่ต้องใส่ครับ
DocumentRoot "C:/AppServ/www/libarts-it"  // directory ของเว็บ
ServerName sv.libarts.psu.ac.th/libarts-it       //ชื่อหลักของเว็บไซต์
ServerAlias http://sv.libarts.psu.ac.th/libarts-it  // ชื่อรองหรือชื่อแฝงของเว็บไซต์
</VirtualHost>  //ปิด tag

จากนั้นทำการแก้ไขไฟล์ httpd.conf ประมาณบรรทัดที่ 565

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf   //ให้เอาเครื่องหมาย # ด้านหน้าบรรทัดนี้ออก

เพื่อให้การทำ virtual ในไฟล์ httpd-vhosts.conf ทำงาน

จากนั้นต้อง restart apache เพื่อให้มันเริ่มทำงานใหม่อีกครั้ง

ภาระกิจเสร็จสิ้น

สรุปคือภายในเครื่องยังมีเว็บอื่นๆอีกเยอะแยะ ซึ่งไม่ได้ config ค่า httpd-vhosts.confซึ่งการทำงานก็ยังคงเป็นปกติดี ฉะนั้นจึงสามารถสรุปได้ว่า หากเรา config ค่าแค่เพียงบางเว็บไซต์ที่เราต้องใช้ เว็บไซต์อื่นก็ยังสามารถทำงานได้ตามปกติ

ปัญหาที่เจอในครั้งนี้คือ

1.เมื่อเรา fix ค่า ip ที่

<VirtualHost 192.168.74.xx:80>
    ServerAdmin suchada.k@psu.ac.th
    DocumentRoot "C:/AppServ/www/conference5"
    ServerName www.libarts-conference.psu.ac.th
    ServerAlias http://sv.libarts.psu.ac.th/conference5
</VirtualHost>

โดยไม่ได้ fix ค่าที่ root directory จะทำให้เวลาเราเปิด localhost มันจะ redirect
ไปที่หน้า www.libarts-conference.psu.ac.th ทันทีและเว็บย่อยๆภายในเครื่องเรา
ก็ไม่สามารถทำงานได้ ดังนั้นตรงนี้จึงแก้ปัญหาด้วยการใช้เครื่องหมาย * เพื่อไม่เป็นการเจาะจง ip

2. ต้องมี root directory เสมอ เพื่อให้สามารถเข้าถึง เว็บไซต์ย่อยๆที่อยู่ใน sub directory ได้

<VirtualHost *:80>
    ServerAdmin athit.a@psu.ac.th
    DocumentRoot "C:/AppServ/www"
    ServerName localhost
    ServerAlias http://sv.libarts.psu.ac.th/
    #ErrorLog  "C:/AppServ/Apache2.2/logs/root.error.log"
    #CustomLog "C:/AppServ/Apache2.2/logs/root.access.log" common
</VirtualHost>

 

อ้างอิง

1.ได้ปรึกษา พี่สัมฤทธิ์ และพี่เต๋าศูนย์คอมเพื่อทำ virtual host

2.http://foundationphp.com/tutorials/apache22_vhosts.php

3.http://www.thegeekstuff.com/2011/07/apache-virtual-host/

หมวดหมู่บันทึก: พัฒนางานประจำ
คำสำคัญ (keywords): วิธีการ config httpd-vhosts.conf
สัญญาอนุญาต: ไม่สงวนสิทธิ์ใดๆ Public_domain
สร้าง: 26 ตุลาคม 2555 13:47 แก้ไข: 26 ตุลาคม 2555 15:08 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 Our Shangri-La.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

ไม่มีความเห็น

ร่วมแสดงความเห็นในหน้านี้

ชื่อ:
อีเมล:
IP แอดเดรส: 18.210.28.227
ข้อความ:  
เรียกเครื่องมือจัดการข้อความ
   
ยกเลิก หรือ