Common Gateway Interface


Web Application ในยุคเริ่มต้น ต้องเขียน 2 ส่วนคือ HTML และ CGI
• HTML หรือ Hypertext Markup Language ใช้แสดงผล
• CGI หรือ Common Gateway Interface ใช้อ่านเขียนฐานข้อมูลและจัดการกับ Cookie
CGI สามารถเขียนด้วยภาษาอะไรก็ได้ เขียนได้ทุกภาษา ภาษา C, Perl, Shell Script หรือ BASH บทความนี้จะใช้ BASH เขียน CGI บน Ubuntu ซึ่งจะช่วยให้เข้าใจหลักการทำงานของระบบ Ecosystem มากขึ้น
เริ่มต้นจากการติดตั้ง Apache รุ่น 2
sudo apt install apache2
เปิด Web Browser เข้าไปที่ IP Address เช่น
http://123.123.123.123
จะเห็นหน้า Default ของ Apache
จากนั้นลบและสร้าง หน้าใหม่ขึ้นมา
sudo rm /var/www/html/index.html
sudo vi /var/www/html/index.html

เขียน HTML ง่ายๆ ลงไป เช่น
<button>Shop</button>

HTML ใช้แสดงผลได้อย่างเดียว ถ้าจะอ่านฐานข้อมูล เอาสินค้าขึ้นมาให้ผู้ใช้เลือก ในยุคแรกต้องเขียน Code เป็น CGI เท่านั้น
เริ่มจากเปิดใช้ CGI Module และ Restart Apache
sudo a2enmod cgi
sudo service apache2 restart
คำสั่ง a2enmod ย่อมาจาก Apache2 Enable Module
จากนั้นหาว่า BASH อยู่ที่ไหน เพราะแต่ละระบบเก็บไว้ไม่เหมือนกัน
which bash
ได้ผลลัพธ์ เช่น
/usr/bin/bash

สร้าง CGI ขึ้นมาใน /usr/lib/cgi-bin
sudo vi /usr/lib/cgi-bin/main
จากนั้นเขียน CGI ง่ายๆ อย่าลืมใส่บรรทัดแรกให้ตรงกับ BASH ที่ใช้อยู่
#!/usr/bin/bash
echo "Content-Type: text/html"
echo ""
echo "<button>First</button>"
for i in {1..5}
do
	echo "<button>${i}</button>"
done
echo "<button>Last</button>"

เปลี่ยน Mode ให้เป็น Executable
sudo chmod +x /usr/lib/cgi-bin/main

ทดสอบการใช้งาน
/usr/lib/cgi-bin/main

และลองเปิด CGI ผ่าน Web Browser เช่น
http://123.123.123.123/cgi-bin/main