LAMP

หลายคนอาจจะเคยทำเว็บมากันบ้างนะครับ อาจจะทำเว็บส่วนตัว หรือที่ทำงานสั่งให้ทำเว็บขององค์กร เมื่อพูดถึงเว็บ สิ่งแรกที่ทุกคนต้องนึกถึงภาษา HTML ที่ใช้สร้างเว็บ แต่ถ้าต้องการให้เว็บของเรามีลูกเล่น ตอบโต้กับผู้ใช้ได้ เป็นเว็บขนาดใหญ่ ที่มีผู้เข้าชมจำนวนมาก ก็จะเริ่มมีเทคโนโลยีใหม่ๆ เข้ามา อย่างเช่น พวกภาษา PHP, ASP หรือ JSP ที่ช่วยให้เว็บนั้นมีความ”อัตโนมัติ”มากขึ้น ทำให้หน้าตาเว็บเพจทุกหน้าไปในโทนเดียวกัน แถมยังสะดวกในการดูแลรักษา



ถ้าต้องการให้คนทั่วไปเข้าถึงเว็บไซท์ของเราได้ นอกจาก”เขียน”เว็บแล้ว เราต้อง”ตั้ง”เว็บอีกด้วย โดยการไปจดโดเมนเนมที่ต้องการ แล้วตั้งเว็บเซิร์ฟเวอร์เพื่อให้บริการเว็บไซท์ (หรือเช่าที่เว็บเซิร์ฟเวอร์ถ้าเกิดไม่มีเงิน) การตั้งเว็บเซิร์ฟเวอร์เองก็ลำบากและต้องลงทุนพอสมควรครับ นอกจากจะต้องมีคอมพิวเตอร์ที่เชื่อมต่อกับอินเทอร์เน็ตตลอดเวลาแล้ว ยังต้องเสียเงินซื้อระบบปฏิบัติการ ซื้อโปรแกรมเว็บเซิร์ฟเวอร์ ซื้อระบบฐานข้อมูล จ้างผู้ดูแล เสียเงินเสียทองกันเยอะอยู่เหมือนกัน



แต่โลกเราตอนนี้กำลังอยู่ในกระแสซอพท์แวร์โอเพ่นซอร์ส ในเมื่อสามารถลดค่าซอพท์แวร์ได้ ทำไมจะไม่เอาล่ะครับ เอาเงินไปจ้างผู้ดูแลเก่งๆ แทนดีกว่า ชุดซอพท์แวร์โอเพ่นซอร์สสำหรับการทำเว็บเซิร์ฟเวอร์ มีชื่อเรียกเล่นๆ ว่า LAMP



LAMP ย่อมาจากอักษรตัวแรกของซอพท์แวร์เสรี 4 ตัวที่ทำหน้าที่ต่างๆ สำหรับเว็บเซิร์ฟเวอร์ นอกจากทุกตัวจะฟรีแล้ว ความสามารถก็ยังล้นเหลือ และได้รับความนิยมอย่างสูง โดยเว็บไซท์ทั่วโลกที่สร้างด้วยชุด LAMP นี้ มีมากกว่า Windows Server ที่ลง Internet Information Server และรัน ASP หลายช่วงตัวทีเดียว ...อะแฮ่ม...อย่าหาว่าคุย



L ตัวแรกมาจากคำว่า Linux ระบบปฏิบัติการยูนิกซ์สายพันธุ์หนึ่งที่ฟรี ฟรี และฟรี ปัจจุบันข่าวสารเกี่ยวกับลินิกซ์ได้เผยแพร่ผ่านสื่อจนกลายเป็นเรื่องธรรมดาไปแล้ว ดังนั้นไม่ต้องแนะนำอะไรกันมากนะครับ ประสิทธิภาพของมันแทบไม่เป็นรองระบบปฏิบัติการใดๆ ในโลกแล้ว (ยกเว้นแต่เว็บไซท์ที่คนเข้าเยอะมาก อย่างCNN.com อาจต้องใช้โซลาริสของซัน ที่ยอมรับกันประสิทธิภาพดีกว่า แต่จะมีเว็บระดับนั้นสักกี่แห่งกันเชียว) สนับสนุนหน่วยประมวลผลแบบหลายตัว ประมวลผลแบบขนานได้สารพัดระบบ ตัวลินิกซ์เองหาดาวน์โหลดได้ผ่านอินเทอร์เน็ต หรือซื้อเอาจากร้านซีดีในอินเทอร์เน็ต ที่พันธุ์ทิพย์ก็มีขายครับ



A ตัวที่สอง มาจากคำว่า Apache สุดยอดเว็บเซิร์ฟเวอร์อีกตัว ที่เคยแนะนำในคอลัมน์นี้ไปแล้ว จากการสำรวจของ Netcraft ประมาณ 60% ของเว็บไซท์ทั่วโลกรันอยู่บน Apache นอกจากประสิทธิภาพจะดี รับโหลดได้เยอะ Apache ยังพัฒนาเตรียมรับกับเทคโนโลยีใหม่ๆ ที่กำลังจะมาในอนาคต เช่น เว็บแอพพลิเคชั่นหรือเว็บเซอร์วิส มีโครงการย่อยมากมายกำลังถูกพัฒนาอยู่ใต้ร่มเงาของ Apache โดยเฉพาะด้านจาวา และ XML เช่น โครงการ Tomcat, Ant, Jarkata, Xerces แถมยังหาได้ง่ายเพราะมากับลินิกซ์แทบทุกตัวอยู่แล้ว



M มาจาก MySQL โปรแกรมฐานข้อมูลโอเพ่นซอร์ส มีความสามารถในด้านฐานข้อมูลครบครัน เพียงพอกับเว็บไซท์ทั่วๆ ไป ที่เก็บข้อมูลไม่เยอะมาก (ยกเว้นต้องการความสามารถในระดับสูงมากๆ หรือมีข้อมูลเยอะสุดๆ ต้องยอมเสียเงินใช้ Oracle หรือ DB2 แล้วล่ะครับ มีให้ใช้บนลินิกซ์เช่นกัน) MySQL ได้รับความนิยมสุดๆ และมากับลินิกซ์เกือบทุกตัว ติดตั้งง่าย ดูแลสะดวก มีโปรแกรมช่วยจัดการฐานข้อมูลมากมาย ทั้งเป็นโปรแกรมปกติ และเว็บเบส (แนะนำ phpMyAdmin ครับ) เมื่อก่อนพูดถึงฐานข้อมูลโอเพ่นซอร์ส ต้องนึกถึง MySQL เพียงตัวเดียว แต่ตอนนี้มีคู่แข่งรายใหม่เกิดขึ้นมาแล้วครับ ชื่อว่า PostgreSQL (อ่านว่า โพส-เกรส-คิว-แอล) เริ่มพัฒนาจากมหาวิทยาลัยแคลิฟอร์เนียเบิร์กเลย์ ความสามารถในเชิงฐานข้อมูลเยอะกว่า MySQL ด้วย เลือกใช้ได้ทั้งคู่แล้วแต่ถนัดครับ



P ตัวสุดท้าย มาจาก Perl/PHP/Python หมายถึงภาษาที่ใช้พัฒนาเว็บไซท์นั่นเอง ทั้งสามตัวเป็นภาษาสคริปต์ เขียนง่าย โค้ดจะสั้นๆ ไม่ซับซ้อน ส่วนมากใช้เรียกข้อมูลจากฐานข้อมูล MySQL หรือ PostgreSQL แล้วนำมาแสดงผลเป็น HTML เพื่อให้ได้เว็บไซท์แบบไดนามิก เดิมที Perl ได้รับความนิยมมาก่อน ปัจจุบันตลาดหันมาใช้ PHP เพราะเขียนง่ายกว่า และออกแบบมาสำหรับการทำเว็บโดยเฉพาะ (PHP ย่อมาจาก Personal Home Page) ส่วน Python เป็นภาษาใหม่ที่กำลังรุ่ง เพราะเขียนง่าย มีประสิทธิภาพสูง ทั้งสามตัวมากับลินิกซ์แทบทุกยี่ห้อเหมือนกัน ถ้าใครใช้วินโดว์ก็สามารถดาวน์โหลดมาใช้งานได้ฟรีๆ มีหนังสือภาษาไทยสอนการเขียน Perl/PHP เพื่อทำเว็บหลายสิบเล่มในท้องตลาด เลือกใช้งานได้ตามถนัดเช่นกันครับ (ถ้าไม่รู้ว่าจะเลือกอะไร ก็แนะนำ PHP ครับ ง่ายดี)



