Sunday, December 23, 2012

กำหนดค่าเริ่มต้นให้แก่ Tomcat (Server Configuration)

กำหนดค่าเริ่มต้นให้แก่ Tomcat (Server  Configuration)

เมื่อเข้าไปดูที่โฟลเดอร์ tomcat7 จะพบว่ามีโฟลเดอร์ย่อย ดังนี้

โฟลเดอร์ ย่อยต่าง ๆ  สำหรับเก็บไฟล์แต่ละชนิดดังนี้
    • bin  เป็นที่เก็บ binary executable files ต่าง ๆ
    • conf  เป็นที่เก็บไฟล์กำหนดค่าต่าง ๆ (configuration files) ของ Tomcat  เช่นกำหนด port ที่ใช้ในการเชื่อมต่อ  กำหนดโฟลเดอร์ที่เก็บ web application  กำหนด password
    • lib เก็บไฟล์ชนิด class และ jar (Java Archive)
    • log เก็บ log file ที่รวบรวมข้อผิดพลาดและคำเตือนต่าง ๆ ระหว่างใช้งาน server
    • temp ใช้เก็บไฟล์ชั่วคราว (temporary file)
    • webapps  เป็นโฟลเดอร์ที่เก็บ  web application ต่าง ๆ  ไฟล์ hmtl และ jsp จะถูกเก็บอยู่ภายใต้โฟลเดอร์นี้
    • work เป็นโฟลเดอร์ทำหน้าที่คล้ายกระดาษทด ใช้เก็บไฟล์ชั่วคราวต่าง ๆ ขณะที่ server ทำงาน   ไฟล์ชั่วคราวจะถูกลบทิ้งไป เมื่อ server ประมวลผลงานนั้นเสร็จสิ้น
ไฟล์ที่เราจะเข้าไป config หรือกำหนดค่า จะอยู่ภายใต้โฟลเดอร์ conf  มีอยู่ 3 ไฟล์ คือ  server.xml, web.xml และ context.xml

การกำหนดค่าให้ server.xml

 ใช้ text editor อาจจะเป็น notepad หรือ editplus หรือ notepad++  หรือ textPad  เปิดไฟล์ server.xml กรณีที่ต้องการแก้ไข TCP port : เราสามารถ เปลี่ยนตัวเลขพอร์ต ที่ใข้ในการเชื่อมต่อกับ server เป็นเลขอื่น โดยปกติโปรแกรมจะเซตค่าไว้ที่พอร์ต 8080  เราอาจเปลี่ยนเป็น พอร์ต 80 ถ้า web server ของเรามีแค่ tomcat เพียง server เดียว ปกติพอร์ต 80 นี้ใช้กับ Apache web server  หรือ IIS ของไมโครซอฟต์ ซึ่งจะเป็น  web server หลัก
ตัวเลขพอร์ต จะต้องไม่ไปชนกับพอร์ตของอุปกรณ์อื่น ๆ ยึดครองใช้อยู่ เพื่อความปลอดภัย เรามักจะใช้เลขพอร์ตที่มีค่าระหว่าง 1024 ถึง 65535 ซึ่งรับประกันได้ว่าไม่ไปชนกับพอร์ตของอุปกรณ์ใด (ในการติดตั้งครั้งนี้ เราจะยังคงใช้พอร์ต 8080 ตามที่ค่าที่กำหนดไว้ เพราะจะติดตั้ง Apache web server ซึ่งใช้พอร์ต 80 ด้วย จึงไม่ต้องแก้ไขสิ่งใดในไฟล์ server.xml นี้)


กรณีที่ต้องการเปลี่ยน  web application directory:
To do another time

กำหนดค่าให้ web.xml 

กรณีต้องการให้ แสดง รายการของ directory เป็นแบบ list  ถ้าโฟลเดอร์นั้นไม่มี welcome fie (index.html, index.jsp) server จะแสดงชื่อไฟล์ต่าง ๆ ที่มีอยู่ในไดเรกทอรีนั้น  แต่มีคำเตือนเขียนไว้ใน web.xml ว่าการเปิดใช้งานกรณีนี้จะทำให้ server ทำงานช้าลงและสิ้นเปลืองทรัพยากรของระบบ

เข้าไปเปลี่ยนที่ “listings”  เปลี่ยนค่าจาก false เป็น true

กำหนดค่า context.xml

ในระหว่างการศึกษาหรือทดลอง เราอาจต้องเปลี่ยนแปลงค่าใน  Web.xml   เช่น เพิ่มโปรแกรม  class file หรือเพิ่ม servlet เข้าไปในระบบ การทำเช่นนี้แต่ละครั้งจะต้องให้ Tomcat server รับทราบการเปลี่ยนแปลง ทำได้โดย restart server ใหม่ทุกครั้งที่มีการเปลี่ยนแปลง ทำให้ไม่สะดวกในการทำงาน  เราจึงกำหนดให้ Tomcat รับรู้การเปลี่ยนแปลงโดยอัตโนมัติและให้ทำการ reload ตัวมันเอง โดยที่เราไม่ต้องไป restart ใหม่  โดยการแก้ไขคุณสมบัติ reloadable จาก false เป็น true

Start Tocat Server

  1. เปิดใช้งานCMD shell (ใช้ปุ่มวินโดว์ + R  แล้วพิมพ์คำว่า cmd  และกด Enter)  พิมพ์คำสั่งต่อไปนี้
  2.  เปลี่ยนตำแหน่งโฟลเดอร์ให้มาอยู่ที่ root directory ของไดรว์ C โดจใช้คำสั่ง "cd\"
    "C:\>cd  WebProject\Tomcat7\bin"    ไปที่โฟลเดอร์ bin ซึ่งเก็บ executable file ของ Tomcat
    "C:\>WebProject\Tomcat7\bin\startup"   เริ่มต้น start เซิร์ฟเวอร์

    จะมีหน้าต่างชื่อ Tomcat  แสดงให้เห็นว่า server กำลังถูกเปิดใช้งาน  ในหน้าต่างจะมีข้อความแจ้งอยู่หลายข้อความ ที่น่าสนใจคือ จะบอกตำแหน่งที่เก็บ web application directory  บอกพอร์ตที่ใช้ในการเชื่อมต่อกับ server และบอกเวลาที่ใช้ในกา start server

    หมายเหตุ
    ในการ start tomcat  ต้องพิมพ์คำสั่งใน CMD  shell หลายขั้นตอน สามารถนำมาเขียนเป็น  batch file วางไว้ที่หน้า desk top เพื่อสะดวกในการทำงาน  คำสั่งต่าง ๆ ที่พิมพ์ลงใน text editor มีดังนี้

    จากนั้น save เก็บไว้ในชื่อ StartTomcat.bat  วางไว้บน desktop  เมื่อต้องการ start server  ก็เพียง double click ที่ icon ของ StartTomcat

  3. เปิด browser จะเป็น  IE หรือ FireFox หรือ Chrome หรืออะไรอื่นก็ได้ พิมพ์ URL เป็น http://localhost:8080
                จะได้หน้าจอมีลักษณะดับรูป


คำว่า localhost  หมายถึง ชื่อ server ที่ติดตั้งอยู่ในเครื่องคอมพิวเตอร์ของเรา มีค่า IP address คือ 127.0.0.1  และเราใช้ browser ที่มีอยู่ในเครื่องนี้ ติดต่อกับ server  เรียกว่า local loop-back testing  ถ้าเราติดตั้ง tomcat ที่คอมพิวเตอร์เครื่องอื่น ผ่านเครือข่ายอินเตอร์เน็ต ต้องเปลี่ยน IP address  หรือ DNS (Domain Name Server— เช่น www.abc.com) ให้สอดคล้องกับเครื่องคอมพิวเตอร์นั้น ๆ  และต้องใส่เลขพอร์ตที่จะติดต่อด้วย เพราะถ้าไม่ใส่จะถือว่าพอร์ตนั้นเป็นค่า default  คือ พอร์ต 80 รูปแบบการเชื่อมต่อกับ Tomcat serverโดยทั่วไปเขียนได้เป็น http://HostnameOrIPAddress:PortNumber

ปิดการทำงาน Tomcat (Shutdown server)

