تثبيت Django على IIS: برنامج تعليمي خطوة بخطوة
نشرت: 2022-03-11على الرغم من أن العديد من مطوري Django قد يعتبرون ذلك أمرًا تجديفيًا ، إلا أنه من الضروري أحيانًا نشر تطبيقات Django على Windows / IIS ، خاصة عند العمل مع عميل قام ببناء بنيته التحتية حول نظام Windows البيئي. يأتي جزء "التجديف" من كون Django مستهدفًا بالفعل لبيئة Unix ، معتمداً بشكل كبير على ميزات مثل WSGI و FastCGI وأدوات سطر الأوامر ، وكلها غريبة على Windows. لحسن الحظ ، يتحسن توافق Django / IIS ، بفضل إضافة الميزات (التي قد تكون خلافًا لذلك) على جانبي Windows و Python + Django من المعادلة ، مما يساعد على حل مشكلات التوافق بين هذين العالمين التقنيين المتباينين.
يرشدك هذا البرنامج التعليمي القصير والمركّز خلال الإعداد الأساسي لمشروع Django على Windows. يغطي تثبيت Python و Django والأدوات ذات الصلة ، بما في ذلك تشغيل مشروع Django بشكل مستقل وكخادم FastCGI. هذا الأخير مهم بشكل متزايد ، بالمناسبة ، لأن IIS يدعم الآن FastCGI رسميًا (على IIS 7+ ، ببساطة قم بتثبيت ميزة CGI).
ملاحظة: هذا البرنامج التعليمي مخصص لأولئك الذين لديهم فهم عملي لـ Windows والذين هم على دراية بوحدة تحكم إدارة IIS. إصدار IIS المستخدم في هذا البرنامج التعليمي 8.5 ، لكن الأوصاف والأساليب متشابهة في الإصدارات السابقة. يعتمد البرنامج التعليمي على Python 2.7 و Django 1.7 ، لأن هذه هي الإصدارات التي أستخدمها لمشاريعي. يمكنك العثور على برنامج تعليمي آخر لـ Django هنا.
نصيحة احترافية: إذا كنت تنوي نشر عدة مشاريع Django (أو حتى Python عادية) ، أو إذا كنت مطورًا ، فيجب أن تنظر إلى virtualenv ، وهي أداة لإنشاء بيئات Python معزولة.
تثبيت بايثون على نظام ويندوز
أولاً ، قم بتنزيل Python. يتم توفير مثبتي MSI 32 بت و 64 بت ، ويجب عليك اختيار المثبت المناسب للجهاز الذي تقوم بالتثبيت عليه.
PIP هي الأداة التي تثبت وتحافظ على مكتبات Python (والتي يعد Django مثالاً واحدًا منها فقط). يتم استدعاؤه عن طريق تشغيل أمر النقطة في موجه الأوامر. يقوم بتنفيذ العديد من الأوامر الفرعية ، وأكثرها فائدة هما التثبيت والتجميد . سيقوم PIP أيضًا بتثبيت تبعيات المشروع (مكتبات إضافية) مثبتة ، إذا كان المشروع يحتوي على أي منها.
سيؤدي تشغيل تثبيت النقطة <package_name> إلى تنزيل الحزمة وجميع تبعياتها وتثبيتها (والتي قد تكون متداخلة ومعقدة إلى حد ما). تشغيل تثبيت النقطة - ترقية <package_name> ستؤدي بالمثل إلى ترقية الحزمة الحالية إلى أحدث إصدار لها. يدعم PIP صيغة خاصة لتثبيت إصدارات دقيقة من الحزمة بدلاً من مجرد "الأحدث". يتم ذلك عن طريق إلحاق عامل ورقم إصدار باسم الحزمة ؛ على سبيل المثال ، "Jinja2 == 2.7.3" (لتثبيت إصدار دقيق) أو "six> = 1.8" (لتثبيت أي إصدار يساوي أو أكبر من رقم الإصدار المحدد).
يُظهر تجميد نقطة التشغيل ببساطة قائمة الحزم المثبتة حاليًا بتنسيق يمكن استخدامه مباشرةً عن طريق تثبيت النقطة .
لاحظ أن بعض حزم Python / PIP تأتي مع مكتبات مكتوبة بلغة C ، والتي يجب تجميعها لكي تعمل الحزمة. لن تتمكن من تثبيت مثل هذه الحزم إلا إذا قمت بإعداد نظامك بحيث يكون لديك مترجم C عامل متوافق أيضًا مع ملفات Python التنفيذية. Django هي مكتبة Python نقية لذا فهي لا تتطلب مترجم سي لتثبيتها.
من المهم أن تقوم بتثبيت Python 2.7.9 أو أحدث ، حيث أن إصدارات Python التي تبدأ بـ 2.7.9 تتضمن PIP ، مكتبة / حزمة / مدير برامج Python الذي يستخدم لتثبيت كل شيء آخر في هذا البرنامج التعليمي.
عملية التثبيت مباشرة وبسيطة للغاية. سيعرض عليك تثبيت Python في دليل C:\Python27
، والذي يجب عليك قبوله لأنه يجعل الحياة أسهل بعد ذلك. حاول ألا تستسلم لعادة Windows بتثبيت أشياء في دلائل بها مسافات في أسمائها.
سيحتوي الدليل الأساسي بعد التثبيت على حوالي 8 أدلة فرعية وبعض الملفات المتنوعة وملفين تنفيذيين باسم Python.exe
و PythonW.exe
. الأول هو مترجم سطر الأوامر الافتراضي وقذيفة Python ، في حين أن الأخير هو المترجم الفوري ، والذي لن يستخدم (أو يفرز) نافذة وحدة التحكم إذا تم استدعاؤه ، ولهذا السبب يكون مناسبًا لتشغيل تطبيقات GUI Python.
بعد ذلك ، يجب إضافة Python إلى متغير بيئة PATH للنظام. يتم ذلك في إعدادات النظام المتقدمة (أو خصائص النظام ) ، في علامة التبويب خيارات متقدمة ، بالنقر فوق الزر متغيرات البيئة . هناك دليلان يمكن إضافتهما: C:\Python27
و C:\Python27\Scripts
. يجب إلحاقها بقائمة PATH ، مفصولة بفواصل منقوطة ( ;
). يجب أن تبدو نهاية متغير PATH بالشكل ;C:\Python27;C:\Python27\Scripts
.
نصيحة احترافية: قد ترغب أيضًا في تثبيت GOW ، وهي مجموعة خفيفة الوزن من أدوات سطر أوامر Unix المساعدة المشابهة لـ Cygwin. سيوفر لك أدوات مثل
ls
، ولكن أيضًا أدوات أكثر إثارة للاهتمام مثلmake
وwget
وcurl
وssh
وscp
وgzip
وtar
.
تثبيت Django على الويندوز
يمكن تثبيت Django باستخدام PIP باستخدام أمر مثل pip install django
. قد تسحب العملية بعض التبعيات الإضافية إذا لم تكن موجودة بالفعل على نظامك. خلاف ذلك ، سيتم تثبيت Django فقط ، بإخراج مشابه لما يلي:
Downloading/unpacking django Installing collected packages: django Successfully installed django Cleaning up...
يمكنك التحقق مما إذا كان كل من Python و Django لنظام التشغيل Windows يعملان عن طريق بدء موجه أوامر Windows جديد ، وتشغيل أمر python
، وإدخال الأمر import django
في موجه Python. إذا كان يعمل بشكل صحيح ، فلن يكون هناك إخراج أو رسائل بعد الأمر import django
؛ بمعنى آخر:
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>>
تثبيت مشروع Django على الويندوز
يتكون "مشروع" Django من "تطبيق" واحد أو أكثر. يحتوي دليل المستوى الأعلى للمشروع عادةً على دليل فرعي خاص واحد للمشروع يحتوي على إعدادات وبعض المعلومات العامة على مستوى المشروع ، ودليل فرعي واحد لكل تطبيق ، وبرنامج نصي لسطر الأوامر يسمى manage.py
. علي سبيل المثال:
C:\Devel\djangoproject\src>dir Volume in drive C is OS Volume Serial Number is 6A3D-C1B8 Directory of C:\Devel\djangoproject\src 22/12/2014 04:25 <DIR> . 22/12/2014 04:25 <DIR> .. 22/12/2014 04:19 <DIR> project 22/12/2014 04:58 <DIR> djangoapp 16/12/2014 03:30 <DIR> templates 16/12/2014 00:50 250 manage.py 1 File(s) 250 bytes 5 Dir(s) 23,552,929,792 bytes free
يمكن توزيع مشاريع Django ببساطة عن طريق أرشفة دليل المشروع بالكامل وفك ضغطه على جهاز آخر. في المثال أعلاه ، يحتوي المشروع على دليل فرعي project
، ودليل التطبيق المسمى djangoapp
، ودليل فرعي templates
المساعدة.
البرنامج النصي manage.py
هو "سكين الجيش السويسري" لتطبيقات Django. يقوم بكل شيء من إنشاء تطبيقات جديدة ، إلى عمليات ترحيل قاعدة البيانات ، إلى تشغيل اختبار خادم HTTP (مضمن) أو حتى خادم FastCGI.
تشغيل خادم HTTP تجريبي
إذا كان المشروع وتطبيقاته يعملان ، يجب أن تكون قادرًا على بدء خادم HTTP الافتراضي للتطوير فقط من Django عن طريق تشغيل الأمر manage.py runserver
، والذي يجب أن ينتج عنه مخرجات مشابهة لما يلي:
C:\Devel\djangoproject\src>manage.py runserver Performing system checks... System check identified no issues (0 silenced). December 23, 2014 - 01:19:02 Django version 1.7.1, using settings 'project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
كما ترى من الرسائل ، يؤدي هذا إلى تشغيل الخادم على المضيف المحلي ، المنفذ 8000. يمكنك الوصول إليه على الفور باستخدام متصفح الويب الخاص بك.
تكوين وتشغيل خادم FastCGI
الخيار الأكثر إثارة للاهتمام هو تمكين خادم FastCGI. باستخدام FastCGI ، يمكنك استخدام IIS أو Apache أو أي خادم ويب آخر لخدمة التطبيق في إعداد الإنتاج. لكي يعمل هذا ، تحتاج إلى تنزيل fcgi.py (أمر إدارة Django لتشغيل Django على Windows باستخدام IIS من خلال FastCGI) ووضعه في الدليل الفرعي management/commands
في الدليل الفرعي لتطبيق Django (وليس المشروع!). يجب أن يكون لكل من الدلائل الفرعية management
commands
ملف فارغ باسم __init__.py
(والذي يحول تلك الأدلة إلى وحدات بايثون النمطية).

