ถ้าเราไว้ใจกันได้ ก็จะสามารถให้บริการได้เพิ่มขึ้น กรณีของการใช้โปรแกรม CGI นี้ก็เช่นกัน โดยปกติแล้วใครจะใช้โปรแกรม CGI บน server ใด จะต้องขออนุญาตให้ admin ดำเนินการให้ โดย admin จะต้องพิจารณาก่อนว่าโปรแกรม CGI นั้นๆ มีอันตรายต่อระบบหรือไม่ โดยเมื่อเห็นสมควรแล้วก็จะนำโปรแกรม CGI นั้นไปติดตั้งไว้ใน directory ของโปรแกรม CGI กลาง ในกรณีของลีนุกซ์บูรพาก็เช่นกัน เรายึดถือหลักความปลอดภัยไว้ก่อน ดังนั้นการตั้งค่า default ของการให้บริการโปรแกรม CGI ก็คือจะต้องผ่านการพิจารณาจาก admin ก่อน อย่างไรก็ตาม ในหลายๆ โอกาส เราไม่มีความจำเป็นจะต้องยึดหลักความปลอดภัยในระดับที่กล่าว บุคคลในองค์กรเดียวกัน น่าจะไว้วางใจกันได้ การอนุญาต ให้ผู้ใช้แต่ละคน สามารถรันโปรแกรม CGI ของตนเอง ใน home directory ของตนเองได้ น่าจะเป็นบริการที่สร้างความประทับใจแก่ผู้ใช้มากยิ่งขึ้น บทความนี้ จะอธิบายถึงวิธีการที่ผู้ดูและระบบการให้บริการ web ที่ติดตั้งจาก BLCD2 ทำการแก้ไขข้อมูลในแฟ้มโครงสร้างระบบบางแฟ้ม และวิธีการที่จะควบคุมโปรแกรมที่ใช้เป็น web server ด้วย อย่างไรก็ตาม จะได้กล่าวถึงข้อมูลพื้นฐานที่ควรจะทราบก่อนไว้ด้วย
ซอฟต์แวร์ ที่ใช้สำหรับ web server ในลีนุกซ์บูรพา ที่ติดตั้งจาก BLCD2 นี้คือ Apache HTTP Server รุ่น 1.3 โดยหลังจากที่ท่านทำการติดตั้งระบบแล้ว จะมีคู่มือการใช้งานที่สมบูรณ์พร้อมอยู่บน server นั้น ในกรณีที่ท่านต้องการรายละเอียดเพิ่มเติม สามารถเรียกดูได้ ณ ที่นั้น ในบทความนี้จะกล่าวถึงเฉพาะที่จำเป็นเท่านั้น
ในลำดับแรกจะขอแนะนำให้รู้จักกับแฟ้ม /etc/rc.d/rc.httpd ซึ่งเป็นแฟ้มที่บรรจุข้อมูล เกี่ยวกับการควบคุม Apache Web Server เมื่อเริ่มต้นระบบใหม่ โดยปกติแล้วจะมี content ดังนี้
/usr/local/apache/bin/apachectl start
จะเห็นได้ว่าเป็นการเรียกใช้คำสั่งเพื่อที่จะเริ่มต้นการทำงานของ Apache server โดยยังมี parameters ของการใช้คำสั่ง apachectl อื่นๆ อีกได้แก่ stop, restart, fullstatus, status, graceful, configtest และ help โดย root จะต้องเป็นผู้รันคำสั่งนี้ จึงจะบรรลุผล เช่น หากต้องการงดการให้บริการ web ชั่วคราว root จะต้องเรียกใช้คำสั่ง /usr/local/apache/bin/apachectl stop เป็นต้น
นอกจากนั้น Apache ยังมี directory ของตนเองอยู่ที่ /usr/local/apache ภายในยังประกอบไปด้วย directories ต่างๆ ได้แก่ bin, conf, icons, libexec, man, cgi-bin, htdocs, include, logs และ proxy โดย cgi-bin จะเป็นที่สำหรับเก็บโปรแกรม CGI ของระบบดังได้กล่าวถึงไว้ก่อนหน้านี้
ภายใน /usr/local/apache/htdocs เป็นที่สำหรับเก็บ web pages ของระบบ ซึ่งรวมถึง index.html ที่ใช้เป็นแฟ้มเริ่มต้น เมื่อมีการเรียกใช้บริการจาก server อย่างไรก็ตามค่า default ของลีนุกซ์บูรพา อนุญาตให้ผู้ใช้ทั่วไป สร้าง web pages ของตนเองที่ home directory ภายใต้ sub-directory ชื่อ public_html ได้อยู่แล้ว ที่ไม่ได้กำหนดอนุญาตไว้ในค่า default คือสิทธิที่จะรันโปรแกรม CGI ภายใต้ home directory ของตนเอง กรณีนี้จะต้องเข้าไปแก้ไขแฟ้มใน /usr/local/apache/conf ซึ่งจะประกอบด้วย sub-directories ที่เกี่ยวข้องกับโครงสร้างต่างๆ เช่น access.conf , srm.conf, httpd.conf และ mime.types เป็นต้น หลายแฟ้มก็มีไว้เพื่อเพียงให้ compatible กับ Apache ในรุ่นก่อนๆ ในรุ่นใหม่นี้ เราสามารถควบคุมโครงสร้างได้จากแฟ้ม /usr/local/apache/conf/httpd.conf เพียงแฟ้มเดียว
ภายในแฟ้มจะเป็นข้อความอธิบายโครงสร้างของ Apache และคำสั่งที่ใช้ควบคุม Apache หรือที่เรียกว่า Apache Directives ท่านที่ต้องการศึกษาในรายละเอียดสามารถศึกษาได้จาก
http://localhost/manual/mod/directives.html ในบทความนี้จะกล่าวถึงเฉพาะส่วนที่เกี่ยวข้องเท่านั้น
ในลำดับนี้จะขอแนะนำให้รู้จักกับ AddHandler directive ซึ่งมีหน้าที่ที่จะ maps เอาส่วนขยายของชื่อแฟ้ม เข้ากับ handler-name ของ Apache ในกรณีของเรานี้ เรามีความต้องการที่จะ maps ให้ส่วนขยายของชื่อแฟ้มที่เป็นโปรแกรม CGI คือ .cgi เข้ากับ handler-name ชื่อ cgi-script โดยจะต้องเรียกใช้ directive นี้ในรูปแบบดังนี้
AddHandler cgi-script cgi โดยหากนำประโยดข้างบนนี้ไปไว้ในแฟ้ม srm.conf หรือ httpd.conf แล้ว ต่อไป Apache จะถือว่าแฟ้มที่มีส่วนขยายเป็น .cgi เป็นโปรแกรม CGI สำหรับในกรณีของเรา เราจะเลือกใช้ httpd.conf เพื่อการนี้
ในบาง directive มีลักษณะที่ต้องใช้คู่กันในลักษณะของ tag เปิด และ tag ปิด ดังเช่น
และ ที่เราจะทำความเข้าใจในที่นี้ ซึ่ง directive ในลักษณะเช่นนี้ ใช้สำหรับครอบ directives อื่นๆ ไว้ภายในได้อีก ในกรณีของ
/ นี้ ใช้เพื่อกำหนดคุณสมบัติต่าง ๆ เกี่ยวกับ directory ที่ระบุ ดังจะเห็นได้จากตัวอย่างต่อไปนี้
……
ในกรณีนี้เป็นการกำหนดให้ใช้เครื่องหมาย “~” แทน sub-directory ชื่อ public_html ภายใน home directory ของผู้ใช้ และถ้าหากในระหว่าง tag เปิดและปิดของ directive นี้ มี directives อื่นๆ ก็จะเป็นการกำหนดคุณสมบัติให้กับ directory ที่กำหนดไว้นั้นด้วย
มี directive สำคัญหนึ่งคือ Options directive ใช้สำหรับกำหนดคุณสมบัติให้กับ directory ที่กำหนด ซึ่ง parameters ของ Options มีได้หลากหลาย ได้แก่ All, ExecCGI, FollowSymLinks, Includes, IncludesNOEXEC, Indexes, MultiViews, SymLinksIfOwnerMatch ทั้งนี้หากท่านสนใจในรายละเอียด สามารถขอดูได้ที่
http://localhost/manual/mod/core.html#options ในที่นี้จะให้ความสนใจที่ ExecCGI ซึ่งหากนำไปกำหนดไว้ใน directory ใด ก็จะมีความหมายว่า จะอนุญาตให้มีการ execute โปรแกรม CGI ภายใน directory นั้นๆ
ในกรณี เราต้องการให้มีการ execute โปรแกรม CGI ภายใน sub-directory ชื่อ public_html ภายใน home directory ของผู้ใช้ ซึ่งกำหนดให้ใช้แทนด้วยเครื่องหมาย “~” ดังนั้นจึงต้องมีการเพิ่ม parameter ExecCGI ของ Options ณ directory ที่ต้องการให้มีการ execute โปรแกรม CGI
และสำหรับโปรแกรม CGI นั้น เราจะกำหนดให้มีส่วนขยายของแฟ้มเป็น .cgi ในกรณีหลังนี้เราสามารถกระทำได้โดยการ uncomment เพื่อให้ directive AddHandler ทำงาน โดยจะกระทำที่แฟ้ม httpd.conf ดังนี้
#
# To use CGI scripts:
#
AddHandler cgi-script .cgi สำหรับในกรณีของการจัดการในเรื่องอนุญาตให้มีการ execute โปรแกรม CGI ใน home directory ของผู้ใช้นั้น โดย default แล้ว มีการใช้ directive เพื่อกำหนดใช้ directory ตามที่ต้องการอยู่แล้ว เพียงแต่ ใน directive Options นั้น ยังไม่ได้กำหนดให้มี ExecCGI ตามที่ต้องการให้เป็น ดังนั้น ท่านสามารถกระทำได้โดยการเพิ่ม parameter นี้เข้าไปในบรรทัดของ directive Options ดังนี้
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
Order allow,deny
Allow from all
Order deny,allow
Deny from all
อยากอ่านอีกใช่มั๊ย ...
เชิญเลยที่นี่ ...
http://wiki.nectec.or.th/ntl/Main/Apache-doc
และที่นี่ครับ
http://www.msit.mut.ac.th/newweb/phpfile/show.php?Qid=765