Tags:
Forums: 

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

Get latest news from Blognone
By: bow_der_kleine
WriterAndroidUbuntu
on 27 August 2008 - 16:14 #62553
By: preecha13 on 27 August 2008 - 18:25 #62559 Reply to:62553

ผมใ่ส่แบบนี้ที่ไฟล์ 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

Order deny,allow
Allow from all

By: preecha13 on 27 August 2008 - 18:27 #62560 Reply to:62553

มันแสดง 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.

By: bow_der_kleine
WriterAndroidUbuntu
on 27 August 2008 - 19:04 #62573 Reply to:62560
bow_der_kleine's picture

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


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

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


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

BioLawCom.De

By: preecha13 on 28 August 2008 - 11:45 #62721 Reply to:62573

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

  • 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

    Order deny,allow
    Allow from all

  • สร้าง 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
By: bow_der_kleine
WriterAndroidUbuntu
on 28 August 2008 - 18:25 #62809 Reply to:62721
bow_der_kleine's picture

เอาปัญหาแรกก่อนครับ คือ 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

By: preecha13 on 29 August 2008 - 11:24 #62957 Reply to:62809

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


LoadModule wsgi_module modules/mod_wsgi.so

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

SetHandler wsgi-script
Options +ExecCGI

AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all

ส่วน 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 มันอ่านยากนะครับ อิอิ

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

By: bow_der_kleine
WriterAndroidUbuntu
on 29 August 2008 - 20:34 #63018 Reply to:62957
bow_der_kleine's picture

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

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

By: preecha13 on 30 August 2008 - 08:14 #63058 Reply to:63018

เห็นด้วยอย่างยิ่งครับกับคำว่าเขียนเป็น 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 เรื่องของความเสถียรหายห่วงได้เลยครับ

ขนาดผู้จัดการฝ่ายไอทีที่ศูนย์หนังสือจุฬาฯพี่แกยังออกปากเลยว่าเสถียรดีจริงๆ
By: kowito2
Android
on 5 January 2009 - 14:39 #78786 Reply to:63058

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

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

By: preecha13 on 28 August 2008 - 11:49 #62722

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

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

By: six6sick
Ubuntu
on 29 August 2008 - 20:53 #63021

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

By: bow_der_kleine
WriterAndroidUbuntu
on 29 August 2008 - 22:25 #63034 Reply to:63021
bow_der_kleine's picture

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

BioLawCom.De

By: sugree
FounderWriterAndroidBlackberry
on 1 September 2008 - 11:50 #63208 Reply to:63021
  • cgi ยุคใหม่
  • fcgi ที่เป็นมาตรฐานมากขึ้น
By: six6sick
Ubuntu
on 29 August 2008 - 22:27 #63022

ซ้ำ