รู้จัก LAMP ครบทั้ง 4 ตัวไปแล้ว เมื่อมีตัวซอพท์แวร์แล้ว เว็บไซท์จะไปรุ่งหรือเปล่า อันนี้ต้องขึ้นกับ”คนดูแล”เว็บไซท์แล้ว ว่าจะทำงานกับโปรแกรมพวกนี้ได้ดีขนาดไหน ซึ่งก็ต้องอาศัยการฝึกฝนอยู่บ้าง ในอินเทอร์เน็ตมีคู่มือสอนการใช้งาน LAMP มากมาย (สามารถค้นหาด้วยคำว่า LAMP ได้เลย เพราะกลายเป็นคำสามัญไปแล้ว) หนังสือภาษาไทยมีหลายเล่มเช่นกัน ที่สอนใช้โปรแกรมในตระกูลนี้ ถ้ามีปัญหาก็มีชุมชนนักพัฒนาเว็บไซท์ด้วย LAMP อีกมากที่คอยให้ความช่วยเหลือเราได้ ขอให้ประสบความสำเร็จในการตั้งเว็บครับ

ตอนที่แล้วเขียนเรื่อง LAMP ตะเกียงวิเศษของนักพัฒนาเวบไซต์ มีผู้อ่านหลายท่านแนะนำมาครับ ว่าถ้าจะให้ครบเครื่องจริงๆ ต้องเพิ่มตัว S เข้ามาอีกตัวหนึ่ง โดยมาจาก SSL (Secure Socket Layer) ซึ่งเป็นเทคโนโลยีด้านการเข้ารหัส จะได้เป็น LAMPS ชุดเครื่องมือที่เหมาะกับเวบไซต์เชิงพาณิชย์ (เช่น อีคอมเมิร์ซ เป็นต้น) แต่นอกจาก SSL แล้วยังมีแนะนำมาอีกหลายตัวครับ แต่ละตัวเป็นโปรแกรมที่ได้ยินบ่อยในวงการโอเพ่นซอร์ส ผมเลยถือโอกาสแนะนำโปรแกรมที่ขึ้นต้นด้วยตัว S ซะคราวนี้เลย



SSL อันนี้คือเจ้าของตัว S ในคำว่า LAMPS (Linux, Apache, MySQL, Perl/PHP/Python และ SSL) SSL ย่อมาจากคำว่า Secure Socket Layer เป็นโปรโตคอลด้านการเข้ารหัสข้อมูลที่เริ่มโดยบริษัท Netscape Communications ผู้สร้างเวบบราวเซอร์ Netscape Navigator สร้างขึ้นเพื่อให้ผู้ใช้งานเวบที่ต้องการความปลอดภัยของข้อมูลค่อนข้างสูง เช่น ซื้อของผ่านเวบไซต์ ได้มีหลักประกันว่า ถ้าเกิดแฮคเกอร์ดักข้อมูลสำคัญๆ อย่าง หมายเลขบัตรเครดิตไปได้ ก็จะไม่สามารถอ่านหมายเลขนั้นได้เพราะมีการเข้ารหัสไว้



ปัจจุบัน SSL กลายเป็นมาตรฐานของการเข้ารหัสข้อมูลผ่านเวบแล้ว เวบไซต์อีคอมเมิร์ซจำนวนมากต่างเข้ารหัสข้อมูลการสั่งซื้อเป็น SSL รวมถึงเวบไซต์ดังๆ อย่าง Amazon หรือ eBay วิธีการสังเกตว่าเวบไซต์ไหนมีการเข้ารหัสแบบ SSL ให้ดูที่ Statusbar ของบราวเซอร์ครับ ถ้าเป็นรูปแม่กุญแจล็อกอยู่ หรือดู URL ว่าขึ้นต้นด้วย https:// แทนที่จะเป็น http:// (s มาจาก secure) แสดงว่าตอนนั้นคุณใช้งาน SSL อยู่นั่นเอง