ทำได้ 2 วิธีดังนี้
    • วิธีที่ 1 ไปที่ Command shell (ใช้ปุ่มวินโดว์ + R  แล้วพิมพ์คำว่า cmd  และกด Enter)  พิมพ์คำสั่งต่อไปนี้
    • C:\.....\ cd \
      C:> cd WebProject\Tomcat7\bin
      C:>WebProject\Tomcat7\bin\shutdown
    • วิธีที่ 2 เปิดหน้าต่าง Tomcat  กดปุ่ม Control + ปุ่ม C   (หรือ กด Control + break) server จะปิดการทำงาน ทันที
ไม่ควรคลิกที่ปุ่มกากบาทที่อยู่มุมขวาบนของหน้าต่าง Tomcat  หรือใช้คำสั่ง “Close” ซึ่งเป็นการ kill process  ทำให้ Tomcat สิ้นสุดการทำงานกลางคัน

สร้างเว็บเพจ HTML เพื่อทดลองใช้กับ Tomcat( Develop and Deploy a Web Application)

เริ่มต้นด้วยการตั้งชื่อ web application ที่เราจะสร้างขึ้น  เพราะเป็นครั้งแรกที่เพิ่งรู้จัก จึงทักทายกันก่อน  จะเรียกชื่อ web application นี้ว่า “greeting”
  • สร้างโฟลเดอร์ greeting อยู่ภายใต้โฟลเดอร์ webapps   เป็น  context root หรือ document base directory ของเว็บแอพพลิเคชันของเรา  จะเก็บไฟล์นามสกุล html, jsp, css, images หรือ scripts ต่าง ๆ ที่ผู้ใช้งานผ่านอินเตอร์เน็ตสามารถเข้าถึงได้
  • สร้างโฟลเดอร์ย่อย ชื่อ WEB-INF  (ชื่อเป็นอักษรตัวใหญ่ทั้งหมด ไม่มีช่องว่าง ตรงกลางนั้นเป็น dash ไม่ใช่ underscore) เป็นโฟลเดอร์ที่เก็บ configuration files ต่าง ๆ เช่น web.xml  ผู้ใช้งานผ่านอินเทอร์เน็ตไม่สามารถมองเห็นโฟลเดอร์นี้
  • สร้างโฟลเดอร์ย่อย ชื่อ classes  อยู่ใต้โฟลเดอร์ WEB-INF อีกที(เป็นอักษรตัวเล็กทั้งหมด และเป็นพหูพจน์)  ใช้เก็บ class file หรือ servlet ที่ใช้กับ เว็บ แอพพลิเคชันนี้  โครงสร้างของโฟลเดอร์จะมีลักษณะดังภาพ
  • เขียน Greeting page  แล้ว save เก็บไว้ภายใต้โฟลเดอร์ greeting  ชื่อ hello.html  ข้อความที่พิมพ์ลงใน text editor มีดังนี้
  • <html>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <head><title> Welcome to my Hompage </title></head>
    <body>
          <h2> Hello, This is my first  Hompage </h2>
          <h2> ทดสอบภาษาไทย </h2>
          <h3> เป็นมนุษย์ สุดประเสริฐ เลิศคุณค่า <br/>
          กว่าบรรดา ฝูงสัตว์ เดรัจฉาน<br/>
          จงฝ่าฟัน พัฒนา วิชาการ<br/>
          อย่าล้างผลาญ ฤาเข่นฆ่า บีฑาใคร<br/>
          ไม่ถือโทษ โกรธแช่งซัด ฮึดฮัดด่า<br/>
          หัดอภัย เหมือนกีฬา อัชฌาศัย<br/>
          ปฎิบัติ ประพฤติกฏ กำหนดใจ<br/>
          พูดจาให้ จ๊ะๆ จ๋า น่าฟังเอย
          </h3>
    </body>
    </html>
  • เปิด browser พิมพ์  http://localhost:8080/greeting/hello.html  จะได้หน้าตาของเว็บเพจ ที่เราเขียนดังนี้

                ต้องระวังในการพิมพ์ URL   ถ้าพิมพ์ http://www.localhost:8080/greeting/hello.html  จะไม่ถูกต้อง ต้องไม่มี www นำหน้า localhost
ถ้าพิมพ์เป็น http://localhost:8080/greeting/  จะแสดงชื่อไฟล์ hello.html ให้เราคลิกอีกครั้ง  ตามที่เรากำหนดค่าไว้ใน web.xml


สร้างเว็บเพจ JSP เพื่อทดลองใช้กับ Tomcat

  • พิมพ์ข้อความต่อไปนี้ โดยใช้ text editor แล้ว save เก็บไว้ในโฟลเดอร์ greeting  ให้ชื่อว่า hello.jsp
<html>
<%@ page contentType="text/html; charset=UTF-8" %>
<head> <title> my First JSP Homepage </title> </head>
<body>
      <h1> Homepage created with JSP </h1>
      <%  out.println("Hello, World");  %>
      <br/>
      <% out.println("สวัสดี ชาวโลก"); %>
</body>
</html>
  • เปิด browser พิมพ์  http://localhost:8080/greeting/hello.jsp  จะได้เห็นเว็บเพจ ที่เราเขียนดังนี้

จะเห็นว่าในไฟล์ hello.jsp จะมี code ของภาษาจาวา แฝงอยู่ใน code ของ Html  โดยจะอยู่ระหว่างเครื่องหมาย <% และ %>  ข้อความที่อยู่ระหว่าง  <% และ %> นี้เรียกว่า scriplet  ตัวอย่างเช่น
<%@ page contentType="text/html; charset=UTF-8" %>   เป็นการบอกว่าเอกสารนี้ encoding ภาษาเป็นรหัส UTF-8
<%  out.println("Hello, World");  %>และ<% out.println("สวัสดี ชาวโลก"); %> เป็นการใช้เมธอด prinln ของ object  “out”  พิมพ์ข้อความ”Hello, World” และ “สวัสดี ชาวโลก” บนเว็บเพจ โดยเซิร์ฟเวอร์จะส่งข้อความนี้ผ่านไปยัง Browser  เพื่อแสดงผลให้เราเห็นบนจอภาพ<

ข้อพึงระวัง

  • Tomcat server นั้นมีคุณสมบัติเป็นcase sensitive  หมายถึงอักษรตัวใหญ่และตัวเล็กจะมองเห็นแตกต่างกัน เช่น "http://localhost:8080/testServle" กับ "http://localhost:8080/TestServlet"  จะมองเห็นแตกต่างกัน เพราะ test กับ Test ถึงแม้จะต่างกันเพียงเป็นตัวอักษรตัวใหญ่และตัวเล็ก server จะมองเห็นไม่เหมือนกัน
  • การกดปุ่ม F5 เป็นการ refresh หน้าจอ บางครั้ง browser นำผลลัพธ์ที่ได้จาก cache มาแสดง ถ้าต้องการให้ browser ดาวน์โหลดข้อมูลจากเว็บไซต์ใหม่จริง ๆ  ให้กดปุ่ม Ctrl + F5
  • ถึงแม้เราจะแก้ไข reloadable=true ใน context.xml แล้วก็ตาม บางครั้งเราควร restart server และควรปิด browser แล้วเปิดใหม่ เพื่อล้าง cache ของบราวเซอร์ด้วย

การติดตั้ง Tomcat 7.0

Hardware ที่ใช้ในการติดตั้ง Tocmat ในที่นี้เป็นคอมพิวเตอร์โน้ตบุค CPU Intel Core i5 – 2520M 2.5 GHz หน่วยความจำ 8 GB ฮาร์ดิสก์ขนาด 500 GB ไม่มีการ์ดจอภายนอก ใช้ชิป Intel Graphic 3000 ระบบปฏิบัติการเป็น windows 7 รุ่น Professional 64 bit service pack 1              
Tomcat หรือ เรียกชื่อเต็มคือ  Apache Tomcat เป็น  HTTP Server ที่มีความสามารถนำภาษาจาวามาใช้งานได้  สามารถใช้เทคโนโลยีของภาษาจาวาที่เรียกว่า Java Servlet  และ Java Server Page (JSP)  Tomcat เป็นโปรแกรม Open-Source  อยู่ภายใต้การดูแลของ Apache Software Foundation  (ซึ่งเป็นผู้สร้าง Apache HTTP Server ที่เป็นที่นิยมใช้กันอย่างแพร่หลาย)  สามารถอ่านรายละเอียดของ Tomcat ได้ที่  http://tomcat.apache.org  โดยเลือกหัวข้อ “ Documentation”  และเลือก “Tomcat 7.0” ขั้นตอนการติดตั้ง Tomcat เรียงลำดับดังนี้

