Настройка apache django windows

Обновлено: 07.07.2024

Развертывание Django с помощью Apache и mod_wsgi - это проверенный и испытанный способ запустить Django в производство.

mod_wsgi - это модуль Apache, который может разместить любое приложение Python WSGI, включая Django. Django будет работать с любой версией Apache, которая поддерживает mod_wsgi.

official mod_wsgi documentation - это ваш источник всех подробностей о том, как использовать mod_wsgi. Скорее всего, вы захотите начать с installation and configuration documentation.

Базовая конфигурация¶

Первый бит в строке WSGIScriptAlias - это базовый путь URL, по которому вы хотите обслуживать ваше приложение ( / указывает на корневой url), а второй - местоположение «файла WSGI» - см. ниже - в вашей системе, обычно внутри пакета вашего проекта ( mysite в данном примере). Это указывает Apache обслуживать любой запрос ниже заданного URL, используя приложение WSGI, определенное в этом файле.

Если вы устанавливаете зависимости Python вашего проекта внутри virtual environment , добавьте путь с помощью WSGIPythonHome . Более подробную информацию смотрите в mod_wsgi virtual environment guide.

Строка WSGIPythonPath гарантирует, что пакет вашего проекта доступен для импорта по пути Python; другими словами, что import mysite работает.

Часть <Directory> гарантирует, что Apache сможет получить доступ к вашему файлу wsgi.py .

Далее нам нужно убедиться, что этот wsgi.py с объектом приложения WSGI существует. Начиная с версии Django 1.4, startproject создаст его за вас; в противном случае, вам придется создать его. Смотрите в WSGI overview documentation содержание по умолчанию, которое вы должны поместить в этот файл, и что еще вы можете добавить в него.

Если несколько сайтов Django запущены в одном процессе mod_wsgi, все они будут использовать настройки того из них, который будет запущен первым. Это можно решить, изменив:

или по using mod_wsgi daemon mode и обеспечить, чтобы каждый сайт запускался в собственном процессе демона.

Исправление UnicodeEncodeError для загрузки файлов

Если вы получаете ошибку UnicodeEncodeError при загрузке файлов с именами файлов, содержащими символы, отличные от ASCII, убедитесь, что Apache настроен на прием имен файлов, отличных от ASCII:

Обычное место для размещения этой конфигурации - /etc/apache2/envvars .

Подробности см. в разделе Файлы справочного руководства Unicode.

Использование режима демона mod_wsgi ¶

«Режим демона» - это рекомендуемый режим для запуска mod_wsgi (на платформах, отличных от Windows). Чтобы создать необходимую группу процессов daemon и делегировать экземпляр Django для запуска в ней, вам нужно добавить соответствующие директивы WSGIDaemonProcess и WSGIProcessGroup . Еще одно изменение, которое необходимо внести в приведенную выше конфигурацию, если вы используете режим демона, заключается в том, что вы не можете использовать WSGIProcessGroup ; вместо этого вы должны использовать опцию WSGIPythonPath , например, python-path :

См. официальную документацию mod_wsgi для details on setting up daemon mode.

Служебные файлы¶

Django не обслуживает файлы самостоятельно; он оставляет эту работу тому веб-серверу, который вы выберете.

Мы рекомендуем использовать отдельный веб-сервер - т.е. тот, на котором также не запущен Django - для обслуживания медиа. Вот несколько хороших вариантов:

Однако если у вас нет другого выбора, кроме как обслуживать медиафайлы на том же Apache VirtualHost , что и Django, вы можете настроить Apache на обслуживание некоторых URL как статических медиа, а других с помощью интерфейса mod_wsgi для Django.

Этот пример устанавливает Django в корне сайта, но обслуживает robots.txt , favicon.ico , и все, что находится в пространстве URL /static/ и /media/ как статический файл. Все остальные URL будут обслуживаться с помощью mod_wsgi:

Обслуживание файлов администратора¶

Когда django.contrib.staticfiles находится в INSTALLED_APPS , сервер разработки Django автоматически обслуживает статические файлы приложения администратора (и любых других установленных приложений). Однако это не так, если вы используете любое другое расположение сервера. Вы должны настроить Apache или любой другой используемый вами веб-сервер для обслуживания файлов администратора.

Файлы администратора находятся в ( django/contrib/admin/static/admin ) дистрибутива Django.

