ผมกำลังจะพัฒนาเว็บด้วย windowxp+apache+mod_wsgi+web.py
แต่ดัน config เจ้า apache กับ mod_wsgi ไม่เป็น
ติดตั้ง web.py ได้แล้วแต่ไม่รู้ว่าต้อง config เจ้า python อะไรเพิ่มเิติมหรือเปล่า
รบกวนด้วยครับ

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

ผมใ่ส่แบบนี้ที่ไฟล์ config ของ apache โดยเพิ่มต่อบันทัดสุดท้ายแล้วยัง รันไม่ผ่านครับ
โดยสร้าง code.py ตาม link ที่บอกแล้วครับ

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /appname "D:/python/python_test/web/wp001/code.py"

Alias /appname/static "D:/python/python_test/web/wp001/static"

AddType text/html .py

<Directory "D:/python/python_test/web/wp001/">
Order deny,allow
Allow from all
</Directory>

มันแสดง error ดังนี้

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@10.100.1.250 and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

รู้สึกแต่ละเวอร์ชั่นมันจะสร้าง wsgi-instance ไม่เหมือนกันครับ ตรงบรรทัดสุดท้าย ลองแบบนี้ดูครับ


application = web.wsgifunc(web.webpyfunc(urls, globals()))

นอกจากนี้ เวลา import มันจะมองไม่เห็นโมดูลที่อยู่ตรง local directory ครับ ต้องเพิ่มให้มัน


import sys
sys.path.append('/your/local/diroctory')

BioLawCom.De

ยังไ่ม่ได้ รายละเอียดโปรแกรมและการติดตั้งผมเป็นอย่างนี้นะครับผมเป็นอย่างนี้นะครับ

  • os=windowxp

  • python version Python 2.5.2 ติดตั้งไว้ที่ C:\Python25

  • download web.py-0.23.tar และแตกไปที่ D:\python\python_software\webpy\webpy เสร็จแล้ว
    Run คำสั่งข้างล่างนี้
    C:\Python25\python.exe D:\python\python_software\webpy\webpy\setup.py install

  • download apache_2.2.9-win32-x86-no_ssl-r2.msi ติดตั้งไปที่ C:\Apache2.2

  • download http://adal.chiriliuc.com/mod_wsgi/revision_878_2.0/mod_wsgi_py25_apache22/mod_wsgi.so
    copy ไฟล์ดังกล่าวไปเก็บไว้ที่ C:\Apache2.2\manual

  • Directory ที่ใช้เก็บ code.py เก็บไวัที่ D:/python/python_test/web/wp001

  • ทำการ config httpd.conf ของ apache ดังนี้ โดยการเพิ่มเข้าบรรทัดสุดท้าย
    LoadModule wsgi_module modules/mod_wsgi.so

    WSGIScriptAlias /appname D:/python/python_test/web/wp001/code.py/

    Alias /appname D:/python/python_test/web/wp001

    AddType text/html .py

    <Directory D:/python/python_test/web/wp001/>
    Order deny,allow
    Allow from all
    </Directory>

  • สร้าง code.py ดังนี้

import sys
import web

sys.path.append('D:/python/python_test/web/wp001')

/urls = ("/.", "hello")*/

class hello:
def GET(self):
return 'Hello, world!'

if name == "main":
app.run()

application = web.wsgifunc(web.webpyfunc(urls, globals()))

  • ทำการ start apache ใหม่ ที่ statusbar ของ Apache Service Monitor แสดงข้อความว่า
    Apache/2.2.9 (Win32) mod_wsgi/2.0 Python/2.5.2

  • เปิด IE แล้วพิมพ์ http://localhost:8080/appname/ กลับไปโชว์ไฟล์ที่มีอยู่ใน Directory นั้น เฉย

    // Index of /appname

    • Parent Directory
    • code.py
    • hello.py
    • hello.wsgi

เอาปัญหาแรกก่อนครับ คือ apache ยังหา script ไม่เจอ เพราะ Alias สองครั้งครับ


WSGIScriptAlias /appname D:/python/python_test/web/wp001/code.py/

Alias /appname D:/python/python_test/web/wp001

ต้องเอาบรรทัด Alias /appname D:/python/python_test/web/wp001 ออกครับ ไม่งั้นมันจะมอง dir นั้นเป็น static page คือว่า /appname โดน Alias ซ้อนกันสองครับ apache ก็เลยเอาค่าล่าสุด

เพิ่มเติมครับ เวลาขียนโค้ด ให้ใช้แทก <code> ด้วยครับ จะได้อ่านง่าย วงเล็บ <> ไม่หาย

BioLawCom.De

อ้อลอง hello world ได้แล้วครับ ผมทำอย่างนี้


LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /myapp "D:/python/python_test/web/wp001/code.py"

<Location /myapp >
SetHandler wsgi-script
Options +ExecCGI
</Location>

<Directory "D:/python/python_test/web/wp001">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

ส่วน code.py ผมเขียนอย่างนี้

import web

urls = ('/', 'index')

class index:
def GET(self):
print "Hello, world!"

if name == "main":
web.run(urls, globals())

application = web.wsgifunc(web.webpyfunc(urls, globals()))

ทดสอบเปิดดูด้วย firefox หรือ ie พิมพ์
http://localhost:8080/myapp/
ปรากฏ Hello, world! สุดยอดมากๆ เลยครับ เดียวต้องลองเขียนหาปัญหาอย่างอื่นมาเทียบดู
เพราะผมเองก็เคยลองมาหลายภาษาเหมือนกันครับ jsp,php,delphi,vb6,vb.net,c#.net,vfp
ที่ชอบที่สุดเป็น delphi เพราะโปรแกรมที่เขียน copy แล้วไปรันที่อื่นได้เลย แย่ที่สุดคือ vb6 เพราะมีปัญหาเรื่อง library ชนกันเป็นปัญหาใหญ่มากเพราะที่บริษัทผมเขาเจออยู่ตอนนี้
แต่ก็เปลี่่ยนภาษาไม่ได้ เพราะบุคลลากรส่วนใหญ่เป็น vb6 กันหมดให้เปลี่ยนคงลำบาก
แต่ delphi ก็แย่สำหรับผมอีกนั่นแหละเพราะมันแก้ปัญหาเรื่อง platform ไม่ได้เหมือน java
แต่ java ก็แย่อีกนั่นแหละเพราะพอเขียน GUI Application แล้ว supper ช้าเลย
แต่พอผมมาลอง python แล้วรู้สึกตอบโจทย์ในใจผมได้เยอะทีเดียวหรือเกือบร้อยเปอร์เซนต์แหละครับ
ข้อดีที่โดนใจใน python

  1. เขียน web ก็ได้
  2. เขียน GUI Application ก็ได้
  3. รันบน Linux หรือ BSD หรือ windows ก็ได้
  4. รูปแบบภาษาเป็นระเบียบ ผมเป็นคนขี้หงุดหงิดเวลาเจอ code ไม่เป็นระเบียบติดนิสัยต้องนั่งเรียงใหม่
    โดยเฉพาะถ้าเจอเพื่อนในทีมเขียนไม่เรียบร้อย เพราะผมรู้สึกว่ามันเขียนให้ตัวมันเองเข้าใจคนเดียว เพราะ code มันอ่านยากนะครับ อิอิ

    ข้อเสียที่ยังแก้ไม่ได้(เพราะผมเองแหละยังศึกษายังไม่หมดหรือยังไม่ถึงเพราะตอนนี้เน้นเว็บอยู่)

  5. เรื่อง GUI Application สำหรับ database ยังหา tool ไม่เจอครับตอนนี้
    เพราะผมกะจะทำโปรแกรมเป็นต้นแบบก็เลยพยายามหา tool อยู่ตอนนี้
  6. เมืองไทยยังหาบริษัทที่ใช้ python น้อยอยู่พูดง่ายๆ หางานที่เกี่ยวกับภาษานี้ยาก
  7. ตำรายังมีน้อย หมายถึงที่เป็นภาษาไทยนะครับ เท่าที่เห็นมีเล่มหนึ่ง
  8. ชุมชนคนใช้ python ยังไม่เยอะพอนะครับ

ไม่มีภาษาเขียนโปรแกรม หรือเครื่องมือชิ้นไหนสมบูรณ์แบบครับ

GUI Application สำหรับ database หากผมเข้าใจถูกต้อง คิดว่า Python ไม่น่าจะมี tool เพื่องานนี้โดยเฉพาะ ต้องเอาหลาย ๆ tools มาประกอบกัน เท่าที่สังเกต คุณ precha13 น่าจะมี GUI อยู่ในใจแล้ว นั่นคือ wxPython จริง ๆ ยังมีอีกสองตัวที่น่าสนใจ คือ PyQt กับ PyGTK ข้อดีข้อเสียต่างกันไป

ส่วนฐานข้อมูล Python มี ORM ให้เลือกหลัก ๆ สามตัวคือ SQL-Alchemy, SQL-Object, Elixir ข้อดีข้อเสียก็ต่างกันอีกเหมือนกัน

แต่การสร้าง App แนว ๆ นี้จะมีปัญหาตอนติดตั้งโปรแกรมบนเครื่องคนอื่นครับ เพราะต้องติดตั้ง Python+โมดูลต่าง ๆ ก่อน ถึงจะใช้งานโปรแกรมที่เราเขียนได้ มันไม่เนียนเหมือน Java หรือ Delphi ครับ ทางแก้คือใช้ py2exe แต่มันก็ไม่ 100% อยู่ดี

