Поднимаем Django стек на MS Windows

image

В данной статье будет представлена подробная инструкция по установке и настройке программ Apache, Python и PostgreSQL для обеспечения работы Django проекта в ОС MS Windows. Django уже включает в себя упрощенный сервер разработки для локального тестирования кода, но для задач, связанных с продакшен, требуется более безопасный и мощный веб-сервер. Мы настроим mod_wsgi для взаимодействия с нашим проектом и настроим Apache в качестве шлюза в внешний мир.

Стоит отметить, что установка и настройка будет производиться в ОС MS Windows 10 с 32 разрядностью. Также 32 битная реакция будет универсальна и будет работать на 64 битной архитектуре. Если вам нужна 64 битная установка повторите те же действия для 64 битных дистрибутивов программ, последовательность действий будет идентична.

В качестве Django проекта будем использовать программу Severcart. Она предназначена для управления перемещениями картриджей, учёта печатающего оборудования и договоров поставки и обслуживания. Установка всех программ и модулей будет производиться в каталог C:\severcart. Местоположение не принципиально.

Python


Первым шагом является загрузка и установка Python с веб-сайта Python. Выбираем Windows в качестве операционной системы и 32-битную версию. На момент написания статьи текущей версией является 3.9.0rc2.

Загрузив файл установки, щелкните правой кнопкой мыши файл установки и выберите «Запуск от имени администратора». Вы должны увидеть экран ниже



Устанавливаем галочки напротив чекбоксов «Install launcher for add user (recomended)» и «Add Python 3.9 to PATH» и нажимаем на «Customize installation».



Устанавливаем галочки на против «pip», «py launcher», «for all users (requires elevation)» и нажимаем «Next».



Выбираем все поля ввода как на картинке выше и нажимаем на «Install».



Чтобы убедиться, что установка прошла успешно, откройте cmd и введите python. Если установка прошла успешно, вы должны увидеть приглашение, подобный приведенному ниже



Устанавливаем mod_wsgi


Скачиваем скомпилированный пакет с mod_wsgi c сайта
www.lfd.uci.edu/~gohlke/pythonlibs. Модуль выполняет функции посредника межу сервером Apache и Django проектом. Самый свежий пакет будет с именем mod_wsgi-4.7.1-cp39-cp39-win32.whl. Обратите внимание, что пакет скомпилирован для 32 битной Windows CPython версии 3.9. Также стоит отметить, что очевидная установка модуля pip install mod_wsgi скорее всего завершится ошибкой, т.к. в процессе установки потребуется компилятор Visual Studio C++. Ставить компилятор целиком ради одного Python пакета в Windows считаем нецелесообразным.

Устанавливаем модуль с помощью стандартного пакетного менеджера pip в cmd или powershell:

pip install -U mod_wsgi-4.7.1-cp39-cp39-win32.whl




Apache


Скачиваем дистрибутив с сайта https://www.apachelounge.com/download/.
Самая свежая версия Web-сервера является Apache 2.4.46 win32 VS16. Также для работы программы понадобиться заранее установленный пакет «Visual C++ Redistributable for Visual Studio 2019 x86».

Распаковываем дистрибутив Apache в каталог C:\severcart\Apache24, далее меняем строку с номером 37 на свою

Define SRVROOT "C:/severcart/Apache24"


Проверяем работу Apache, выполнив в командной строке

C:/severcart/Apache24/bin> httpd.exe


В результате должны увидеть в браузере по адресу 127.0.0.1 строку «It works!».



Устанавливаем службу Apache, для этого выполним в командной строке от имени Администратора инструкцию:

C:\severcart\Apache24\bin>httpd.exe -k install -n "Apache24"


Далее подключим модуль mod_wsgi к Apache. Для этого выполним в командной строке инструкцию
C:\Windows\system32>mod_wsgi-express module-config


В результате в стандартный вывод будет распечатаны строки:
LoadFile "c:/severcart/python/python39.dll"
LoadModule wsgi_module "c:/severcart/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp39-win32.pyd"
WSGIPythonHome "c:/severcart/python"


Создаем файл C:\severcart\Apache24\conf\extra\httpd-wsgi.conf и копипастим туда распечатанные строки выше.

Подключаем новую конфигурацию к основному файлу httpd.conf
Include conf/extra/httpd-wsgi.conf

Сохраняем изменения, перезагружаем службы Apache
Net stop Apache24
Net start Apache24


PostgreSQL


Устанавливаем PostgreSQL взятый с сайта https://postgrespro.ru/windows. Текущая версия программного продукта – 12. Преимущества Российского дистрибутива от канонического представлены на том же сайте.





















Действия по установке представлены выше и комментариях не нуждаются. Установка крайне проста.

Создаем БД в postgres, где потом будут храниться структуры данных Django проекта

C:\severcart\postgresql\bin>psql -h 127.0.0.1 -U postgres -W

