จากคราวที่แล้วที่ผมเริ่มอยากจะเอาจริงกับภาษาไพธอนแล้ว ผมก็เริ่มที่จะมองหาโปรเจคทำ ซึ่งผมคิดว่าการเรียนรู้ภาษาใดๆ โดยเริ่มจากการเรียนรู้จากการทำโปรเจคทำให้เราสามารถเรียนรู้ภาษานั้นได้เร็วกว่าการที่เรามานั่งอ่านหนังสือแล้วทำตามตัวอย่าง ซึ่งอาจทำให้เกิดการเบื่อหน่ายได้ง่ายๆ สุดท้ายก็อาจจะจบด้วยการล้มเลิกลงกลางคัน
โดยส่วนตัวแล้ว ผมค่อนข้างที่จะถนัดการเขียนโปรแกรมแนว web base ซะมากกว่า windows base วันนี้ผมก็เลยตั้งใจว่าจะทำการ config apache web server ให้สามารถเข้าใจตัวแปลภาษา python สักหน่อย เพื่อที่เราจะได้ลองเขียนภาษา python ให้สามารถทำงานบนเว็บ page ได้ ตอนแรกนั้นผมพยายามที่จะติดตั้งโมดูลตัวหนึ่งที่ชื่อ mod_python แต่ก็ไม่สามารถทำได้สักที
Mod_python คือ โมดูลที่เอาไว้สำหรับรวมต้วแปลภาษาไพธอนเข้ากับเว็บเซอร์วิส (ในที่นี้คือ Apache) ซึ่งจะทำให้เราสามารถเขียนเว็บ CGI ด้วยภาษาไพธอนได้นั่นเอง
หลังจากที่ได้พยายามนานมากหมดไปครึ่งวัน ทั้ง search หาในอินเตอร์เนต ก็พบว่าฝรั่งเค้าก็มีปัญหาเหมือนๆกันกับเรา ปัญหาที่เจอก็คือหลังจากติดตั้งโมดู mod_python นั้น เราไม่พบไฟล์ mod_python.so ซึ่งจริงๆไฟล์นี้น่าจะไปอยู่ใน folder C:\AppServ\Apache2.2\modules ซึ่งในตอนติดตั้งมันก็ถามเราอยู่นะ ว่า folder ที่เราติดตั้ง Apache อยู่ตรงไหน แต่ไหงพอเลือกแล้ว พี่แก error ขึ้นมาเฉยๆ เซ็งเลย
สุดท้ายก็มาจบที่วิธีที่ง่ายมากๆ (เวงกรรม แล้ว mod_python ใครคนคิดขึ้นมาเนี่ย!!!) แค่ติดตั้ง python เสร็จ แล้วเข้าไป config ที่ไฟล์ httpd.conf แค่เนี้ย
AddHandler cgi-script .cgi .py .pl
ScriptAlias /cgi-bin/ "c:/apache/cgi-bin/"
แล้วก็เขียน code ด้วย python ขึ้นมาแล้วไปวางไว้ที่ C:\AppServ\www\cgi-bin (เค้าบอกว่าด้วยเหตุผล security)
#!C:\Python24\python.exe -u
import cgi
import cgitb; cgitb.enable() # for troubleshootingprint "Content-type: text/html"
print """
<html><head><title>Sample CGI Script</title></head>
<body>
<h3> Sample CGI Script </h3>
"""form = cgi.FieldStorage()
message = form.getvalue("message", "(no message)")print """
<p>Previous message: %s</p>
<p>form
<form method="post" action="index.cgi">
<p>message: <input type="text" name="message"/></p>
</form></body>
</html>
""" % message
แล้วก็ทดลอง run ดู
เอาหล่ะ ก็พอได้แนวคิดแล้ว ต่อไปก็ลองๆประยุกต์เอาโค๊ดที่เราเคยเขียนด้วยภาษาอื่น มาแปลงเป็น python ดู น่าจะช่วยให้เกิดความเข้าใจยิ่งขึ้นไปอีก สู้ๆๆ เดี๋ยวก็เขียนเป็นแหละ อย่าไปกลัวๆ
เพิ่มเติมอีกนิดครับ
หากเพื่อนๆต้องการที่จะ config apache เพื่อให้เราสามารถที่จะบันทึกไฟล์ python cgi script อยู่นอก cgi-bin ให้ทำการปรับแต่งไฟล์ httpd.conf ดังนี้
- ให้ทำการมองหา #AddHandler cgi-script .cgi แล้วเอา comment ออก คือเครื่อง “#” ออกนั่นเอง
- แล้วทำการปรับแต่ง SSL เพื่อให้สามารถวาง directory โค๊ดของเราที่ก็ได้ใน www directory โดยมองหาบรรทัดนี้ #AddType text/html .shtml และบรรทัดนี้ #AddOutputFilter INCLUDES .shtml โดยให้เราเอาเครื่องหมาย comment ออก “#”
- ทำการบันทึกไฟล์ httpd.conf แล้ว restart apache
- ทดลอง เขียนไฟล์ cgi แล้ว save แล้วลองทดสอบที่ browser ดูครับ
#!C:\Python24\python.exe
print "Content-Type: text/html\n\n"
print "Hello, world!"
ถ้าปรากฏแต่คำว่า Hello, World! แสดงว่าสำเร็จแล้วครับ
“….The first step is always the hardest
การเริ่มต้นทำสิ่งใดสิ่งที่ยากที่สุดก็คือตอนเริ่มต้นทำ…….”
1 ความคิดเห็น:
Python นีั่เราต้องเขียน Response Header เองด้วยหรอคับ
Post a Comment