Internet & Web Application

mod_python เพื่อใช้งานร่วมกับ apache

เนื่องจาก ต้องการพัฒนา website ด้วยภาษา python จึงจำเป็นต้องใช้ module interpreter ‘mod_python’
เพื่อให้ apache สามารถประมวลผลภาษา python ในรูปแบบต่างๆได้

LoadModule python_module modules/mod_python.so

สำหรับรูปแบบ ดังกล่าว เพื่อการใน python ไป ‘generate’ html สามารถทำได้คือ

1. แทรก python code เข้าไว้ใน html -> file.psp เรียกว่า ‘python server page’ เช่น

<%
import time
weekday = time.strftime(‘%A’, time.localtime(time.time()))
message = ‘Hello World! This is a wonderful %s.’ % weekday
%>

<html><body>
<h2><%= message %></h2>
</html></body>

สำหรับการ setup apache : .htaccess หรือ httpd.conf ให้เพิ่ม

AddHandler mod_python .psp
PythonHandler mod_python.psp

PythonDebug On

การระบุ handler mod_python.psp มีข้อกำหนดระบุไว้ให้ทำตาม เหมือน PHP และ ASP

สามารถดูตัวอย่างการทำงานได้จาก web ที่มี code

<%
import time
weekday = time.strftime(‘%A’, time.localtime(time.time()))
message = ‘Hello World! This is a wonderful %s.’ % weekday
%>

<html><body>
<h2><%= message %></h2>
</html></body>

2. เรียกใช้งาน code python ให้ทำงานเหมือนเป็น CGI -> file.py

AddHandler mod_python .py
PythonHandler pyinfo

ตั้งไว้ว่า เมื่อใดก็ตามที่เป็น file.py ให้ไปเรียก pyinfo (.py) ขึ้นมาทำงาน โดยมองหา function ‘handler’

from mod_python import apache

def handler(req):
req.content_type = ‘text/plain’
req.send_http_header()
req.write(“Hello World!”)
return apache.OK

แต่ถ้าต้องการเรียกใช้ file.py ใดๆก็ได้ขึ้นทำงาน จำเป็นต้องอาศัย

AddHandler mod_python .py
PythonHandler mod_python.publisher

ซึ่งจำเป็นจต้องทำตามข้อกำหนดที่ได้เตรียมไว้สำหรับ mod_python.publisher ดังมีตัวอย่าง code ตัวอย่าง

s = “””\
<html><body>
<h2>Hello %s!</h2>
</body></html>
“””

def index():
return s % ‘World’

def everybody():
return s % ‘everybody’

3. แล้วทำอย่างไรจะใช้กับ Django

เราสร้าง project ใน Django ด้วย django-admin.py startproject testme

สามารถ setup apache ด้วย

SetHandler python-program
PythonHandler django.core.handlers.modpython

SetEnv DJANGO_SETTINGS_MODULE testme.settings
# PythonOption django.root //

PythonDebug On
PythonPath “[‘/home/meeseen/domains/meeseen.com/public_html/test_pymod/django/’, ‘/usr/lib/python2.4/site-packages/django/’] + sys.path”

ลองทดสอบดู

อ้างอิง

http://webpython.codepoint.net/mod_python_tutorial

http://www.modpython.org/live/mod_python-3.3.1/doc-html/contents.html

Advertisements
มาตรฐาน

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s