Мы настойчиво рекомендуем использовать django.contrib.staticfiles для работы с файлами администратора (вместе с Web-сервером, как описано в предыдущем разделе; это означает использование команды управления collectstatic для сбора статических файлов в STATIC_ROOT , а затем настройку вашего Web-сервера для обслуживания STATIC_ROOT в STATIC_URL ), но вот три других подхода:

  1. Создайте символическую ссылку на статические файлы администратора в корне документа (для этого может потребоваться +FollowSymLinks в конфигурации Apache).
  2. Используйте директиву Alias , как показано выше, для псевдонима соответствующего URL (возможно STATIC_URL + admin/ ) для фактического расположения файлов администратора.
  3. Скопируйте статические файлы администратора так, чтобы они находились в корне документа Apache.

Аутентификация по базе данных пользователей Django из Apache¶

Django предоставляет обработчик, позволяющий Apache аутентифицировать пользователей непосредственно с помощью бэкендов аутентификации Django. См. раздел mod_wsgi authentication documentation .

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

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:


Apache

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

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

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


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

Далее подключим модуль mod_wsgi к Apache. Для этого выполним в командной строке инструкцию


В результате в стандартный вывод будет распечатаны строки:

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

PostgreSQL











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

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


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

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


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


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


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


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


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

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

mod_wsgi является модулем веб-сервера Apache, который может взаимодействовать с любым приложением Python, в том числе Django. Django работает с любой версией Apache, поддерживающей mod_wsgi .

Официальная документация mod_wsgi просто фантастический документ; это ваш путеводитель по mod_wsgi. Возможно, вы захотите начать с документации по установке и конфигурированию.

Базовая конфигурация¶

WSGIPythonPath гарантрует, что ваш проект доступен для импорта; иначе говоря, что команда import mysite сработает.

Значение <Directory> просто предоставляет Apache доступ к файлу wsgi.py .

Далее следует удостовериться, что файл wsgi.py существует. Начиная с версии Django 1.4 команда startproject создаёт его; в противном случае вы можете создать этот файл самостоятельно. См. Развёртывание с WSGI, чтобы узнать изначальное содержимое файла и то, какие настройки вы можете добавить.

Использование virtualenv¶

Если вы установили зависимости проекта с помощью virtualenv вам следует добавить путь к директории site-packages , находящейся в вашем виртуальном окружении. Для этого добавьте дополнительный путь к WSGIPythonPath , разделив его двоеточием:

Убедитесь в том, что путь к виртуальному окружению указан верно и замените python2.X на используемую вами версию Python (например, python2.7 ).

Использование mod_wsgi в режиме демона¶

Обратитесь к официальной документации mod_wsgi , чтобы узнать подробнее о настройке в режиме демона.

Обслуживание файлов¶

Django не должен обрабатывать файлы самостоятельно; эта задача передаётся любому выбранному вами веб-серверу.

Однако, если у вас нет возможности обслуживать медиа-файлы на том же виртуальном хосте ( VirtualHost ) что и Django, вы можете настроить Apache на обработку некоторых URL-запросов как статических и медиа-файлов, используя интерфейс mod_wsgi.

Это пример настройки Django в корне сайта, где явно указаны пути к robots.txt , favicon.ico , различным CSS-файлам, а также директориям /static/ и /media/ для их обработки как статических файлов. Все прочие URL-адреса будут обработаны при помощи mod_wsgi:

Обслуживание административных файлов¶

Если добавить приложение django.contrib.staticfiles в INSTALLED_APPS , сервер разработки Django автоматически обрабатывает административные приложения (и любые другие установленные приложения ), но это не годится для случая с другим сервером разработки. Вы сами несете ответственность за настройку Apache или любого другого сервера при использовании его для обслуживания административных файлов.

Административные файлы находятся по пути ( django/contrib/admin/static/admin ) в директории, где установлен Django.

Мы настоятельно рекомендуем использовать django.contrib.staticfiles для работы со статикой административного раздела (так же, как и в случае с веб-сервером, как это описано выше); это означает использование команды collectstatic для сбора статики в STATIC_ROOT , и настройку веб-сервера для обслуживания STATIC_ROOT в STATIC_URL ), но есть и несколько иных подходов:

Создание символьной ссылки на статические файлы, которые должны содержаться в корневом каталоге (для этого может потребоваться добавление +FollowSymLinks в конфигурации Apache).

Использование директивы Alias , как было показано выше, для создания псевдонима соответсвующего URL-адреса (вероятно это будет STATIC_URL + admin/ ), указывающего на фактическое расположение файлов.

