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.
ผมไม่รู้เหมือนกันครับ ว่าปกติเขาเรียกว่าอะไร เรียกว่า middle ware ได้หรือเปล่า แต่มันเป็นตัวเชื่อมระหว่าง web server กับ ตัวโปรแกรมที่เราเขียนครับ คือ มันจะเอาผลจากการรันโปรแกรมไปให้ web server โดยไม่ต้อง start up โปรแกรมทุกครั้ง ที่มี request ครับ
Webpy + Apache with mod_wsgi
Webapplication technologies
BioLawCom.De
ผมใ่ส่แบบนี้ที่ไฟล์ 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
มันแสดง 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
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
เอาปัญหาแรกก่อนครับ คือ 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"
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 ยังไม่เยอะพอนะครับ
ไม่มีภาษาเขียนโปรแกรม หรือเครื่องมือชิ้นไหนสมบูรณ์แบบครับ
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 บางตัวด้วยซ้ำ
Directory D:/python/python_test/web/wp001/
Order deny,allow
Allow from all
/Directory
วงเล็บหายครับตรง Directory ทั้งๆ ที่พิมพ์แล้วหายเฉยเลย
เจ้า wsgi มันคืออะไรหรอครับ เข้าไปอ่านใน web wsgi.org แล้วก็ยังงงๆ
ผมไม่รู้เหมือนกันครับ ว่าปกติเขาเรียกว่าอะไร เรียกว่า middle ware ได้หรือเปล่า แต่มันเป็นตัวเชื่อมระหว่าง web server กับ ตัวโปรแกรมที่เราเขียนครับ คือ มันจะเอาผลจากการรันโปรแกรมไปให้ web server โดยไม่ต้อง start up โปรแกรมทุกครั้ง ที่มี request ครับ
BioLawCom.De
ซ้ำ