Instalarea Django pe IIS: Un tutorial pas cu pas
Publicat: 2022-03-11Deși mulți dezvoltatori Django ar putea considera că este blasfemie, uneori este de fapt necesar să implementezi aplicații Django pe Windows/IIS, mai ales atunci când lucrezi cu un client care și-a bazat infrastructura pe ecosistemul Windows. Partea „blasfemie” vine de la faptul că Django a fost într-adevăr vizat de mediul Unix, bazându-se în mare măsură pe caracteristici precum WSGI, FastCGI și instrumente de linie de comandă, toate acestea fiind străine de Windows. Din fericire, compatibilitatea Django/IIS se îmbunătățește, mulțumită adăugării de caracteristici (care altfel ar fi un kludge) atât pe părțile Windows, cât și pe cele Python+Django ale ecuației, ajutând astfel la rezolvarea problemelor de compatibilitate dintre aceste două lumi tehnice disparate.
Acest tutorial scurt și concentrat vă ghidează prin configurarea de bază a unui proiect Django pe Windows. Acesta acoperă instalarea Python, Django și a instrumentelor conexe, inclusiv rularea proiectului Django atât autonom, cât și ca server FastCGI. Acesta din urmă este din ce în ce mai important, de altfel, deoarece IIS acceptă acum oficial FastCGI (pe IIS 7+, pur și simplu instalați caracteristica CGI).
Notă: Acest tutorial este destinat celor care cunosc Windows și care sunt familiarizați cu consola de management IIS. Versiunea de IIS folosită în acest tutorial este 8.5, dar descrierile și tehnicile sunt similare versiunilor anterioare. Tutorialul se bazează pe Python 2.7 și Django 1.7, deoarece acestea sunt versiunile pe care le folosesc pentru proiectele mele. Puteți găsi un alt tutorial Django aici.
Sfat profesionist: Dacă intenționați să implementați mai multe proiecte Django (sau chiar Python simplu) sau dacă sunteți dezvoltator, ar trebui să vă uitați la virtualenv, un instrument pentru crearea de medii Python izolate.
Instalarea Python pe Windows
Mai întâi, descărcați Python. Sunt furnizate atât programe de instalare MSI pe 32 de biți, cât și pe 64 de biți și ar trebui să-l alegeți pe cel potrivit pentru mașina pe care instalați.
PIP este instrumentul care instalează și întreține bibliotecile Python (din care Django este doar un exemplu). Este invocat prin rularea comenzii pip la promptul de comandă. Implementează mai multe comenzi secundare, iar două dintre cele mai utile sunt instalarea și înghețarea . PIP va instala, de asemenea, dependențele de proiect (biblioteci suplimentare) sunt instalate, în cazul în care proiectul are.
Rularea pip install <nume_pachet> va descărca și instala pachetul și toate dependențele acestuia (care pot fi imbricate și destul de complexe). Rularea pip install --upgrade <nume_pachet> va actualiza, de asemenea, un pachet existent la cea mai recentă versiune. PIP acceptă o sintaxă specială pentru instalarea versiunilor precise ale unui pachet în loc de doar „cel mai recent”. Se face prin adăugarea unui operator și a unui număr de versiune la numele pachetului; de ex. „Jinja2==2.7.3” (pentru a instala o versiune precisă) sau „six>=1.8” (pentru a instala orice versiune egală sau mai mare decât numărul de versiune specificat).
Rularea pip freeze arată pur și simplu lista pachetelor instalate în prezent într-un format care poate fi utilizat direct de pip install .
Rețineți că unele pachete Python / PIP vin cu biblioteci scrise în C, care trebuie compilate pentru ca pachetul să funcționeze. Dacă nu vă configurați sistemul pentru a avea un compilator C funcțional, care este, de asemenea, compatibil cu executabilele Python, nu veți putea instala astfel de pachete. Django este o bibliotecă Python pură, așa că nu necesită un compilator C pentru a instala.
Este important să instalați Python 2.7.9 sau o versiune ulterioară, deoarece versiunile Python care încep cu 2.7.9 includ PIP, managerul de bibliotecă/pachete/software Python care este folosit pentru a instala orice altceva în acest tutorial.
Procesul de instalare este foarte simplu și simplu. Acesta vă va oferi să instalați Python în directorul C:\Python27
, pe care ar trebui să îl acceptați, deoarece ușurează viața ulterior. Încercați să nu cedați obiceiului Windows de a instala lucruri în directoare cu spații în nume.
Directorul de bază după instalare va conține aproximativ 8 subdirectoare, câteva fișiere diverse și două executabile numite Python.exe
și PythonW.exe
. Primul este interpretul implicit de linie de comandă și shell-ul Python, în timp ce cel de-al doilea este doar interpretul, care nu va folosi (sau genera) o fereastră de consolă dacă este invocată și, din această cauză, este potrivit pentru rularea aplicațiilor GUI Python.
Apoi, Python ar trebui adăugat la variabila de mediu PATH a sistemului. Acest lucru se face în Setări avansate de sistem (sau Proprietăți sistem ), în fila Avansat , făcând clic pe butonul Variabile de mediu . Există două directoare care trebuie adăugate: C:\Python27
și C:\Python27\Scripts
. Acestea ar trebui să fie atașate la lista PATH, separate prin punct și virgulă ( ;
). Sfârșitul variabilei PATH ar trebui să arate ca ;C:\Python27;C:\Python27\Scripts
.
Sfat de profesionist: poate doriți să instalați și GOW, o colecție ușoară de utilitare de linie de comandă Unix similare cu Cygwin. Vă va oferi instrumente precum
ls
, dar și altele mai interesante precummake
,wget
,curl
,ssh
,scp
,gzip
șitar
.
Instalarea Django pe Windows
Django poate fi instalat folosind PIP cu o comandă precum pip install django
. Procesul poate introduce unele dependențe suplimentare dacă acestea nu sunt deja prezente pe sistemul dumneavoastră. În caz contrar, va instala pur și simplu numai Django, cu rezultate similare următoare:
Downloading/unpacking django Installing collected packages: django Successfully installed django Cleaning up...
Puteți verifica dacă atât Python, cât și Django pentru Windows funcționează, pornind un nou prompt de comandă Windows, rulând comanda python
și introducând comanda import django
la promptul Python. Dacă funcționează corect, nu ar trebui să existe nicio ieșire sau mesaje după comanda import django
; adică:
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 >>>
Instalarea unui proiect Django pe Windows
Un „proiect” Django constă dintr-una sau mai multe „aplicații”. Directorul de nivel superior al unui proiect conține de obicei un subdirector special de proiect care conține setări și câteva informații generale la nivel de proiect, un subdirector per aplicație și un script de linie de comandă numit manage.py
. De exemplu:
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
Proiectele Django pot fi distribuite pur și simplu prin arhivarea întregului director de proiect și decomprimarea acestuia pe o altă mașină. În exemplul de mai sus, proiectul conține subdirectorul project
, directorul aplicației numit djangoapp
și un subdirector de templates
auxiliare.
Scriptul manage.py
este „cuțitul elvețian” al aplicațiilor Django. Face totul, de la crearea de noi aplicații, la migrarea bazelor de date, la rularea unui server HTTP de testare (încorporat) sau chiar a unui server FastCGI.
Rularea unui server HTTP de testare
Dacă proiectul și aplicațiile sale sunt funcționale, ar trebui să puteți porni serverul HTTP implicit pentru dezvoltare Django, rulând comanda manage.py runserver
, care ar trebui să aibă rezultate similare cu următoarea:
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.
După cum puteți vedea din mesaje, acesta pornește un server pe localhost, portul 8000. Îl puteți accesa imediat cu browserul dvs. web.
Configurarea și rularea unui server FastCGI
O opțiune mai interesantă este activarea unui server FastCGI. Cu FastCGI, puteți utiliza IIS, Apache sau orice alt server web pentru a servi aplicația într-un cadru de producție. Pentru ca acest lucru să funcționeze, trebuie să descărcați fcgi.py (comanda de management Django pentru a rula Django pe Windows cu IIS prin FastCGI) și să o puneți în subdirectorul management/commands
din subdirectorul aplicației Django (nu al proiectului!). Atât subdirectoarele de management
, cât și cele de commands
trebuie să aibă un fișier gol numit __init__.py
(care transformă acele directoare în module Python).

fcgi.py
este un adaptor WSGI la FastCGI foarte simplu și minimalist, care nu acceptă ascultarea pe un socket TCP sau o conductă și face toată procesarea sa folosind stdin
și stdout`. Ca atare, nu este utilizabil cu servere web moderne, cum ar fi nginx, dar va funcționa cu IIS.
Configurarea IIS pentru a rula o aplicație FastCGI
Dacă modulul FastCGI este încărcat în IIS (sau pur și simplu modulul CGI în IIS 7+), consola de management IIS va avea disponibilă pictograma „FastCGI Settings”. Django este un cadru care are propria sa rutare URL, astfel încât aplicațiile Django trebuie instalate ca „handler” în IIS pentru anumite căi. Pentru a instala o aplicație Django pe site-ul web implicit al IIS, selectați-o în consola de management și deschideți caracteristica de configurare a mapărilor Handler . În el, faceți clic pe acțiunea Add Module Mapping... și introduceți următoarele informații:
- Calea cererii : setați-o la
\*
pentru a gestiona toate solicitările cu rutare Django internă - Modul : Setați-l la
FastCgiModule
pentru a utiliza modulul FastCGI al IIS - Executabil : Aici trebuie setate atât calea
python.exe
, cât și argumentele liniei de comandă, folosind caracterul pipe (|
) ca separator. Un exemplu de valoare pentru această setare este:C:\Python27\python.exe|C:\app\src\manage.py fcgi --pythonpath C:\app\src --settings project.settings
. Rețineți că trebuie să specificați comandafcgi
pentru scriptulmanage.py
și să setați manual calea de căutare a interpretului Python pentru proiect, precum și numele modulului Python pentru modulul de setare al proiectului. - Nume : Puteți seta la orice doriți.
Dialogul de configurare ar trebui să arate cam așa:
Apoi, faceți clic pe butonul Solicitați restricții și editați fila Mapare . Debifați caseta de selectare „Invocare handler numai dacă cererea este mapată la...” (în caz contrar, IIS va avea probleme la maparea a ceea ce crede că sunt subdirectoare în solicitarea URL):
Faceți clic pe OK în dialogul de informații despre handler. IIS vă va cere apoi să confirmați crearea unei intrări de aplicație FastCGI potrivite, pe care va trebui să o confirmați. Această intrare va fi vizibilă în caracteristica Setări FastCGI , accesibilă la ecranul rădăcină al Consolei de management IIS. Intrarea implicită creată de IIS în sine este adecvată, dar există câteva setări opționale disponibile de care poate doriți să profitați:
- Max instanțe : Abordarea pe care o folosim pentru rularea aplicațiilor FastCGI este cu un singur proces, cu un singur thread, ceea ce înseamnă că un proces separat de interpret Python va fi pornit pentru fiecare cerere simultană . Această setare limitează numărul de instanțe simultane ale aplicației Django.
- Monitorizați modificările aduse fișierului : în mod implicit, odată pornit, procesele aplicației vor fi active fie până la închiderea manuală, fie până când gestionează solicitările Instance MaxRequest . Folosind această setare, IIS va monitoriza o marcajă temporală a unui fișier arbitrar și, dacă se modifică, va opri și va reîncărca instanțe de aplicație. Acest lucru este convenabil atât pentru dezvoltatori, cât și pentru mediile de producție, deoarece permite reîncărcarea aplicațiilor atunci când sunt modificate. „Monitorizați marca temporală a unui fișier pentru un indicator de reîncărcare” este un concept destul de ciudat pe Windows, dar este normal în medii asemănătoare Unix, așa că a fost transferat aici cu FastCGI.
Configurarea resurselor statice și a directoarelor media
Aplicațiile web moderne folosesc mai multe fișiere de resurse, cum ar fi CSS, JavaScript și altele, iar aplicațiile Django nu fac excepție. Django oferă o caracteristică foarte convenabilă care permite dezvoltatorilor să integreze resursele necesare în arborele directoarelor aplicației, dar care poate fi extrasă și copiată de Django într-un director static adecvat. Aceasta este practic o caracteristică controlată de dezvoltator, iar locațiile în care Django va stoca fișierele statice sunt controlate în settings.py
al proiectului. Proiectele bine comportate vor folosi o cale rezonabilă pentru aceasta, dar nu este standardizată.
Aplicațiile care gestionează fișierele încărcate le stochează într-un director gestionat în mod similar, care, în Django, este denumit în mod tradițional media
. Directoarele static
și media
trebuie adăugate la configurația IIS ca directoare virtuale:
Pasul important aici este să reconfigurați caracteristica Handler Mappings pentru fiecare dintre directoare și să eliminați handlerul aplicației Django, lăsând gestionarea StaticFile
ca fiind cel mai important.
Rețineți că directorul static
trebuie să poată fi citit de IIS (precum și toate celelalte fișiere și directoare din proiectul Django), dar directorul media
trebuie să poată fi scris și de IIS. Configurația finală a site-ului ar trebui să semene cu următoarele:
O notă despre bazele de date
SQLite funcționează implicit pe Windows, așa cum funcționează și pe sisteme asemănătoare Unix. Majoritatea celorlalte baze de date open source funcționează acum pe Windows, chiar și PostgreSQL, pe care îl recomand. Pe instalațiile Windows existente, totuși, ar putea exista o cerință de a implementa Django cu MS SQL Server. Acest lucru este posibil fie prin utilizarea unui driver de punte ODBC, fie prin utilizarea unui driver MS SQL nativ. În teorie, ambele funcționează, dar nu le-am testat. Cel puțin parametrii de conectare la baza de date (în fișierul settings.py
al proiectului) trebuie modificați pentru a trece la o nouă bază de date. Migrarea datelor trebuie făcută manual.
Rețineți că, dacă utilizați baza de date SQLite, atât fișierul bazei de date, cât și directorul în care se află, trebuie să poată fi scrise de IIS.
Depanare
Configurația descrisă este testată și dovedit că funcționează, dar dacă ceva nu merge bine, iată câțiva pași de bază pentru depanarea instalării Django pentru Windows:
- Încercați să porniți singur linia de comandă FastCGI. Aceasta este comanda configurată în Setările FastCGI și care trebuie să se potrivească cu cea configurată în Handler Mappings pentru site.
- Instalați caracteristica de urmărire pentru IIS, apoi configurați-o pentru site-ul Django în Reguli de urmărire a cererilor eșuate pentru a urmări tot conținutul ( ), codul de stare „500” și severitatea evenimentului „Eroare”. Urmele vor fi disponibile ca fișiere XML (cu XSLT atașat) în directorul IIS
C:\inetpub\logs\FailedReqLogFiles
(sau unul similar, în funcție de configurația dvs.). Apoi, trebuie să activați urmărirea pentru un anumit site web (sau un director virtual) în acțiunea *Configurare->Urmărire cereri eșuate....
Concluzie
Pentru a fi sigur, Django este adaptat pentru un mediu asemănător Unix, iar cel mai răspândit și acceptat mod de a rula Django este pe un sistem Linux (de exemplu, cu uwsgi și nginx).
Cu toate acestea, nu este nevoie de multă muncă pentru ca Django să ruleze pe Windows, așa cum se arată în acest tutorial. Unii dintre pașii descriși pot părea contra-intuitivi dintr-o perspectivă pur Windows, dar sunt necesari și, din fericire, efortul depus în configurare este o singură dată. Odată configurată, aplicația Django ar trebui să se comporte aproape la fel ca pe o platformă Linux.