CREATE DATABASE severcart WITH ENCODING='UTF8' OWNER=postgres CONNECTION LIMIT=-1 template=template0;




БД создана. Теперь разворачиваем Django проект.

Устанавливаем web приложение


Для этого скачиваем zip архив с сайта https://www.severcart.ru/downloads/ и распаковываем в каталог C:\severcart\app\



Вносим изменения в главный конфигурационный файл C:\severcart\app\conf\settings_prod.py для указания реквизитов подключения к БД



Python словарь DATABASES содержит в себе реквизиты подключения к БД. Подробности по настройке читайте здесь https://docs.djangoproject.com/en/3.1/ref/databases/#connecting-to-the-database

Устанавливаем Python пакеты значимостей для работы приложений внутри Django проекта

C:\severcart\app\tkinstaller>python install.py




В процессе работы скрипта будет произведена инициализация БД таблицами, констрейтами, индексами и прочим, а будет предложено создать пользователя, от имени которого будет производиться работа в программе.

Подключаем Django приложение к серверу Apache для этого дополняем конфигурационный файл
httpd-wsgi.conf следующим текстом

Alias /static "c:/severcart/app/static"

Alias /media "c:/severcart/app/media"

<Directory "c:/severcart/app/static">
    # for Apache 2.4
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory "c:/severcart/app/media">
    # for Apache 2.4
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>


WSGIScriptAlias / "c:/severcart/app/conf/wsgi_prod.py"
WSGIPythonPath "c:/severcart/python/"

<Directory "c:/severcart/app/conf/">
<Files wsgi_prod.py>
    Require all granted
</Files>   
</Directory>


Перезагружаем службу Apache и проверяем работу приложения



На этом все. Спасибо что дочитали.

В следующей статье будем создавать установочный самораспаковывающийся архив в InnoSetup для быстрого развертывания Django проекта на компьютере заказчика. Для тех кто хочет повторить все действия на Яндекс.Диск загружены все используемые дистрибутивы.

Похожие публикации

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 11

    +8
    «Поднимаем Django стек на MS Windows» — но зачем?

    Для локальной разработки небольшого проекта хватит того, что идет с PyCharm, а для серьезного проекта в любом случае linux и дев-среда повторяющую боевой контур.
      0
      Согласен. Для разработки и запуска в продакшен Django проекта — Linux удобнее. В следующей статье будет описание создание cамораспаковывающегося исполняемого файла, позволяющего быстро развернуть в несколько кликов Django проект без необходимости устанавливать докер и др. системы виртуализации в ОС Windows.
        0
        Это настолько в сторону от современных практик работы, что даже комментировать не хочется.
      +9
      1) Устанавливаем Docker & Docker Compose
      2) Возимся немного с конфигом или берём готовый
      3) docker-compose up
      4)…
      5) PROFIT

      На самом деле уже забыл когда последний раз разворачивал что-то так, как в статье.
        0
        В следующей статье будем создавать установочный самораспаковывающийся архив в InnoSetup для быстрого развертывания Django проекта на компьютере заказчика.
        Это ещё зачем? Вы пишете приложения для локалхоста?
          +2

          Дайте попробую угадать: пришли из мира PHP?


          Люди, пришедшие из PHP представляют себе фреймворк как что-то лежащее на полу. И что какой-то другой сервис (mod_php, FPM, FastCGI, ...) должен поднять его с пола, проинтерпретировать и держать его в воздухе пока он обрабатывает запросы.


          Django умеет сам слушать порт. Ему не нужен Апач вообще никак.


          python manage.py runserver 0.0.0.0:80

          Что касается установки Python на system-wide — тоже не лучшая идея.
          Пользуйтесь anaconda.

            +1

            Если у вас задача распространять таким образом приложение среди конечных пользователей, то это ужасный способ.
            Как уже выше написали, django вполне себе работает без стороннего веб сервера и ставить apache для локалхоста это как из пушки по воробьям. Да и sqlite какая нибудь думаю ваши задачи потянет без особых проблем.
            Оборачиваете все это через pyinstaller/py2exe и распространяйте. Ещё и в cefpython можно завернуть чтоб все это выглядело как отдельное приложение, а не запуск через браузер

              +1
              Как только люди не извращаются, лишь бы контейнеры не использовать :)
                0

                Занимался подобным только еще IIS вместо апача, до того как узнал про докер. Проклял все, вообще все. 2 недели гугления без остановки. Зато потом мне вообще не надо было объяснять, зачем контейнеры придумали.

                  0

                  хорошая статья, чтобы понять как не надо делать.


                  автор, а вы слышали про XAMPP?

                    0
                    XAMPP вещь хорошая, но есть ещё Denver, OpenServer. Все они ориентированы для работы PHP и смежных технологий. Есть еще bitnami.com/stack/django/installer который выполняет схожую работу, но вес установочного дистрибутива более 300 МБайт + в комплекте много ненужных библиотек. На моей тестовой виртуалке их установочник устанавливается через раз.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое