ปูพื้นฐาน
cgi - perl
ผมก็ศึกษามาพักหนึ่งแล้วเหมือนกัน
กับเจ้า cgi โดยผมมุ่งไปที่ภาษา perl นะครับ ทีนี้มาพูดกันถึงขอบข่ายของบทความ
นี้กันก่อนว่าจะกว้างมากน้อยขนาดไหน ขอบข่ายจะอยู่ที่ว่า การทำงานของระบบอินเทอร์เน็ตเวลาท่านดูเวป
แล้วเมื่อมี
เจ้า cgi เข้ามาช่วยแล้วจะทำให้เกิดผลอย่างไร มีข้อดีกว่าระบบเดิมอย่างไร
จากนั้นก็จะเสริมเรื่องระบบไฟล์บน unix ให้
อีกนิดหน่อย เพื่อจะได้เข้าใจว่าเจ้า cgi ที่เขียนด้วย perl นี้มันทำงานยังไง
พอพูดจบก็เริ่มกันเลยดีกว่า ไปดูรูปแรกกัน
รูปแรกก็คือการทำงานทั่วๆไปของระบบ
Client/Server ระบบนี้ก็ไม่ได้อยู่ห่างไกลอะไรจากท่านเลย ก็เจ้า
Browser ที่ใช้ดู
เวปอยู่นี่เองเป็น Client ตัวหนึ่งที่ติดต่อไปหา Web Server เพื่อดูเอกสาร
ตามปกติแล้วเอกสารที่ท่านเอาไปใส่ไว้บนเวป
นั้นก็จะต้องเกิดจากการสร้างขึ้นมาก่อนแล้ว Upload ไปใส่ไว้บน Web
Server เอกสารที่อยู่บน Web Server นั้นจะ
สามารถดูได้อย่างเดียว ทำให้ผู้คนที่เข้ามาดูก็ไม่สามารถทำการแก้ไขอะไรได้
หากว่าเปิดอณุญาติให้ใครก็ได้มาแก้ไข
ข้อมูลที่อยู่บนเวปก็จะไม่เหมาะสม เพราะจะไปทราบได้อย่างไรว่าคนที่เข้ามาดูประสงค์ดีหรือร้าย
จึงเกิดแนวคิดที่ว่า
น่าจะมีตัวกลางที่สามารถอณุญาติให้ผู้ที่เข้ามาชมเวปไซท์สามารถสั่งการให้แก้ไขข้อความหรือตัวเวปได้
โดยที่เจ้าของ
เวปไซท์ได้เตรียมการไว้ก่อนล่วงหน้าให้ผู้เข้าชมมีสิทธิ์แก้ไขหรือเพิ่มข้อความเข้าไปได้ตามที่เขียนเอาไว้
ทำให้เป็นจุด
เริ่มต้นของระบบ cgi นั่นเอง
รูปที่สองคือ
Web Server ที่ได้ใช้ระบบ cgi เข้ามาช่วย จะเห็นได้ว่าผู้เข้าชมทุกคนสามารถสั่งให้
cgi ทำงาน โดยที่ cgi จะ
ทำงานตามข้อกำหนดที่เจ้าของเวปไซท์สร้างขึ้นไว้ก่อน เอกสารก็จะสามารถเปลี่ยนแปลงไปได้ตามที่ผู้เข้าชมสั่งการ
ตัวอย่างที่เห็นได้ชัดก็คือ WebBoard นั่นเอง จะเห็นว่ามีการสร้างเอกสารขึ้นใหม่เมื่อผู้ชมสั่ง
Post Message เข้าไป และ
ผู้ชมก็ไม่สามารถทำอะไรได้มากไปกว่าใส่ข้อความเข้าไปตามช่องที่ผู้จัดทำเวปไซท์ได้เตรียมไว้ล่วงหน้า
เมื่อพอเข้าใจแล้วว่า
cgi มันทำงานเพื่ออะไร ก็มามองถึงว่าแล้วเจ้าคำสั่งต่างๆนั่นมันจะทำงานเมื่อไหร่
ตัว cgi เองนั้น
ที่จริงเป็นเพียงแค่หลักการที่ได้อธิบายข้างต้น แต่เมื่อเราจะเขียน
cgi นั้นก็จะต้องพิจารณาถึงภาษาที่จะนำมาใช้งาน
ในปัจจุบันก็มีหลายภาษา หลายรูปแบบ เช่น perl , c++ , asp , php
เป็นต้น ผมจะเน้นที่ perl เท่านั้นนะครับ เมื่อเลือก
ภาษาได้แล้วก็จะต้องเขียนคำสั่งในภาษานั้นๆและนำไปใส่ไว้บน Web Server
เพื่อให้ผู้เข้าชมสามารถเรียกใช้งานได้
ไฟล์ที่เอาไปใส่ไว้บนเวปไซท์ตามปกตินั้นจะเป็นไฟล์อ่านอย่างเดียว
แต่ไฟล์ที่เป็น cgi จะต้องกำหนดให้ execute ได้
หรือเรียกภาษาชาวบ้านว่า run ได้นั่นเอง ซึ่งภาษา perl มาตรฐานเดิมเลยใช้งานบน
unix จึงมีการกำหนดให้ execute ได้
ด้วยการใช้คำสั่งบน unix ที่เรียกว่า chmod มาจาก change mode ลักษณะไฟล์บน
unix เมื่อท่านเข้าไปใน unix
ด้วยโปรแกรม Telnet แล้วให้ใช้คำสั่ง ls -l ท่านจะเห็นปรากฏดังตัวอย่างนี้
[yoz@serv4
public_html]$ ls -l
total 28
drwxr-xr-x 5 yoz tadvice 4096 Mar 30 06:38 articles
drwxr-xr-x 3 yoz tadvice 4096 Apr 10 01:05 board
drwxr-xr-x 2 yoz tadvice 4096 Apr 1 00:51 cgi-bin
-rw-r--r-- 1 yoz tadvice 1170 Apr 10 07:30 copyright.html
drwxr-xr-x 2 yoz tadvice 4096 Apr 14 00:56 images
-rw-r--r-- 1 yoz tadvice 6126 Apr 13 23:04 index.html
[yoz@serv4 public_html]$ |
จากตัวอย่างจะเห็นด้านหน้าของแต่ละบรรทัดมีตัวอักษรอยู่
จะแบ่งออกเป็นกลุ่มๆ ตามตัวอย่างนี้ drwxr-xr-x
เมื่อแบ่งกลุ่มออกตามนี้ d rwx r-x r-x ตัวแรก d หมายถึง directory
ถ้าเป็นไฟล์ข้อมูลจะเป็น - ต่อมาอีกสาม
กลุ่มจะมีรูปแบบเป็น rwx โดยที่กลุ่มซ้ายมือเป็นของ user คือเจ้าของไฟล์
กลุ่มกลาง r-x คือของ group และกลุ่มขวามือ
r-x เป็นของกลุ่ม other หรือผู้ใช้อื่นๆ
เมื่อต้องการทำให้ไฟล์
cgi สามารถทำงานได้จะต้อง chmod 755 ตามด้วยชื่อไฟล์ ผมก็จะได้อธิบายทีเดียวไปเลย
อาจจะ
เข้าใจยากหน่อยแต่อ่านหลายๆทีจะเข้าใจนะครับ ตัวอักษรที่แสดงในการดูไฟล์ที่อธิบายไปแล้วนั้น
มีความหมายดังนี้
r = 4 = read = ไฟล์สามารถอ่านได้
w = 2 = write = ไฟล์สามารถเขียนได้
x = 1 = execute = ไฟล์สามารถ
run ได้ |
การที่ไฟล์
run ได้ก็คือต้อง read ได้และต้อง execute ได้ จึงจะต้องให้อย่างน้อย
r-x
ซึ่งค่าของ r-x
ก็คือ 5 นั่นเอง
การ chmod เรียกด้วยตัวเลขสามหลัก โดย หลักแรกของ user หลักที่สองของ
group และหลักที่สามของ other เมื่อต้อง
chmod 755 จึงทำให้เกิดลักษณะของไฟล์ดังนี้ -rwxr-xr-x
อันที่จริงแล้วตัวเลขมาจากฐานสองนะครับ แต่แปลง
มาเป็นฐานสิบเพื่อให้เข้าใจง่ายและสามารถนำไปใช้ได้เลย