fcgi.py
هو محول WSGI بسيط للغاية ومبسط إلى FastCGI لا يدعم الاستماع على مقبس TCP أو أنبوب ، ويقوم بمعالجته بالكامل باستخدام stdin
و stdout`. على هذا النحو ، لا يمكن استخدامه مع خوادم الويب الحديثة مثل nginx ، ولكنه سيعمل مع IIS.
تكوين IIS لتشغيل تطبيق FastCGI
إذا تم تحميل وحدة FastCGI في IIS (أو ببساطة وحدة CGI في IIS 7+) ، فستتوفر أيقونة "FastCGI Settings" في وحدة تحكم إدارة IIS. يعد Django إطارًا له توجيه URL خاص به ، لذلك يجب تثبيت تطبيقات Django كـ "معالج" في IIS لمسارات محددة. لتثبيت تطبيق Django على موقع الويب الافتراضي الخاص بـ IIS ، حدده في وحدة تحكم الإدارة ، وافتح ميزة تكوين تعيينات Handler . في ذلك ، انقر فوق إجراء Add Module Mapping… ، وأدخل المعلومات التالية:
- مسار الطلب : اضبطه على
\*
للتعامل مع جميع الطلبات مع توجيه Django الداخلي - الوحدة النمطية : اضبطه على
FastCgiModule
لاستخدام وحدة FastCGI الخاصة بـ IIS - قابل للتنفيذ : هنا ، يجب تعيين كل من مسار
python.exe
سطر الأوامر باستخدام حرف الأنبوب (|
) كفاصل. مثال على قيمة هذا الإعداد:C:\Python27\python.exe|C:\app\src\manage.py fcgi --pythonpath C:\app\src --settings project.settings
. لاحظ أنك تحتاج إلى تحديد الأمرfcgi
للنص البرمجيmanage.py
، وتعيين مسار بحث مترجم Python يدويًا للمشروع ، بالإضافة إلى اسم وحدة Python لوحدة إعداد المشروع. - الاسم : يمكنك ضبط هذا على ما تريد.
يجب أن يبدو مربع حوار التكوين كما يلي:
بعد ذلك ، انقر فوق الزر " طلب قيود " وقم بتحرير علامة التبويب " تعيين ". قم بإلغاء تحديد خانة الاختيار "استدعاء المعالج فقط إذا تم تعيين الطلب إلى ..." (وإلا ، فسيواجه IIS مشاكل في تعيين ما يعتقد أنه أدلة فرعية في طلب عنوان URL):
انقر فوق "موافق" في مربع حوار معلومات المعالج. سيطلب منك IIS بعد ذلك تأكيد إنشاء إدخال تطبيق FastCGI مطابق والذي ستحتاج إلى تأكيده. سيكون هذا الإدخال مرئيًا في ميزة إعدادات FastCGI ، والتي يمكن الوصول إليها في شاشة الجذر لوحدة التحكم في إدارة IIS. الإدخال الافتراضي الذي تم إنشاؤه بواسطة IIS نفسه مناسب ، ولكن هناك بعض الإعدادات الاختيارية المتاحة والتي قد ترغب في الاستفادة منها:
- الحد الأقصى للحالات : الأسلوب الذي نستخدمه لتشغيل تطبيقات FastCGI هو عملية مفردة وسلسلة واحدة ، مما يعني أن عملية مترجم Python المنفصلة ستبدأ لكل طلب متزامن . يحد هذا الإعداد من عدد مثيلات تطبيق Django المتزامنة.
- مراقبة التغييرات في الملف : بشكل افتراضي ، بمجرد البدء ، ستكون عمليات التطبيق نشطة إما حتى يتم إيقاف تشغيلها يدويًا ، أو حتى تتعامل مع طلبات Instance MaxRequest . باستخدام هذا الإعداد ، سيراقب IIS طابعًا زمنيًا لملف عشوائي ، وإذا تغير ، فسيتوقف ويعيد تحميل مثيلات التطبيق. يعد هذا مناسبًا لكل من المطورين وبيئات الإنتاج ، حيث يسمح بإعادة تحميل التطبيقات عند التغيير. يعد "الطابع الزمني لمراقبة ملف لمؤشر إعادة التحميل" مفهومًا غريبًا إلى حد ما على نظام التشغيل Windows ، ولكنه أمر طبيعي في البيئات الشبيهة بـ Unix ، ولذلك تم نقله هنا باستخدام FastCGI.
تكوين أدلة الموارد والوسائط الثابتة
تستخدم تطبيقات الويب الحديثة ملفات موارد متعددة ، مثل CSS و JavaScript وغيرها ، وتطبيقات Django ليست استثناءً. يوفر Django ميزة ملائمة للغاية تسمح للمطورين بدمج الموارد المطلوبة في شجرة دليل التطبيق ، ولكن يمكن استخراجها ونسخها بواسطة Django إلى دليل ثابت وثابت. هذه في الأساس ميزة يتحكم فيها المطور ، ويتم التحكم في المواقع التي سيخزن فيها Django الملفات الثابتة في settings.py
المشروع. سوف تستخدم المشاريع حسنة التصرف مسارًا معقولًا إلى حد ما لهذا ، لكنه ليس موحدًا.
تقوم التطبيقات التي تتعامل مع الملفات المرفوعة بتخزينها في دليل تتم إدارته بشكل مشابه والذي يُسمى تقليديًا في Django media
. يجب إضافة الدلائل static
media
إلى تكوين IIS كأدلة افتراضية:
الخطوة المهمة هنا هي إعادة تكوين ميزة Handler Mappings لكل دليل وإزالة معالج تطبيق Django ، وترك معالج StaticFile
معالج.
لاحظ أن الدليل static
يجب أن يكون قابلاً للقراءة بواسطة IIS (بالإضافة إلى جميع الملفات والأدلة الأخرى في مشروع Django) ، ولكن دليل media
يجب أن يكون قابلاً للكتابة بواسطة IIS. يجب أن يكون التكوين النهائي للموقع مشابهًا لما يلي:
ملاحظة حول قواعد البيانات
يعمل SQLite افتراضيًا على نظام التشغيل Windows ، كما هو الحال في الأنظمة الشبيهة بنظام Unix. تعمل معظم قواعد البيانات الأخرى مفتوحة المصدر الآن على Windows ، حتى PostgreSQL ، والتي أوصي بها. على الرغم من ذلك ، في تثبيتات Windows الحالية ، قد تكون هناك حاجة لنشر Django مع MS SQL Server. هذا ممكن إما باستخدام برنامج تشغيل جسر ODBC أو باستخدام برنامج تشغيل MS SQL أصلي. من الناحية النظرية ، كلاهما يعمل ، لكني لم أختبره. يجب تغيير معلمات اتصال قاعدة البيانات على الأقل (في ملف settings.py
الخاص بالمشروع) للتبديل إلى قاعدة بيانات جديدة. يجب أن يتم ترحيل البيانات يدويًا.
لاحظ أنه في حالة استخدام قاعدة بيانات SQLite ، يجب أن يكون ملف قاعدة البيانات والدليل الموجود به قابلين للكتابة بواسطة IIS.
استكشاف الأخطاء وإصلاحها
تم اختبار التكوين الموصوف وإثبات فعاليته ، ولكن إذا حدث خطأ ما ، فإليك بعض الخطوات الأساسية لاستكشاف أخطاء تثبيت Django لنظام التشغيل Windows وإصلاحها:
- حاول بدء سطر أوامر FastCGI بنفسك. هذا هو الأمر الذي تم تكوينه في إعدادات FastCGI والذي يجب أن يتطابق مع الأمر الذي تم تكوينه في تعيينات المعالج للموقع.
- قم بتثبيت ميزة التتبع لـ IIS ، ثم قم بتكوينها لموقع Django في قواعد تتبع الطلب الفاشل لتتبع كل المحتوى ( ) ، ورمز الحالة "500" وخطورة الحدث "خطأ". ستكون التتبع متاحة كملفات XML (مع XSLT المرفقة) في دليل IIS
C:\inetpub\logs\FailedReqLogFiles
(أو أي دليل مشابه ، اعتمادًا على التكوين الخاص بك). تحتاج بعد ذلك إلى تمكين التتبع لموقع ويب معين (أو دليل ظاهري) في الإجراء * Configure-> Failed Request tracing… .
خاتمة
من المؤكد أن Django مصمم لبيئة شبيهة بيونكس ، والطريقة الأكثر انتشارًا ودعمًا لتشغيل Django هي على نظام Linux (على سبيل المثال ، مع uwsgi و nginx).
ومع ذلك ، لا يتطلب الأمر الكثير من العمل لجعل Django يعمل على Windows ، كما هو موضح في هذا البرنامج التعليمي. قد تبدو بعض الخطوات الموصوفة غير بديهية من منظور Windows خالص ، لكنها ضرورية ، ولحسن الحظ ، فإن الجهد المبذول في التهيئة يكون لمرة واحدة فقط. بمجرد التهيئة ، يجب أن يتصرف تطبيق Django بنفس الطريقة التي يتصرف بها على نظام Linux الأساسي.