ماهي 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/~goh... اختر الوحدة المناسبة لإصدار خادم الـ apache ومعماريته وإصدار البايثون لديك فمثلا لبايثون 2.7 تحتاج تحميل mod_wsgi-3.5.ap24.win32-py2.7.zip
بعد فك الضغط عن الملف
تأكد أن اسم ملف الوحدة mod_wsgi.so ان كان يحتوى أي لواحق كأرقام اصدارات أو غير ذلك أعد تسميته لـ mod_wsgi.so
ضع ملف الوحدة في مجلد
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
التعليقات