Squid โปรแกรม Squid ที่แปลว่าปลาหมึกตัวนี้ เป็นพร็อกซี่เซิร์ฟเวอร์ครับ ต้องอธิบายคำว่า พร็อกซี่ (proxy) ก่อน ตามปกติแล้ว ถ้าเราเรียกข้อมูลจากเวบไซต์สักแห่ง เวบไซต์นั้นจะส่งข้อมูลมายังเครื่องคอมพิวเตอร์ของเราโดยตรง ซึ่งจะเกิดปัญหาว่า ถ้าเราต้องการเรียกดูเวบไซต์เดิมอีกครั้ง เราจำเป็นต้องขอข้อมูลจากเวบไซต์นั้นใหม่ ทำให้เปลืองแบนด์วิธขององค์กร ด้วยเหตุนี้จึงเกิดแนวคิดเรื่องพร็อกซี่ขึ้น โดยพร็อกซี่จะทำหน้าที่เป็นตัวกลางระหว่างเครื่องของเรากับเวบไซต์นั้น เมื่อเราเรียกอ่านเวบไซต์ครั้งหนึ่งแล้ว ข้อมูลจะถูกเก็บไว้ในพร็อกซี่เซิร์ฟเวอร์ พอเรียกดูครั้งที่สอง จะเป็นการเรียกข้อมูลจากพร็อกซี่เซิร์ฟเวอร์ ทำให้ประหยัดเวลาและแบนด์วิธไม่ต้องเรียกไปถึงตัวเวบไซต์จริงครับ ปัจจุบันเกือบทุกองค์กรและทุก ISP มีการทำพร็อกซี่เพื่อเก็บข้อมูล ซึ่งโปรแกรมพร็อกซี่โอเพ่นซอร์สที่ได้รับความนิยมสูงสุดก็คือ Squid นั่นเอง (http://www.squid-cache.org)



Samba เป็นโปรแกรมที่ช่วยในการแชร์ไฟล์หรือพรินเตอร์ผ่านเครือข่าย ชื่อ Samba มาจากการอ่านตัวย่อโปรโตคอลในการแชร์ไฟล์ของไมโครซอฟท์ที่เรียกว่า SMB (Server Message Block) เดิมที Samba มีชื่อว่า smbserver แต่โดนปัญหาเรื่องชื่อทางการค้าไปซ้ำกับคนอื่น เลยเปลี่ยนเป็น Samba นี่ล่ะครับ ลินิกซ์เครื่องที่ติดตั้ง Samba ไว้ เราสามารถมองเห็นได้ผ่าน Network Neighborhood ของวินโดว์สได้เหมือนกับแชร์เครื่องวินโดว์สเลย ปัจจุบัน Samba กำลังจะออกรุ่น 3.0 อยู่รอมร่อแล้ว เวบไซต์อยู่ที่ www.samba.org



SSH ชื่อคล้ายกับ SSL เลยนะครับ SSH ย่อมาจาก Secure Shell เป็นโปรโตคอลอีกตัวหนึ่งเหมือนกัน เอาไว้ควบคุมเครื่องคอมพิวเตอร์ที่อยู่ที่อื่น โดยเราสามารถใส่คำสั่งให้คอมพิวเตอร์เครื่องนั้นได้ผ่านคอมมานด์ไลน์ หลายคนอาจจะเคยได้ยินคำว่า telnet ที่เป็นหน้าจอสีดำตัวหนังสือสีขาวและมีแต่ตัวหนังสือ อันนั้นเป็นต้นตระกูลของ SSH ล่ะครับ เพียงแต่ telnet นั้นไม่สนับสนุนความปลอดภัยของข้อมูล ถ้าเกิดเราป้อนรหัสผ่านทาง telnet มีโอกาสที่จะถูกดักรหัสไปได้ง่าย telnet จึงพัฒนามาเป็น SSH ที่มีการเข้ารหัสของข้อมูล โปรแกรม SSH ปรากฏในหนังเกี่ยวกับแฮคเกอร์หลายเรื่อง อย่างเช่น Matrix Reloaded ครับ