Макар и много Разработчици на 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 . Предлагат се както 32-битови, така и 64-битови MSI инсталатори и вие трябва да изберете този, подходящ за машината, на която инсталирате.
Основите на PIPВажно е да инсталирате 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:Python27Scripts
. Те трябва да бъдат добавени към списъка PATH, разделени с точка и запетая (;
). Краят на вашата променлива PATH трябва да изглежда като ;C:Python27;C:Python27Scripts
.
Професионален съвет: Може също да искате да инсталирате GOW , лека колекция от помощни програми на командния ред на Unix, подобни на Cygwin. Той ще ви предостави инструменти като
ls
, но също така и по-интересни такива катоmake
,wget
,curl
,ssh
,scp
,gzip
иtar
.
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 се състои от едно или повече „приложения“. Директорията на първо ниво на проекта обикновено съдържа един специален поддиректория на проекта, който съдържа настройки и някаква обща информация на ниво проект, по един поддиректория на приложение и скрипт от командния ред, наречен manage.py
Например:
C:Develdjangoprojectsrc>dir Volume in drive C is OS Volume Serial Number is 6A3D-C1B8 Directory of C:Develdjangoprojectsrc 22/12/2014 04:25 . 22/12/2014 04:25 .. 22/12/2014 04:19 project 22/12/2014 04:58 djangoapp 16/12/2014 03:30 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
script е „швейцарският армейски нож“ на приложенията на Django. Той прави всичко - от създаване на нови приложения, до миграции на бази данни, до стартиране на тестов (вграден) HTTP сървър или дори FastCGI сървър.
Ако проектът и приложенията му са функционални, трябва да можете да стартирате HTTP сървъра по подразбиране само за разработка на Django, като изпълните командата manage.py runserver
, което трябва да доведе до изход, подобен на следния:
C:Develdjangoprojectsrc>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.
Както можете да видите от съобщенията, това стартира сървър на localhost, порт 8000. Можете да го осъществите незабавно с вашия уеб браузър.
По-интересна опция е да активирате сървър FastCGI. С FastCGI можете да използвате IIS, Apache или друг уеб сървър, за да обслужвате приложението в производствена настройка. За да работи това, трябва да изтеглите fcgi.py (командата за управление на Django за стартиране на Django на Windows с IIS чрез FastCGI) и го поставете в management/commands
поддиректория на поддиректорията на приложението Django (не на проекта!). И двете management
и commands
поддиректории трябва да имат празен файл с име __init__.py
(които превръщат тези директории в модули на Python).
fcgi.py
е много прост и минималистичен адаптер WSGI към FastCGI, който го прави не поддържа прослушване на TCP сокет или канал и извършва цялата му обработка, като използва stdin
и stdout`. Като такъв той не може да се използва със съвременни уеб сървъри като nginx , но ще работа с IIS.
Ако модулът FastCGI е зареден в IIS (или просто модулът CGI в IIS 7+), конзолата за управление на IIS ще има иконата „FastCGI Settings“. Django е рамка, която има свое собствено URL маршрутизиране, така че приложенията Django трябва да бъдат инсталирани като „манипулатор“ в IIS за конкретни пътища. За да инсталирате приложение Django на IIS Уеб сайт по подразбиране , изберете го в конзолата за управление и отворете Съпоставяне на манипулатора функция за конфигуриране. В него кликнете върху Добавяне на картографиране на модул ... действие и въведете следната информация:
*
за обработка на всички заявки с вътрешно Django маршрутизиранеFastCgiModule
да използвате модула FastCGI на IISpython.exe
path и неговите аргументи от командния ред трябва да бъдат зададени, като се използва символът на тръбата (|
) като разделител. Примерна стойност за тази настройка е: C:Python27python.exe|C:appsrcmanage.py fcgi --pythonpath C:appsrc --settings project.settings
. Имайте предвид, че трябва да посочите fcgi
команда за manage.py
скрипт и задайте ръчно пътя за търсене на интерпретатора на Python за проекта, както и името на модула Python за модула за настройка на проекта.Вашият диалогов прозорец за конфигуриране трябва да изглежда по следния начин:
След това щракнете върху Поискайте ограничения бутон и редактирайте Картографиране раздел. Премахнете отметката от квадратчето „Извикване на манипулатора само ако заявката е съпоставена с ...“ (в противен случай IIS ще има проблеми с картографирането на това, което според него са поддиректории в заявката за URL):
Щракнете върху OK в диалоговия прозорец с информация за манипулатора. След това IIS ще ви помоли да потвърдите създаването на съответстващ запис на приложение FastCGI, който ще трябва да потвърдите. Този запис ще бъде видим в Настройки на FastCGI функция, достъпна в основния екран на IIS Management Console. Записът по подразбиране, създаден от самия IIS, е адекватен, но има някои налични допълнителни настройки, от които може да искате да се възползвате:
Съвременните уеб приложения използват множество ресурсни файлове, като CSS, JavaScript и други, а приложенията Django не правят изключение. Django осигурява много удобна функция, която позволява на разработчиците да интегрират необходимите ресурси в дървото на директориите на приложенията, но които могат да бъдат извлечени и копирани от Django в правилна, статична директория. По принцип това е функция, контролирана от разработчика, и местоположенията, където Django ще съхранява статичните файлове, се контролират в settings.py
на проекта. Добре възпитаните проекти ще използват разумно разумен път за това, но той не е стандартизиран.
Приложенията, които обработват качени файлове, ги съхраняват в подобно управлявана директория, която в Django традиционно се нарича media
static
и media
директориите трябва да се добавят към конфигурацията на IIS като виртуални директории:
Важната стъпка тук е да преконфигурирате Съпоставяне на манипулатора функция за всяка от директориите и премахнете манипулатора на приложението 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:
C:inetpublogsFailedReqLogFiles
директория (или подобна, в зависимост от вашата конфигурация). След това трябва да активирате проследяването за конкретния уеб сайт (или виртуална директория) в * Конфигуриране-> Неуспешно проследяване на заявка ... действие.Разбира се, Django е създаден за Unix-подобна среда и най-широко разпространеният и поддържан начин за стартиране на Django е в Linux система (напр. С uwsgi и nginx).
И все пак не е необходима много работа, за да накарате Django да работи под Windows, както е показано в този урок. Някои от описаните стъпки може да изглеждат противоинтуитивни от чисто перспектива на Windows, но те са необходими и за щастие усилията, похарчени в конфигурацията, са само еднократни. След като бъде конфигурирано, приложението Django трябва да се държи почти по същия начин, както би го направило на Linux платформа.