ماهي mod_wsgi ؟

هي وحدة إضافية module لسيرفر Apache تمكنك من تشغيل تطبيقات بايثون على سيرفر Apache للمزيد راجع [1]

تنزيل الـ mode_wsgi

أيا كان الخادم المحلي الذي تستخدمه xampp أو wamp أو حتى appserv تأكد من مسار مجلد Apache و اصدار خادم الـ apache المستخدم مثلا اذا كنت تستخدم xampp ضع التالي في نافذة الأوامر

C:\xampp\apache\bin\httpd -v

ستظهر نتيجة مشابهة للتالي

Server version: Apache/2.4.9 (Win32)
Apache Lounge VC11 Server built:   Mar 16 2014 12:13:13

أي ان اصدار الـ apache لدي 2.4 ومبني لمعمارية 32 بت

قم بتنزيل الوحدة mod_wsgi من http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi اختر الوحدة المناسبة لإصدار خادم الـ apache ومعماريته وإصدار البايثون لديك فمثلا لبايثون 2.7 تحتاج تحميل mod_wsgi-3.5.ap24.win32-py2.7.zip

بعد فك الضغط عن الملف

  1. تأكد أن اسم ملف الوحدة mod_wsgi.so ان كان يحتوى أي لواحق كأرقام اصدارات أو غير ذلك أعد تسميته لـ mod_wsgi.so

  2. ضع ملف الوحدة في مجلد

    C:\xampp\apache\modules

ضع السطور التالية في ملف إعداد خادم الـ apache أي في C:\xampp\apache\conf\httpd.conf

LoadModule wsgi_module modules/mod_wsgi.so
    WSGIScriptAlias /mysite "C:/xampp/htdocs/mysite/app.wsgi"
    <Directory "C:/xampp/htdocs/mysite">
        Order allow,deny
        Allow from all
    </Directory>

السطر الأول يقوم بتحميل الوحدة mod_wsgi السطر الثاني يعين اسم مستعار لتطبيق wsgi السطور الباقية تحدد صلاحية الوصول لمجلد التطبيق

كتابة تطبيق Hello world

ضع في مجلد جديد في المسار C:/xampp/htdoc وسمه mysite ضع فيه ملف جديد وسمه app.wsgi ليكون تطبيق البايثون ضع به الكود التالي

def application(env, start_response):
    start_response("200 OK", [])
    output = "<html>Hello World! Request: %s</html>"
    output %= env['PATH_INFO']
    return [output]

يجب التنبه إلى أن ملف التطبيق يجب أن يحتوى على دالة application يتم من خلالها معالجة طلب الـ HTTP وتقبل معاملين الأول قاموس dict يحوي معلومات طلب الـ HTTP مثل وظيفة الـ HTTP ومتغيرات الطلب إلى أخره والمعامل الثاني لدالة start_response التي من خلالها تستطيع تعيين حالة رد الـ HTTP و معاملات الرد (HTTP Response Headers)

لتختبر كل ما سبق ضع في المتصفح الرابط http://localhost/mysite/

لتظهر النتيجة كالتالي

Hello World!
Request: /

[1] طرق استضافة تطبيقات الويب بلغة بايثون https://arabia.io/go/11102