Копирование директории с административной статикой в корень Apache.

Идентификация пользовательской базы данных с Apache¶

Django предоставляет возможность идентификации пользовательей средствами Apache см. mod_wsgi authentication documentation.

Если вы столкнулись с ошибкой UnicodeEncodeError

Если вы воспользовались настройками стандартной интернационализации Django (см. Интернационализация и локализация) и позволили пользователям загружать файлы, то должны убедиться, что среда для запуска Apache настроена для обработки не ASCII символов.Если это не так, будет возбуждено исключение UnicodeEncodeError при вызове функций, подобных os.path() с именами файлов, содержащими отличные от ASCII символы.

Чтобы избежать проблем, среда, в которой запущен Apache, должна содержать параметры, аналогичные следующим:

Обратитесь к документации вашей операционной системы, чтобы подобрать соответствующий синтаксис и настроить расположение конфигурационных файлов; /etc/apache2/envvars является общей для Unix-like систем. После внесения соответствующих изменений перезапустите Apache.

Развертывание Django с Apache и mod_wsgi - проверенный способ запустить Django в производство.

mod_wsgi - это модуль Apache, который может размещать любое приложение WSGI Python, включая Django. Django работает с любой версией Apache, которая поддерживает mod_wsgi.

Официальная документация mod_wsgi является основным источником для всех деталей о том , как использовать mod_wsgi. Наиболее актуальной отправной точкой является документация по установке и настройке .

Базовая конфигурация ¶

Первый элемент в строке WSGIScriptAlias - это базовый URL-адрес, по которому вы хотите обслуживать свое приложение ( / указывает корневой URL-адрес); второй элемент - это расположение «файла WSGI» (см. ниже) в вашей системе, обычно внутри вашего пакета проекта ( mysite в этом примере). Это указывает Apache обслуживать любой запрос ниже заданного URL-адреса с помощью приложения WSGI, определенного в этом файле.

Если вы устанавливаете зависимости Python своего проекта в один , добавьте путь в . См. Руководство по виртуальной среде mod_wsgi для получения более подробной информации. environnement virtuel WSGIPythonHome

Эта строка WSGIPythonPath гарантирует, что пакет вашего проекта доступен для импорта по пути Python; другими словами, чтобы это работало. import mysite

Этот элемент <Directory> гарантирует, что Apache имеет доступ к вашему файлу wsgi.py .

Затем вы должны убедиться, что этот файл, wsgi.py содержащий приложение WSGI, действительно существует. Начиная с версии 1.4 Django, startproject создайте ее для себя; в противном случае вам придется создать его самостоятельно. Проконсультируйтесь с общей документацией WSGI, чтобы узнать, какое содержимое по умолчанию следует разместить в этом файле, а также дополнительные элементы.

или используя режим демона mod_wsgi и стараясь запускать каждый сайт в своем собственном процессе демона.

Разрешение ошибок UnicodeEncodeError при загрузке файлов

Если вы получаете ошибки UnicodeEncodeError при отправке файлов, содержащих символы, отличные от ASCII, убедитесь, что Apache настроен на прием имен файлов, отличных от ASCII:

Эта конфигурация обычно находится в /etc/apache2/envvars .

Дополнительные сведения см. В разделе « Файлы » Справочного руководства по Unicode.

Использование режима демона mod_wsgi ¶

«Режим демона» - это рекомендуемый режим для работы mod_wsgi (на платформах, отличных от Windows). Для создания необходимого процесса демона группы и установки экземпляра Django там, вам необходимо добавить соответствующую WSGIDaemonProcess и директивы WSGIProcessGroup . Еще одно необходимое изменение в приведенной выше конфигурации, если вы используете режим демона, заключается в том, что его нельзя использовать WSGIPythonPath ; вам нужно заменить его с опцией python-path из WSGIDaemonProcess , например:

Файловый сервис ¶

Django не обслуживает файлы сам по себе; он делегирует эту работу выбранному вами веб-серверу.

Мы рекомендуем использовать выделенный веб-сервер (не тот, на котором также работает Django) для обслуживания статических файлов. Вот несколько хороших вариантов:

Если, однако, у вас нет другого выбора, кроме как обслуживать статические файлы в том же VirtualHost Apache, что и Django, вы можете настроить Apache на резервирование определенных URL-адресов для статической файловой службы, а остальные для интерфейса. mod_wsgi из Django.

В этом примере Django устанавливается в качестве корневого сайта, но обслуживает robots.txt , favicon.ico и все URL-адреса, начинающиеся с no /static/ и /media/ как статические файлы. Все остальные URL обслуживаются mod_wsgi:

Служба файлов интерфейса администратора ¶

Когда django.contrib.staticfiles в INSTALLED_APPS сервере разработки Django автоматически выполняет статические файлы для приложения администратора (и любого другого установленного приложения). Но это уже не так, как только вы используете другую конфигурацию сервера. Вы несете ответственность за настройку Apache или любого другого подходящего веб-сервера для обслуживания файлов административного приложения.

Статические административные файлы находятся в дистрибутиве Django ( django/contrib/admin/static/admin ).

Мы настоятельно рекомендуем использовать django.contrib.staticfiles для управления файлами администрирования (вместе с веб-сервером, как обсуждалось в предыдущем разделе; это включает в себя использование команды управления collectstatic для сбора статических файлов STATIC_ROOT , а затем настройку веб-сервер, который будет служить STATIC_ROOT URL-адресом STATIC_URL ), но есть еще три возможных подхода:

  1. Создайте символическую ссылку на файлы статического администрирования в корне вашего документа (что может потребовать добавления +FollowSymLinks в вашу конфигурацию Apache).
  2. Используйте директиву Alias , как показано выше, чтобы связать правильный URL (возможно, STATIC_URL + admin/ ) с фактическим расположением файлов интерфейса администратора.
  3. Скопируйте файлы статического администрирования, чтобы поместить их в корень документов Apache.

Аутентификация по базе данных пользователей Django из Apache ¶

Django предоставляет диспетчер, позволяющий Apache аутентифицировать пользователей напрямую с помощью механизмов аутентификации Django. См. Документацию по аутентификации mod_wsgi .

Развертывание django под Windows (Apache + mod_wsgi)

Ранее я запускал проект django локально и недавно пытался развернуть проект на сервере. Он был успешно развернут и провел здесь много времени. Я поговорю с вами здесь и надеюсь, что он будет полезен для таких новичков, как я.

1. Конфигурация среды:

1.Python версия 3.6

2. Серверная платформа: Windows Server 2016

3.django версия 2.0.7

2. Apache скачать и настроить



Вы можете скачать соответствующую версию здесь, я выбрал Apache2.4 VC14 64 в качестве версии (выберите в соответствии с потребностями)



2. После загрузки сжатого файла, распакуйте его напрямую, найдите в папке папку Apache24, эта папка является файлом сервера apache, установка не требуется, переместите папку Apache24 в нужное место.

Я напрямую перемещаю apache24 в корневой каталог диска C здесь:


3. Настройте файл сервера Apache:

Я использую блокнот, чтобы открыть его (вы также можете использовать другие инструменты программирования), вы увидите много кода, не беспокойтесь, не удаляйте код, сразу найдите следующую строку кода для изменения

Здесь вы можете найти crl + f.

4. Создайте сервис Apache

Откройте командную строку (администратор), перейдите в папку C: \ Apache24 \ bin (здесь это зависит от вашего фактического расположения в папке apache24), введите следующий код для создания службы:

Успешно установленный означает, что служба была успешно создана, в то же время может следовать некоторая другая информация, указывающая, правильна ли ваша конфигурация. Если есть ошибка, то проверьте шаг 3, чтобы увидеть, правильны ли путь и ip. Проблема, с которой я столкнулся, заключалась в том, что плагин c ++ сообщил об ошибке, просто скачайте и установите ее.


После успешного создания введите менеджер сервера, вы можете увидеть следующее

Щелкните правой кнопкой мыши, чтобы запустить, остановить и перезапустить службу. Здесь мы запускаем сервер, и статус меняется на работающий, затем он успешен (кроме того, командной строкой операции службы является sc delete "Apache2.4")

5. Введите адрес 192.168.31.227:8000, настроенный в файле конфигурации в браузере, и следующая страница будет успешно отображена:


3. Настройте Джанго


Имя файла в кавычках изменяется в соответствии с реальной ситуацией, а затем вводится после успешной установки

Появятся следующие три строки подсказок, эти три строки должны быть записаны, самое важное в конфигурации:

LoadModule wsgi_module "c:/users/penggangzhu/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"

На этом этапе mod_wsgi успешно установлен.

2. Настроить проект Django

Читайте также: