ฉันจะใช้ Python กับ apache2 ได้อย่างไร


13

ฉันกำลังพยายามให้ Python ทำงานกับ Apache ได้ แต่ฉันล้มเหลวในการประสบความสำเร็จกับ CGI หรือ mod_python

ไม่มีใครรู้ว่าการสอนที่ดีหรืออะไร?

ขอบคุณ

คำตอบ:


17

mod_pythonเป็นพื้นไม่ใช่การบำรุงรักษา - mod_wsgiคุณควรมีลักษณะเป็น ติดตั้งแพคเกจlibapache2-mod-wsgiแล้วออกsudo a2enmod wsgiเพื่อเปิดใช้งาน

เป็นเพียงตัวอย่างด่วนในการใช้งานสิ่งต่างๆเช่นนี้ใน/etc/apache2/sites-enabled/default:

WSGIScriptAlias /test /path/to/python/file.py

และในไฟล์/path/to/python/file.py:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return "Hello World"

หลังจากเริ่มต้น Apache2 อีกครั้งคำขอใด ๆ ที่/testจะเปลี่ยนเป็นการเรียกapplication()ในไฟล์หลามของคุณ

สำหรับการอ่านเพิ่มเติมดูเป็น WSGI (เว็บเซิร์ฟเวอร์ Gateway Interface) วิธีบูรณาการหลามกับเว็บเซิร์ฟเวอร์

โบนัส / อัพเดท:

Python (ไม่แปลกใจ) มีเซิร์ฟเวอร์ WSGI ขนาดเล็กในไลบรารีมาตรฐานสำหรับการทดสอบ หากคุณเพิ่มสิ่งนี้ไว้ที่ด้านล่างของไฟล์ของคุณคุณสามารถเรียกใช้มันเป็นไฟล์เก่าที่ใช้สำหรับการทดสอบและจากนั้นให้ Apache ใช้แทนการผลิต:

if __name__ == '__main__':
    from wsgiref.simple_server import make_server

    httpd = make_server('', 8080, application)
    print "Serving on http://localhost:8080"

    httpd.serve_forever()

ฉันได้รับข้อผิดพลาดต่อไปนี้จากบันทึก apache เท่าที่ฉันสามารถบอกได้ก็คิดว่ามันไม่ได้รับสาย
Vallery

[เสาร์ 5 มีนาคม 17:06:14 2011] [ข้อผิดพลาด] [ลูกค้า 127.0.0.1] mod_wsgi (pid = 2844): เกิดข้อยกเว้นในการประมวลผลสคริปต์ WSGI '/var/www/file.py' [Sat 05 มีนาคม 17:06:14 2011] [ข้อผิดพลาด] [ลูกค้า 127.0.0.1] Traceback (โทรล่าสุดล่าสุด): [เสาร์ 5 มีนาคม 17:06:14 2011] [ข้อผิดพลาด] [ลูกค้า 127.0.0.1] ไฟล์ " /var/www/file.py ", บรรทัดที่ 2, ในแอปพลิเคชัน [Sat Mar 05 17:06:14 2011] [ข้อผิดพลาด] [ไคลเอ็นต์ 127.0.0.1] start_response (200, [('ประเภทเนื้อหา', 'ข้อความ / ธรรมดา ')]) [Sat 05 มีนาคม 17:06:14 2011] [ข้อผิดพลาด] [ลูกค้า 127.0.0.1] TypeError: วัตถุสตริงไบต์ที่คาดไว้สำหรับสถานะค่าของชนิด int พบ
Vallery

อา. ความผิดฉันเอง. ฉันใช้กรอบทำสิ่งที่ยุ่งยากสำหรับฉัน;) ฉันได้อัปเดต200ที่จะ'200 OK'ต่อpython.org/dev/peps/pep-0333
มอ Siebuhr

เยี่ยมมาก คำถามสุดท้าย: ฉันจะทำให้มันแสดงใน html ได้อย่างไร เบราว์เซอร์ของฉันแสดงการกลับมาเป็นข้อความธรรมดาโดยไม่สนใจมาร์กอัพ
Vallery

1
รอรับ: เปลี่ยนข้อความ / ธรรมดาเป็นข้อความ / html
Vallery
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.