ดังนั้น หาก GUI ไม่หวือหวามาก ผมคิดว่าใช้ Web เป็น Interface น่าจะเขียนโปรแกรม และ maintenance ง่ายกว่า เพราะติดตั้งที่เครื่องเซิพเวอร์ครั้งเดียว ดูแลที่เดียว อีกทั้ง WebApp Framework พวก Django, TurboGears หรือ Pylons มันก็ไปไกลมาก ๆ แล้ว ทำให้ผมรู้สึกว่า เขียน WebApp ด้วย python ง่ายกว่า เขียน GUI-App เสียอีก

ส่วนเรื่องหางาน หากมีคนใช้น้อย ผมกลับมองว่าเป็นโอกาสครับ เพราะคู่แข่งน้อย แต่ผมว่าคงมีไม่กี่คนมั้งครับ ที่เปลี่ยนงาน เพราะอยากเขียน python หากอยากเขียน python ผมคิดว่านำไปเผยแพร่ในบริษัทที่ทำอยู่น่าจะดีกว่า เริ่มจากโปรเจคเล็ก ๆ ก่อน หากมันเวิร์ค พวกทำโปรเจคใหญ่คงสนใจกันเอง

BioLawCom.De

เห็นด้วยอย่างยิ่งครับกับคำว่าเขียนเป็น web ดีที่สุด เพราะว่า

  1. ก็อย่างที่บอกครับว่าดูแลง่าย เพราะผมเองเคยเขียนด้วย delphi ทำงานที่ software house
    ปัญหาใหญ่ก็คือ การติดตั้งทุกเครื่องที่จะใช้โปรแกรม (ถึงแม้จะมีข้อดีเรื่องจำกัด license ได้ง่าย)
    แต่ก็มีอันตรายเช่น โปรแกรมผมแก้บัก 1 จุด ต้องบอกให้ user หยุดงานทุกคนเพื่อติดตั้งโปรแกรมตัวใหม่ ไม่งั้นโปรแกรมจะเขียนข้อมูลลง database ผิดทันที อันนี้ซีเรียสมากเพราะมันเกี่ยวกับการเงิน ของเขาด้วย ถ้าเกิด User ดื้อ ทำงานในส่วนที่มีบัก โปรแกรมเมอร์ต้องมาไล่ process แก้ ฐานข้อมูลโดยตรงเลยอันแย่สุดๆ เลยครับ และด้วยเห็นผลนี้เองผมจึงเริ่มเขว มาทาง web มาขึ้น
  2. อายุการใช้งานนานกว่า GUI Application ธรรมดา เพราะ Client เปลี่ยน Version OS ไปเรื่อยๆ เห็น ได้จาก windows ไม่กี่ปีก็เปลี่ยนแล้วโปรแกรมที่พัฒนามาแทบตายต้องทำใหม่หรือ หรือ compile ใหม่ทันที แต่เป็น web สบายครับเพราะ Server ไม่ได้เปลี่ยนอะไรง่ายๆเพราะ อย่างเช่น ถ้ามันเป็น linux ขอแค่เพียงมันรู้สึกอุปกรณ์ตัวใหม่ลงตัวเดิมก็ใช้งานได้แล้ว และยิ่งเป็น UNIX,LINUX เรื่องของความเสถียรหายห่วงได้เลยครับ
    ขนาดผู้จัดการฝ่ายไอทีที่ศูนย์หนังสือจุฬาฯพี่แกยังออกปากเลยว่าเสถียรดีจริงๆ

ขอขุดกระทู้ข้ามปี

รู้สึกเช่นเดียวกันว่า WebApp น่าจะเหมาะกับการทำงานจริงๆมากกว่า เสียเวลา และดูแลรักษาง่ายกว่า การเปลี่ยนแปลงก็ทำได้ง่ายกว่ามาก แต่ก็ติดตรงที่ลูกค้ามักจะมีอคติกับ WebApp หลายๆคนมองมันเป้นเรื่องมองมือสมัครเล่น ทั้งที่ประสิทธิภาพมันดีกว่า App บางตัวด้วยซ้ำ

preecha13 Thu, 28/08/2008 - 11:49

Directory D:/python/python_test/web/wp001/
Order deny,allow
Allow from all
/Directory

วงเล็บหายครับตรง Directory ทั้งๆ ที่พิมพ์แล้วหายเฉยเลย

six6sick Fri, 29/08/2008 - 20:53

เจ้า wsgi มันคืออะไรหรอครับ เข้าไปอ่านใน web wsgi.org แล้วก็ยังงงๆ

bow_der_kleine Fri, 29/08/2008 - 22:25

In reply to by six6sick

ผมไม่รู้เหมือนกันครับ ว่าปกติเขาเรียกว่าอะไร เรียกว่า middle ware ได้หรือเปล่า แต่มันเป็นตัวเชื่อมระหว่าง web server กับ ตัวโปรแกรมที่เราเขียนครับ คือ มันจะเอาผลจากการรันโปรแกรมไปให้ web server โดยไม่ต้อง start up โปรแกรมทุกครั้ง ที่มี request ครับ

BioLawCom.De