Download  Tomcat

ไปที่ เว็บไซต์  http://tomcat.apache.org   เลือกหัวข้อ  “Download” >> “Tomcat 7.0”>> ”7.0.xx”>>“Binary Distributions”>>“Core”>>“Zip”>> “apache-tomcat-7.0.xx.zip”

จากภาพเป็นการเข้าถึงเว็บไซต์เมื่อวันที่ 2 มกราคม พ.ศ. 2555  Tomcatจะเป็นรุ่น  7.0.23
ดาวน์โหลด apache-tomcat-7.0.xx.zip มาเก็บไว้ที่เครื่อง   แนะนำให้เลือกที่เป็น zip file ไม่เลือกตัวที่เป็น installer เพราะ เราสามารถแตก zip file เก็บไว้ในโฟลเดอร์ใดโฟลเดอร์หนึ่ง เมื่อไม่ต้องการใช้งานหรือไม่ต้องการศึกษาอีกต่อไป ก็สามารถลบทิ้งได้เลยโดยไม่ต้องทำการ  uninstall  ซึ่งต้องไปเกี่ยวข้องกับ registry ของวินโดว์ให้มันวุ่นวายไปเปล่า ๆ

ติดตั้ง Tomcat

สร้างโฟลเดอร์ ชื่อ WebProject  ไว้ที่ไดรว์ใดก็ได้ ( ในที่นี้คือ c:\WebProject) แตกไฟล์ apache-tomcat-7.0.xx.zip ในโฟลเดอร์นี้  ไฟล์ต่าง ๆ ของ Tomcat จะอยู่ภายใต้  “c:\WebProject\apache-tomcat-7.0.23”  เพื่อความง่ายในการพิมพ์และอ้างถึง จึงเปลี่ยนขื่อโฟลเดอร์ให้สั้นลงดังนี้ “c:\WebProject\tomcat7” ใส่เลข 7 หลัง tomcat เพื่อให้รู้ว่าเวอร์ชันที่ใช้อยู่นี้คือรุ่นที่ 7 ในอนาคตเพื่อจะติดตั้งเวอร์ชัน 8 หรือ 9  หรือจะติดตั้งเวอร์ชันย้อนหลังก็สามารถที่จะใส่ไว้ในโฟลเดอร์เดียวกันนี้ ได้

กำหนดสภาพแวดล้อมให้่Tomcat Server

  • จัดการให้ Tomcat รู้จักกับโปรแกรม Java  โดยกำหนดค่า Environment variable ชื่อ JAVA_HOME
    1. ทดสอบว่าในระบบปฏิบัติการวินโดว์ของเรามี ตัวแปรชื่อ JAVA_HOME หรือยัง โดยไปที่ CMD Shell ดังนี้ กดปุ่ม windows (ปุ่มที่มีรูป logo เป้น windows) + ปุ่ม R  พร้อม ๆ กัน  พิมพ์ “cmd” (เป็นคำย่อของ Command)  แล้วคลิก OK

      ที่หน้าต่าง  CMD shell  ให้พิมพ์คำว่า  set  JAVA_HOME

      ถ้าผลลัพธ์ออกมาเป็น Environment variable JAVA_HOME  not defined แสดงว่าในเครื่องคอมพิวเตอร์ของเรายังไม่มีตัวแปรชื่อ JAVA_HOME ในระบบ
    2. การตั้งค่าตัวแปร JAVA_HOME  ให้คลิกเมาส์ปุ่มขวาที่ไอคอน Computer ที่อยู่บน desktop  คลิกที่ Properties

    3. จะมีหน้าต่าง ที่มีคอลัมน์ด้านซ้ายมือเป็น Control Panel Home  ให้คลิกที่ Advanced system setting

      ที่หน้าต่าง System Properties คลิกที่ปุ่ม “Advanced” >> “Environment Variable..”

      ที่หน้าต่าง Environment Variables  เลือก System variables  คลิกที่ปุ่ม New…

      จะมีหน้าต่าง New System Variable   ในช่องชื่อตัวแปร Variable name ให้ตั้งชื่อเป็น JAVA_HOME  ในช่องVariable value ให้พิมพ์ตำแหน่งที่เก็บโปรแกรมภาษาจาวา ให้สอดคล้องกับตำแหน่งในเครื่องของเราเอง ในเครื่องของผู้เขียน โปรแกรมจาวาจะอยู่ที่ C:\Program Files\Java\jdk1.7.0.01

      ควรใช้วิธี copy และ paste ชื่อโฟลเดอร์ เพื่อป้องกันความผิดพลาดที่เกิดจากการพิมพ์  (โดยใช้ exploer คลิกไปที่ program Files >> Java >> jdk1.7.0_01 >>bin คลิกขวาที่โฟลเดอร์ bin )
    4. ทดสอบดูว่า ระบบของเรามีชื่อตัวแปรที่ชื่อว่า JAVA_HOME หรือยัง  โดยเข้าไปที่ CMD Shell อีกครั้ง (ถ้าหน้าต่าง CMD Shell เดิมยังไม่ปิด ให้ปิด เสียก่อน แล้วเข้าไปที่ CMD Shell ใหม่อีกครั้ง หรือ Restart CMD Shell)

  • set ตัวแปร CATALINA_HOME เพื่อให้วินโดว์และโปรแกรมอื่น ๆ รู้ว่า เก็บ Tomcat Server ไว้ที่ใด
    Tomcatรุ่นก่อน เวอร์ชัน 7 จะต้อง set ตัวแปร CATALINA_HOME ด้วย แต่ในรุ่น 7 นี้ไม่จำเป็นต้องทำ

Apache Tomcat คืออะไร

Apache Tomcat เป็น web server ที่พัฒนาโดย Apache Group

Apache Tomcat เป็น software ประเภท open source ที่ถูกดำเนินการโดยเทคโนโลยี Java Servlet และ JavaServer Pages

Apache Tomcat เป็น web server ที่รองรับการทำงานของ jsp/servlet

Apache Tomcat ถูกใช้อย่างแพร่หลาย ในการพัฒนาเว็บแอพพลิเคชันโดย jsp/servlet

Apache Tomcat ได้พัฒนามาตั้งแต่ปี 1999

Apache Tomcat มีส่วนประกอบตามรูปด้านล่าง



- bin
โฟลเดอร์นี้จะใช้สำหรับ start/shutdown script และมีไฟล์ที่มีประโยชน์อื่น ๆ เช่น startup shutdown catalina

- conf
โฟลเดอร์นี้จะใช้สำหรับ ตั้งค่าต่าง ๆ ของโปรแกรม เช่น web.xml server.xml

- lib
โฟลเดอร์นี้จะใช้สำหรับ เก็บ Jar files ต่าง ๆ และใช้สำหรับ starting และ stopping Tomcat เช่น servlet-api.jar tomcat-api.jar

- logs
โฟลเดอร์นี้จะใช้สำหรับ เก็บ log files ต่าง ๆ

- webapps
โฟลเดอร์นี้จะใช้สำหรับ เก็บโปรเจ็คที่เราได้สร้างขึ้นมา

- work
โฟลเดอร์นี้จะใช้สำหรับ โปรแกรม เอาไว้วางไฟล์ intermediate files(เช่น compiled JSP files) ในระหว่างการทำงาน ซึ่งถ้าลบโฟลเดอร์นี้ออก ในระหว่างแปรโปรแกรมกำลังทำงาน จะไม่สามารถทำงานสคิป jsp ได้

Apache Tomcat สามารถดาวน์โหลดได้ฟรี ที่ http://tomcat.apache.org

Apache คืออะไร

Apache คืออะไร

Apache คืออะไร Apache คือ Software ที่ทำหน้าที่เป็น webserver โดยให้บริการ protocol HTTP ที่ port 80 ลักษณะเด่น คือเป็น Software ที่เป็น Opensource ติดตั้งมาพร้อมกับ ระบบปฎิบัติการ Linux และมีใช้กันอย่างแพร่หลายมากที่สุดในโลก

ที่มาของชื่อ Apache มาจากกลุ่มคนที่ช่วยสร้างแพตช์ไฟล์สำหรับโครงการ NCSA httpd1.3 ซึ่งกลายมาเป็นที่มาของชื่อ A PAtCHy server และในอีกความหมายหนึ่งยังกล่าวถึงเผ่าอะแพชีหรืออาปาเช่ ซึ่งเป็นเผ่าอินเดียนแดงที่มีความสามารถในการรบสูง

ประวัติของ Apache พัฒนามาจาก HTTPD Web Server ที่มีกลุ่มผู้พัฒนาอยู่ก่อนแล้ว โดย ร็อบ แม็คคูล (Rob McCool) ที่ NCSA (National Center for Supercomputing Applications) มหาวิทยาลัยอิลลินอยสมหาวิทยาลัยอิลลินอยส์ เออร์แบนา-แชมเปญจน์ สหรัฐอเมริกา แต่หลังจากที่ แม็คคูล ออกจาก NCS และหันไปให้ความสนใจกับโครงการอื่นๆ มากกว่าทำให้ HTTPD เว็บเซิร์ฟเวอร์ ถูกปล่อยทิ้งไม่มีผู้พัฒนาต่อ แต่เนื่องจากเป็นซอร์ฟแวร์ที่อยู่ภายใต้ลิขสิทธิ์ กนู คือ ทุกคนมีสิทธิ์ที่จะนำเอาซอร์สโค้ดไปพัฒนาต่อได้ ทำให้มีผู้ใช้กลุ่มหนึ่งได้พัฒนาโปรแกรมขึ้นมาเพื่ออุดช่องโหว่ ที่มีอยู่เดิม (หรือ แพช) และยังได้รวบรวมเอาข้อมูลการพัฒนา และการแก้ไขต่างๆ แต่ข้อมูลเหล่านี้อยู่ตามที่ต่างๆ ไม่ได้รวมอยู่ในที่ที่เดียวกัน จนในที่สุด ไบอัน บีเลนดอร์ฟ (Brian Behlendorf) ได้สร้างจดหมายกลุ่ม (mailing list) ขึ้นมาเพื่อนำเอาข้อมูลเหล่านี้เข้าไว้เป็นกลุ่มเดียวกัน เพื่อให้สามารถเข้าถึงข้อมูลเหล่านี้ได้ง่ายยิ่งขึ้น และในที่สุด กลุ่มผู้พัฒนาได้เรียกตัวเองว่า กลุ่มอาปาเช่ (Apache Group) และได้ปล่อยซอฟต์แวร์ HTTPD เว็บเซิร์ฟเวอร์ ที่พัฒนาโดยการนำเอาแพชหลายๆ ตัวที่ผู้ใช้ได้พัฒนาขึ้นเพื่อปรับปรุงการทำงาน ของซอฟ์ตแวร์ตัวเดิมให้มีประสิทธิภาพมากยิ่งขึ้นตั้งแต่ ปี พ.ศ. 2539 Apache ได้รับความนิยมขึ้นเรื่อยๆ จนปัจจุบันได้รับความนิยมเป็นอันดับหนึ่ง มีผู้ใช้งาน อยู่ประมาณ 65% ของเว็บเซิร์ฟเวอร์ที่ให้บริการอยู่ทั้งหมด11111



โดยหน้าที่หลักของ webserver ทั่วไปมีดังนี้


  1. คอยจัดการ Request ก็คือ การร้องขอข้อมูล
  2. คอยจัดการ Resposne ก็คือ การส่งข้อมูลกลับไป
  3. คอยจัดการ process และจัดลำดับ ของ request และ response
  4. คอยเก็บ logs ที่มีการ access เข้ามารวมกระทั้ง error ต่างๆๆ ที่ webserver พบ เช่น ไม่เจอไฟล์ชื่อนี้
  5. สามารถ เอา module มาใช่ร่วมกับ webserver ได้ ยกตัวอย่างเช่น Apache นั้น ไม่สามารถ run ไฟล์ .php ได้ ต้อง เรียกใช้ module php อีกที หรือ การ rewrite url ก็ใช่เดียวกันต้องใช้ mod_rewrite ในการสร้าง
เมื่อรู้หน้าที่ของ Apache ไปแล้วทีนี้เรามารู้จัก Webserver ตัวอื่น บ้าง ๆๆ
  1. IIS เป็น Webserver ที่ทาง Microsoft พัฒนาขึ้น โดยจะติดตั้งมาให้กับ ตระกูล Window NT หรือว่า Windows ตระกูล Server นั้นเอง ใน IIS จะติดตั้งตัว Compile ภาษา asp หรือว่า asp.net มาให้ด้วย ซึ่งสามารถ Config ให้ Run php โดย ติดตั้งตัวแปรกภาษา php ลงไป ในบทความบทต่อไปจะได้กล่าวถึง
  2. Apache Tomcat เป็น หนึ่งในตระกูล Apache ซึ่งเป็น Opensource เช่นเดียวกับ Apache แต่จะติดตั้งตัว Compile ภาษา Jsp มาให้ด้วย โดยลักษณะการทำงาน ก็คือ Apache Tomcat จะ Compile ไฟล์ jsp เป็น Class File ที่เรียกว่า Servlert ก่อนแล้วจึงให้ ตัว Servlet Engine ทำหน้าที่ในการ Compile ต่อ ออกมาเป็น Web
  3. Apache เป็น Opensource และมีคนพัฒนา โดยใช้ Apache มากที่สุดในโลก เนื่องจาก Free และ มีบทความต่างๆ รวมถึงเป็น ระบบที่อยู่มานานแล้วจึงมีการพัฒนาจน สเถียรมาก
สามารถ Download Software ได้ที่

http://www.apache.org/dyn/closer.cgi

FTP Service เพื่อคู่หูของเว็บเซิร์ฟเวอร์

FTP Service เพื่อคู่หูของเว็บเซิร์ฟเวอร์
เนื่องด้วยการใช้งานเว็บเซิร์ฟเวอร์นั้นต้องการการแสดงผลเอกสารเว็บที่ เป็นไฟล์ข้อความภาษา HTML ไฟล์รูปภาพ และมัลติมีเดียต่าง ๆ ผู้ที่จะปรับปรุงเนื้อหาบนเว็บเพจทั้งหลายบนเว็บเซิร์ฟเวอร์จะต้องอาศัย บริการอีกตัวหนึ่งเพื่อจัดส่งไฟล์ต่าง ๆ อัพโหลดเข้าไปเก็บภายใน DocumentRoot ของเว็บเซิร์ฟเวอร์ ซึ่งบริการดังกล่าวก็คือ FTP ( File Transfer Protocol ) บริการ FTP นี้ไม่ได้รวมอยู่ในตัวเว็บเซิร์ฟเวอร์ ดังนั้นผู้ดูแลระบบจะต้องคอนฟิกเซิร์ฟเวอร์ที่ให้บริการ FTP นี้ขึ้นมาใช้งานคู่กับเว็บเซิร์ฟเวอร์เสมอ ซึ่งโปรแกรมที่ทำหน้าที่เป็น FTP Server นี้ Red Hat Linux 9.0 จะให้มาพร้อมกันแล้ว คือ โปรแกรม vsftpd ( Very Secure FTP Daemon ) เราจึงสามารถเปิดบริการนี้ขึ้นมาได้ด้วยคำสั่งคล้าย ๆ การเปิดบริการอาปาเช่
# chkconfig vsftpd on
# service vsftpd restart
หลังจากที่ FTP Server เริ่มทำงานแล้ว รายชื่อผู้ใช้งานในระบบทุกชื่อจะสามารถใช้บริการ FTP Server นี้ได้ทันที แต่สำหรับการเพิ่มชื่อล๊อกอินของยูสเซอร์ที่จะแก้ไขปรับปรุงเว็บไซต์จำเป็น ต้องกำหนดให้ยูสเซอร์นั้นเริ่มต้นเข้าไปรับส่งไฟล์ที่ตำแหน่งไดเร็คทอรี่ DocumentRoot ของเว็บเซิร์ฟเวอร์ ( ตามตัวอย่างข้างต้นคือ /itdestination.com ) วิธีการสร้างแอคเค้าต์ของยูสเซอร์ ( สมมุติชื่อ webmaster ) จะมีขั้นตอนดังรูปที่ 7 หลังจากนี้ยูสเซอร์ webmaster จะสามารถตกแต่งแก้ไขเว็บไซต์ได้โดยผ่านโปรแกรม FTP Client ธรรมดาทั่วไป ( เช่น WS-FTP Pro หรือ CuteFTP ) จากเครื่องไคลเอ้นต์ได้ตามต้องการ


รูปที่ 7 ขั้นตอนการสร้างยูสเซอร์ webmaster เพื่อการ FTP

DNS Server อีกแรงสนับสนุนเพื่อการใช้งานที่สมบูรณ์ ในด้านการเรียกเข้าชมเว็บไซต์จากผู้ใช้ทั่วไป ระบบของเราจำเป็นต้องอาศัยระบบ Domain Name Service หรือ DNS เพื่อช่วยให้ผู้ชมสามารถเข้าถึงเว็บเซิร์ฟเวอร์ของเราได้ด้วยการเรียกด้วย ชื่อของเว็บไซต์ แทนที่จะเรียกเข้ามาด้วยหมายเลขไอพี หากเป็นการสร้างเว็บเซิร์ฟเวอร์ขึ้นเพื่อใช้งานเป็นการภายในขององค์กรก็จำ เป็นต้องจัดตั้ง DNS Server ขึ้นเพื่อช่วยแปลงชื่อโฮสต์ ( เช่น www.intranet.com ) ให้เป็นหมายเลขไอพีของโฮสต์ที่เป็นเว็บเซิร์ฟเวอร์ของเรา ซึ่งอาจจะใช้ DNS Server ที่มีอยู่แล้วในองค์กรก็ได้ แต่ถ้ายังไม่เคยมี DNS Server มาก่อนก็สามารถคอนฟิกโปรแกรม BIND ที่มาพร้อมกับ Red Hat Linux 9.0 ให้ทำหน้าที่เป็น DNS Server ก็ได้


รูปที่ 8 การทำงานร่วมกับระหว่าง DNS กับ Apache

แต่ถ้าเป็นการจัดตั้งเว็บเซิร์ฟเวอร์นี้ขึ้นเพื่อให้บริการแก่บุคคล ทั่วไปในระบบเครือข่ายอินเตอร์เน็ตก็จะต้องเชื่อมต่อเว็บเซิร์ฟเวอร์นี้เข้า สู่ระบบอินเตอร์เน็ตโดยจะต้องมีหมายเลขไอพีจริงในระบบอินเตอร์เน็ต ( Real IP Address ) คอนฟิกของระบบเครือข่ายนี้มีทางเลือกหลายทาง โดยอาจจะเชื่อมต่อเข้าสู่เครือข่ายอินเตอร์เน็ตโดยผ่านสายสื่อสารที่จัด เตรียมไว้ เช่น สายลีสไลน์และเราต์เตอร์ หรืออาจจะใช้บริการจากผู้ให้บริการอินเตอร์เน็ต ( Internet Data Center ) โดยการนำเว็บเซิร์ฟเวอร์ของเราไปฝากไว้ที่เรียกว่า Co-Location ซึ่งเป็นอีกวิธีหนึ่งที่ประหยัดกว่าก็ได้ ต่อจากนั้นจะต้องจดทะเบียนชื่อโดเมน ( Domain Name Registration ) เพื่อให้ได้ชื่อโดเมนและเว็บไซต์ที่คนทั่วโลกจะเข้าถึงได้ โดยเป็นหน้าที่ของหน่วยงานที่เป็นตัวแทนจดทะเบียนชื่อโดเมนให้เราจะต้องลง ทะเบียนในระบบ DNS ให้ชื่อเว็บไซต์นี้ชี้มาที่หมายเลขไอพีที่ได้เชื่อมต่อกับเว็บเซิร์ฟเวอร์ ไว้ ภายหลังจากลงทะเบียนชื่อโดเมนประมาณ 2-3 วัน คนทั่วโลกก็จะเข้าถึงเว็บไซต์ของเราได้แล้ว Apache ไม่ใช่เพียงแค่เว็บเซิร์ฟเวอร์ ในความเป็นจริงแล้ว สถานะของอาปาเช่ในปัจจุบันถูกแบ่งออกในเชิงการประยุกต์ใช้งานได้ 2 ทาง คือ การใช้งานทางตรง หรือการใช้งานโดยเน้นหนักไปในฐานะของ HTTP Server ซึ่งถูกนำไปใช้งานเป็นเว็บเซิร์ฟเวอร์โดยตรง ในส่วนนี้ยังสามารถแยกลักษณะการใช้งานออกไปได้อีกหลายทิศทางขึ้นอยู่กับ ลักษณะของงานและคุณลักษณะพิเศษต่าง ๆ ที่เสริมเข้าไปอีกด้วย ได้แก่
  • การใช้งานเป็น Mirror Site ด้วยความสามารถจากโมดูลในกลุ่ม mod_proxy.c ทำให้เราสามารถประยุกต์ใช้อาปาเช่เป็นเว็บไซต์ Mirror ได้ โดยสามารถสำเนาเนื้อหาจากเว็บไซต์ที่ได้รับการอนุญาติแล้วมาให้บริการใน เซิร์ฟเวอร์ของเราได้
  • ทำหน้าที่เป็น Web Redirector หรือทำหน้าที่เป็นตัวช่วยเปลี่ยนทิศทางของผู้ชมที่มาจากแหล่งต้นทางที่แตก ต่างกันให้ไปสู่ URL หรือเซิร์ฟเวอร์ที่กำหนดขึ้นใหม่ได้ ซึ่งมาจากความสามารถของโมดูล mod_rewrite.c
  • การสร้างเว็บไซต์ส่วนบุคคล หรือ Personal Home Page การใช้งานแบบนี้เป็นที่นิยมมากในสถานศึกษา มหาวิทยาลัย โดยอาศัยการทำงานของโมดูล mod_userdir.c จะช่วยให้ยูสเซอร์ทุกคนในเว็บเซิร์ฟเวอร์มีเว็บไซต์ส่วนตัวได้โดยอัตโนมัติ โดยมี URL เป็นชื่อเว็บไซต์นั้นตามด้วยเครื่องหมาย ~ และชื่อของยูสเซอร์นั้น ๆ เช่น ยูสเซอร์ gump ในเซิร์ฟเวอร์ www.tepleela.ac.th ก็จะมี URL เป็น http://www.tepleela.ac.th/~gump/ เป็นต้น ซึ่งทำให้สมาชิก นักเรียน นักศึกษา มีเว็บไซต์เป็นของตนเองที่จะใช้ฝึกหัดสร้างเว็บไซต์ และเผยแพร่ข้อมูลสู่สาธารณะได้ตามต้องการ
  • การเป็น Virtual Host ลักษณะนี้เป็นที่นิยมกันมากทีเดียว คือ การสร้างเว็บไซต์มากกว่า 1 เว็บไซต์โดยใช้เครื่องเซิร์ฟเวอร์เพียงเครื่องเดียว และใช้หมายเลขไอพีแอดเดรสเพียงหมายเลขเดียวในการอ้างถึงเว็บไซต์หลายชื่อ หรือที่เรียกว่า Name Based Virtual Host ซึ่งช่วยให้ลดค่าใช้จ่ายไปได้มาก สำหรับ Red Hat Linux 9.0 แล้วในทางเทคนิคสามารถคอนฟิกได้ทันทีในส่วนของอาปาเช่ แต่ยังขาดในส่วนของ FTP Server ซึ่งไม่สนับสนุนการทำ Virtual Host ในแบบ Name Based ดังนั้นจึงจำเป็นต้องนำโปรแกรม FTP Server ที่ดีกว่า vsFTPd และมีคุณสมบัติด้าน Virtual Host มาใช้แทน เช่น ProFTPd หรือ PureFTPd เป็นต้น ( vsFTPd สนับสนุน Virtual Host เฉพาะแบบ IP Based และ Port Based เท่านั้น )
  • การเป็นเว็บเซิรฟเวอร์ที่สนับสนุนเทคโนโลยีเว็บอื่น ๆ Apache 1.3 และ 2.0 เป็นเพียงหนึ่งในโปรเจคของ The Apache Software Foundation เท่านั้น ยังมีโปรเจคอื่น ๆ ที่เป็นโปรเจคต่อเนื่องจากอาปาเช่อีกมากมาย เช่น Jakarta เป็นโปรเจคเสริมเพื่อทำให้อาปาเช่สนับสนุน Java Platform โดยหนึ่งในจำนวนโปรแกรมที่เป็นที่รู้จักกันเป็นอย่างดีก็คือ Tomcat 5 ซึ่งเสริมการสนับสนุน Java Servlet 2.4 และ Java Server Pages 2.0
  • ในทางอ้อม การประยุกต์ใช้อาปาเช่เว็บเซิร์ฟเวอร์ยังถูกนำมาใช้เพื่อเป็นส่วนประกอบใน งานด้านอื่น ๆ อีก โดยอยู่ในฐานะช่องทางติดต่อระหว่างผู้ใช้กับแอปพลิเคชั่นต่าง ๆ ในลักษณะของ Web based User Interface ซึ่งผู้ใช้อินเตอร์เน็ตทั่วไปมีความคุ้นเคยดีอยู่แล้ว อีกทั้งยังลดการบำรุงรักษาและคอนฟิกในฝั่งเครื่องไคลเอ้นไปได้มากอีกด้วย การใช้งานในทางอ้อมที่ว่านี้ ได้แก่

  • เป็นยูสเซอร์อินเทอร์เฟสเข้าสู่ยูทิลิตี้ อาปาเช่ถูกนำไปพัฒนาร่วมกับซอฟต์แวร์ต่าง ๆ มากมายทั้งซอฟต์แวร์เชิงพานิชย์ และฟรีซอฟต์แวร์ เพื่อใช้เป็นอินเทอร์เฟสที่สะดวกต่อการใช้งานยิ่งขึ้น เช่น ซอฟต์แวร์บริหารจัดการโปรแกรมตรวจสอบและกำจัดไวรัส ( ได้แก่ Trend Micro ) ซอฟต์แวร์ช่วยการคอนฟิกและใช้งานลีนุกซ์เซิร์ฟเวอร์ ( ได้แก่ Webmin ,Usermin )
  • เป็นช่องทางแสดงผลข้อมูลระบบและเครือข่าย เนื่องจากอาปาเช่ถูกผนวกเอาไว้กับลีนุกซ์เซิร์ฟเวอร์ทุกดิสทริบิวชั่น หรือ ถ้าเป็นโอเอสอื่น ( Windows ,Mac OS X ) ก็สามารถติดตั้งใช้งานได้ฟรี และสามารถแสดงผลได้ทั้งตัวอักษร รูปภาพ รูปกราฟ ได้โดยตรง จึงมีการนำอาปาเช่มาใช้งานด้านการแสดงผลข้อมูลระบบ และกราฟสถิติต่าง ๆ มากมาย เช่น MRTG ใช้แสดงข้อมูลกราฟที่ได้ข้อมูลจาก Router หรือ SNMP Server โปรแกรม SARG ใช้แสดงตารางสถิติการเข้าชมเว็บไซต์ของผู้ใช้งาน Squid Proxy Server โปรแกรมประเภท Log Analyzer เป็นต้น
  • ใช้เป็น Web Mail ข้อดีของการใช้งานอีเมล์ผ่านทางเว็บบราวเซอร์เป็นสิ่งที่เราต่างทราบกันเป็น อย่างดี อาปาเช่ในฐานะที่เป็น Front-End ของระบบอีเมล์จึงเป็นงานอีกลักษณะหนึ่งที่เรานิยมนำมาใช้งานร่วมกับระบบ Mail Server
  • เป็นอินเทอร์เฟสของแอปพลิเคชั่นเฉพาะทาง มีซอฟต์แวร์เป็นจำนวนมากที่พัฒนาโดยทำงานภายใต้สภาพแวดล้อมที่เรียกว่า Web based Applications ทั้งที่เป็นการพัฒนาขึ้นเพื่อใช้งานในองค์กรโดยเฉพาะ และทั้งที่เป็นซอฟต์แวร์สำเร็จรูป เช่น โปรแกรมประเภท Groupware หรือ Web based collaboration ต่าง ๆ ระบบสนับสนุนสารสนเทศภายในองค์กร เป็นต้น
  • มาใช้ Apache กันเถอะ เป็นอย่างไรบ้างครับ จะเห็นว่าการนำเอาโปรแกรมที่ยอดเยี่ยมอย่าง Apache มาใช้งานเป็นเรื่องที่ทำได้ไม่ยากเลย นอกจากนั้นยังสามารถนำมาใช้ประโยชน์ในองค์กรของคุณได้มากมายเรียกได้ว่า อเนกประสงค์เลยทีเดียว ถ้าคุณคิดจะเริ่มต้นวางระบบเว็บเซิร์ฟเวอร์ในองค์กรของคุณแล้วล่ะก็ขอแนะนำ ให้เริ่มต้นกับลีนุกซ์ และอาปาเช่ แล้วคุณจะเห็นว่าการหยิบเอาโอเพ่นซอฟร์ส / ฟรีซอฟต์แวร์มาใช้งานเป็นโซลูชั่นที่สนองความต้องการขององค์กรได้อย่าง ยั่งยืนกว่า คุ้มค่ากับเวลา และการลงทุนลงแรงของคุณ หากมีข้อแนะนำ สอบถามข้อสงสัยเกี่ยวกับการประยุกต์ใช้งานลีนุกซ์เซิร์ฟเวอร์ของเชิญที่ เว็บบอร์ดของผู้เขียน http://www.itdestination.com/webboard เอกสารอ้างอิง
    - The Apache Software Foundation : http://www.apache.org
    - Web Server Servey : http://news.netcraft.com/archives/web_server_servey.html
    - RHCE Red Hat Certified Engineer Linux Study Guide,Second Edition : Osborne/McGraw-Hill

    ลักษณะทางกายภาพของอาปาเช่

    ลักษณะทางกายภาพของอาปาเช่
    อาปาเช่ถูกสร้างขึ้นจากการนำเอาโปรแกรมขนาดเล็กที่ทำหน้าที่แตกต่าง กันหลายโมดูลมาทำงานร่วมกันเป็นเว็บเซิร์ฟเวอร์ จึงทำให้มีส่วนประกอบเป็นโมดูล ( ที่พัฒนาด้วยภาษาซี ) ส่วนหนึ่งจะเป็นส่วนแกนกลางที่ทำหน้าที่บริหารจัดการทั้งหมด เรียกว่า Core.c โมดูลต่อมาคือ โมดูลที่ทำหน้าที่บริหารหน่วยความจำ ( Memory Management ) และบริหารโปรเซสงานย่อย ( Child Process ) ที่รองรับการให้บริการที่เรียกเข้ามาพร้อม ๆ กันจำนวนมากจากภายนอก ( Multi-Processing Models หรือ MPM ) ซึ่งอาปาเช่มีโมเดลการทำงานด้านนี้รองรับไว้ 3 โมเดลด้วยกัน คือ Workers สำหรับรองรับงานจำนวนมากๆ ในขณะที่ต้องการหน่วยความจำไมามากนัก Prefork สำหรับงานที่ต้องการประสิทธิภาพและความเร็วแต่จะต้องใช้ทรัพยากรระบบมากกว่า และ Per Child ออกแบบมาเพื่อรองรับงานได้แตกต่างกันโดยแยกตามยูสเซอร์ที่ร้องขอบริการเข้า มา ( ขณะนี้อยู่ระหว่างการพัฒนา ) โมดูล http_core.c จะทำหน้าที่รองรับการประมวลผลด้วยโปรโตคอล HTTP ( Hyper Text Transfer Protocol ) ซึ่งจะจัดการกับส่วนเฮดเดอร์ตามมาตรฐาน NCSA และโมดูล mod_so.c จะทำหน้าที่ติดต่อประสานการทำงานโมดูลภายในเข้ากับกับ Shared Modules อื่น ๆ ที่อยู่ภายนอก ซึ่งโมดูลภายนอกเหล่านี้เราเรียกว่า Dynamic Shared Object หรือ DSO จะมีจำนวนมากน้อยก็ขึ้นอยู่กับความต้องการใช้งานของผู้ใช้ โดยจะกำหนดได้ในขณะที่คอมไพล์โปรแกรมอาปาเช่ สำหรับกรณีของ Red Hat 9.0 จะมีการคอมไพล์มาให้เรียบร้อยแล้ว และมีโมดูล DSO ที่มีคุณสมบัติด้านต่าง ๆ เพียงพอต่อการใช้งานทั่วไป เช่น การสนับสนุนภาษาสคริปต์ การทำ Authentication แบบต่าง ๆ การสนับสนุน Server Side Include เป็นต้น โดยในส่วนของแกนกลางหรือ MPM จะเป็นโมเดลแบบ prefork เราสามารถตรวจสอบดูส่วนประกอบของอาปาเช่ได้ด้วยคำสั่งตามรูปที่ 4


    รูปที่ 4 รายชื่อโมดูลที่เป็นส่วนประกอบของอาปาเช่ใน Red Hat 9.0

    โครงสร้างไดเร็คทอรี่ที่สำคัญ ในฐานะผู้ดูแลระบบที่จะต้องคอนฟิก Red Hat Linux ให้ทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ สิ่งที่จำเป็นต้องทราบในเบื้องต้นก็คือ เรื่องไดเร็คทอรี่ของอาปาเช่ ซึ่งแบ่งออกได้ 3 ส่วนใหญ่ ๆ คือ ServerRoot ,DocumentRoot และ ScriptAlias ServerRoot หมายถึง ไดเร็คทอรี่ที่เป็นจุดเริ่มต้นของส่วนประกอบด้านคอนฟิกทั้งหมดของอาปาเช่ สำหรับ Red Hat Linux 9.0 คือที่ /etc/httpd ซึ่งจะแยกออกเป็น build สำหรับการเพิ่มโมดูลเข้าสู่เว็บเซิร์ฟเวอร์ conf เป็นที่เก็บคอนฟิกไฟล์หลักคือ httpd.conf นั่นเอง conf.d เป็นไดเร็คทอรี่ที่ใช้เพิ่มเติมไฟล์คอนฟิกย่อยให้แก่เว็บเซิร์ฟเวอร์เพื่อ ความสะดวกในการปรับแก้คอนฟิกได้สะดวกกว่าการแก้ไขที่ httpd.conf เพียงจุดเดียว logs เป็นไดเร็คทอรี่ที่ใช้เก็บล๊อกไฟล์ที่บันทึกเหตุการณ์ต่าง ๆ ที่เกิดขึ้นกับเว็บเซิร์ฟเวอร์ modules เป็นไดเร็คทอรี่ที่เก็บไฟล์โมดูล DSO ทั้งหมดไว้ และ run เป็นไดเร็คทอรี่ที่เก็บบันทึกหมายเลขโปรเซสของอาปาเช่ไว้เพื่อการควบคุมโป รเซสทั้งจากภายในและภายนอกเซิร์ฟเวอร์เอง โครงสร้างของ ServerRoot
    แสดงดังรูปที่ 5


    รูปที่ 5 โครงสร้างของ ServerRoot

    DocumentRoot เป็นไดเร็คทอรี่ที่ผู้ใช้งานมักจะให้ความสำคัญที่สุด เพราะ document หรือเอกสารภาษา HTML ที่เราต้องการเผยแพร่ผ่านทางเว็บเซิร์ฟเวอร์จะเริ่มต้นแสดงผลเป็นหน้าแรกจาก ไดเร็คทอรี่นี้นั่นเอง หรือจะมองว่าเป็น Home Page เลยก็ได้ สำหรับ Red Hat Linux 9.0 จะกำหนดให้ไดเร็คทอรี่ /var/www/html เป็น DocumentRoot ของอาปาเช่ ซึ่งผู้ดูแลระบบอาจจะไปเปลี่ยนแปลงให้ใช้ไดเร็คทอรี่อื่นทำหน้าที่นี้แทนได้ ตามต้องการ โดยที่สามารถทำได้หลายวิธีซึ่งผู้เขียนจะสาธิตให้เป็นตัวอย่างดังรูปที่ 6 เป็นการกำหนด DocumentRoot ใหม่ไปที่ไดเร็คทอรี่ /itdestination.com โดยสร้างรอไว้ก่อน จากนั้นเปลี่ยนชื่อ /var/www/html ของเดิมที่มากับ Red Hat Linux ไปเป็นชื่อ /var/www/html.original และสุดท้ายจึงใช้ Symbolic Link สร้างจุดเชื่อมโยงชื่อ html ขึ้นแทนที่เพื่อนำเข้าสู่ /itdestination.com เป็นอันเสร็จสิ้นการย้ายตำแหน่งไดเร็คทอรี่ DocumentRoot โดยไม่ต้องแก้ไขคอนฟิกของอาปาเช่เลยแม้แต่บรรทัดเดียว


    รูปที่ 6 สาธิตวิธีการย้ายตำแหน่ง DocumentRoot อย่างรวดเร็ว

    ScriptAlias ไดเร็คทอรี่นี่จะถูกกำหนดให้เป็นที่รันโปรแกรม CGI ( Common Gateway Interface ) โดยเฉพาะซึ่งมีลักษณะเป็นโปรแกรมสคริปต์หรือไบนารี่ก็ได้ที่รันในฝั่ง เว็บเซิร์ฟเวอร์ แล้วจึงส่งผลลัพธ์ของโปรแกรมกลับไปยังหน้าเว็บเพจที่ผู้ชมเว็บเพจอีกครั้ง ( เช่น โปรแกรมนับจำนวนผู้เข้าชมเว็บ ) สำหรับ Red Hat Linux 9.0 จะถูกกำหนดค่าไว้ที่ /var/www/cgi-bin ซึ่งผู้ดูแลระบบจะโยกย้ายไปใช้พื้นที่อื่นได้เช่นเดียวกับ DocumentRoot อย่างไรก็ตามในปัจจุบันโปรแกรมประเภท CGI มีการใช้งานที่ลดน้อยลงไปอย่างเห็นได้ชัด ซึ่งกำลังถูกแทนที่โดยภาษาสคริปต์ประเภท HTML Embedded นั่นเอง

    Apache เว็บเซิร์ฟเวอร์ที่นิยมใช้มากที่สุดในโลก

    อาปาเช่ เป็นเว็บเซิร์ฟเวอร์เพียงหนึ่งเดียวที่อยู่คู่กับระบบปฏิบัติการลีนุกซ์ทุก ดิสทริบิวชั่นมาเป็นเวลาหลายปีแล้ว เช่นเดียวกับลีนุกซ์เรดแฮทที่ได้รวมเอาโปรแกรมอาปาเช่ไว้ในชุดติดตั้งพร้อม ให้เราใช้งานได้ทันที ไม่ต่างอะไรกับบะหมี่สำเร็จรูป แค่เทน้ำร้อนลงไปก็รับประทานได้ทันที จึงไม่ใช่เรื่องยากเลยที่เราจะตั้งเครื่องพีซีซักตัวหนึ่งขึ้นเป็น เว็บเซิร์ฟเวอร์ ให้บริการเว็บได้ทั้ง ระบบอินทราเน็ตภายในองค์กร ไปจนถึงจัดตั้งเว็บไซต์เผยแพร่ข้อมูลไปทั่วโลก และนี่คืออีกหนึ่งการนำเอาลีนุกซ์มาใช้งานที่คุ้มค่าที่สุด สำหรับวันนี้ เว็บเซิร์ฟเวอร์ที่นิยมใช้มากที่สุดในโลก ข้อมูลการสำรวจจากเว็บไซต์ทั่วโลกโดย Netcraft เป็นสิ่งที่ยืนยันถึงจำนวนของอาปาเช่เว็บเซิร์ฟเวอร์ที่มีสัดส่วนการใช้งาน สูงกว่าเว็บเซิร์ฟเวอร์อื่น ๆ อย่างเห็นได้ชัด และยังมีแนวโน้มที่จะเพิ่มสูงมากยิ่งขึ้นอีกด้วย จากจุดเริ่มต้นที่อาศัยโค๊ดจากเว็บเซิร์ฟเวอร์มาตรฐาน NCSA ( องค์กรกลางผู้กำหนดมาตรฐานโปรโตคอล HTTP ,มาตรฐานภาษา HTML และมาตรฐานอื่น ๆ ที่เกี่ยวข้องกับงานบริการบนเว็บทั้งหมด ) พัฒนาอย่างต่อเนื่องด้วยกำลังของชุมชนนักพัฒนาจากทุกมุมโลกผ่านโมเดลการ พัฒนาแบบฟรีซอฟต์แวร์ ภายใต้การกำกับดูแลของ Apache Foundation ( http://www.apache.org ) ทำให้เกิดซอฟต์แวร์เว็บเซิร์ฟเวอร์ที่มีเสถียรภาพการทำงานที่เชื่อถือได้ มีประสิทธิภาพสูง และแข็งแกร่ง จากซอฟต์แวร์ที่เริ่มต้นจากส่วนประกอบเล็ก ๆ หรือ "patches" จำนวนมากมาย จนทำให้ถูกเรียกขานว่า " a patchy " ผ่านช่วงระยะเวลาของการพัฒนามาถึงสิบปี จนกลายมาเป็นเว็บเซิร์ฟเวอร์ที่ได้มาตรฐาน และได้รับความนิยมสูงสุดในวันนี้ อาปาเช่ยังคงความเป็นฟรีซอฟต์แวร์ไว้อย่างมั่นคง กล่าวได้ว่าถึงวันนี้อาปาเช่เป็นแม่แบบของฟรีซอฟต์แวร์ที่ประสบความสำเร็จ แล้วในโลกของความเป็นจริง และเป็นอีกหนึ่งโปรเจคที่ก้าวข้ามพ้นอุปสรรคของโมเดลการพัฒนาแบบฟรี ซอฟต์แวร์ได้สำเร็จแล้ว


    รูปที่ 1 รายงานผลสำรวจเว็บเซิร์ฟเวอร์จาก NetCraft

    สารพัดประโยชน์จากเว็บเซิร์ฟเวอร์ ไม่ว่าจะเป็นเว็บเซิร์ฟเวอร์ชนิดใดก็ตาม คุณประโยชน์ที่จะได้รับย่อมเป็นสิ่งแรกที่เราต้องคำนึงถึง ความหมายสั้น ๆ ของบริการบนเว็บก็คือ มันเป็นวิธีที่ง่ายที่สุดที่จะเผยแพร่เอกสารข้อมูลไปในเครือข่ายคอมพิวเตอร์ เพราะเพียงแค่ผู้ใช้บริการเปิดโปรแกรมเว็บบราวเซอร์ ( ซึ่งมีติดตั้งอยู่ในคอมพิวเตอร์หรือเครื่องมือสื่อสารสมัยใหม่อยู่แล้ว ) ก็จะสามารถเข้าถึงเอกสารเว็บได้โดยอ้างชื่อของเว็บไซต์ ต่อจากนั้นก็จะพบกับเอกสารข้อความ สื่อมัลติมีเดีย บริการดาวน์โหลด และกิจกรรมที่เป็นอินเตอร์แอคทีฟสารพัดได้อย่างง่ายดาย เว็บเซิร์ฟเวอร์จะเป็นศูนย์กลาง หรือจุดเริ่มต้นของการประยุกต์ใช้งานเครือข่ายคอมพิวเตอร์ของคุณได้อย่าง หลากหลาย เริ่มต้นจากการเป็นแหล่งเผยแพร่ข่าวสารในองค์กร เปิดให้บริการอีเมล์ผ่านเว็บ ( Web based Mail Services ) รวมไปถึงการใช้งานแอปพลิเคชั่นผ่านเว็บหรือ Web based Application ที่พัฒนาขึ้นโดยเฉพาะ ซึ่งมีองค์กรเป็นจำนวนมากที่เริ่มหันมาสนใจพัฒนาแอปพลิเคชั่นเฉพาะขององค์กร ในลักษณะเช่นนี้ ทั้งนี้เหตุผลหลักก็คือความต้องการที่จะพัฒนาแอปพลิเคชั่นขึ้นโดยตั้งอยู่บน ระบบโครงสร้างที่เป็นมาตรฐาน ซึ่งจะช่วยลดปัญหาที่จะต้องเผชิญกับการเปลี่ยนแปลงของเทคโนโลยีที่ถูกกำหนด ขึ้นโดยผู้ผลิตซอฟต์แวร์หรือฮาร์ดแวร์รายใหญ่นั่นเอง สำหรับองค์กรที่มีขนาดเล็ก และยังขาดความพร้อมในเรื่องที่จะพัฒนาซอฟต์แวร์ขึ้นใช้งานเอง ก็ยังมีทางเลือกออกอีกมากที่จะนำแอปพลิเคชั่นสำเร็จรูปมาใช้งานร่วมกับ เว็บเซิร์ฟเวอร์ได้เช่นกัน ซึ่งมีโปรเจคในแบบฟรีซอฟต์แวร์ให้เลือกใช้ได้เช่นกัน และส่วนใหญ่จะสามารถใช้ได้เป็นอย่างดีกับอาปาเช่ เนื่องจากความแพร่หลายของอาปาเช่ในหมู่นักพัฒนาซอฟต์แวร์นั่นเอง ติดตั้งคอนฟิกแบบเร่งด่วน ดังที่ได้กล่าวไปแล้วว่าในเรดแฮตลีนุกซ์จะมีโปรแกรมอาปาเช่ เว็บเซิร์ฟเวอร์ เวอร์ชั่น 2.0 ให้มาด้วยแล้ว คุณทราบหรือไม่ว่าขั้นตอนการปลุกให้อาปาเช่ตื่นขึ้นมาทำงานมันเป็นเรื่อง ง่ายยิ่งกว่าการโทรไปสั่งพิซซ่าเสียอีก ถ้าคุณติดตั้งเรดแฮตลีนุกซ์ในแบบเลือกครบทุกแพคเกจ หรือ EveryThing ก็จะมีโปรแกรมนี้พร้อมอยู่แล้วในเครื่องอย่างแน่นอน ซึ่งแพคเกจของโปรแกรมนี้จะชื่อว่า httpd ดังนั้นเราจะลองค้นหาแพคเกจที่ติดตั้งอยู่ในเครื่องได้ด้วยคำสั่ง rpm ดังนี้
    # rpm -qa | grep http
    ถ้ามีแพคเกจนี้เรียบร้อยแล้ว และได้เซ็ตค่าคอนฟิกเกี่ยวกับระบบเครือข่าย TCP/IP แล้ว การสั่งให้อาปาเช่ทำงานจะใช้คำสั่งดังนี้
    # service httpd restart
    # chkconfig --level 35 httpd on
    จะเป็นการสั่งให้บริการของ อาปาเช่ เริ่มทำงานใหม่ ( กรณีที่ไม่เคยเปิดให้บริการมาก่อนจะแจ้ง Fail ขณะ Shutdown จึงถือว่าเป็นเรื่องปรกติ ) ส่วนอีกคำสั่งเป็นการกำหนดให้ อาปาเช่ เริ่มต้นทำงานเองเมื่อเริ่มเปิดเครื่องใหม่โดยอัตโนมัติ ซึ่งตัวบริการของอาปาเช่จะคอยให้บริการที่ TCP port หมายเลข 80 และ 443 ( เป็นโปรโตคอล HTTP และ HTTPS ตามลำดับ ) คำสั่ง netstat จะแสดงให้เห็นการทำงานดังกล่าว


    รูปที่ 2 ตรวจดูพอร์ตของ Apache

    เมื่อเห็นพอร์ต 80 ปรากฏขึ้น แสดงว่าอาปาเช่เริ่มให้บริการแล้ว เมื่อลองเปิดโปรแกรมเว็บบราวเซอร์เข้ามาที่โฮสต์ที่เป็นเว็บเซิร์ฟเวอร์นี้ เช่น ถ้าคุณติดตั้งโปรแกรม Mozilla ไว้ในเครื่องแล้วก็เรียกไปที่ http://localhost ก็จะเห็นหน้า Test Page ที่เรดแฮตสร้างไว้ให้ดังรูปที่ 2 เห็นมั๊ยครับแค่พิมพ์คำสั่งไม่กี่ครั้งก็ทำให้เว็บเซิร์ฟเวอร์เริ่มทำงาน แล้ว


    ที่ 3 หน้า Test Page ของอาปาเช่

    Twitter Delicious Facebook Digg Stumbleupon Favorites More