Как развернуть Django на Windows Server с использованием Apache: Полное руководство

Почему Django на Windows Server и Apache?

Развертывание Django-приложений на Windows Server с использованием Apache предоставляет надежное и масштабируемое решение для hosting. Apache, как проверенный временем веб-сервер, в сочетании с мощью Django-фреймворка, позволяет эффективно обслуживать веб-приложения, включая те, которые требуют обработки больших объемов данных или сложной бизнес-логики. Использование Windows Server может быть предпочтительным выбором для компаний, инфраструктура которых исторически построена на продуктах Microsoft.

Цель и структура руководства

Цель этого руководства — предоставить пошаговые инструкции по развертыванию Django-приложения на Windows Server с использованием Apache в качестве веб-сервера и mod_wsgi для интеграции Django с Apache. Мы рассмотрим все этапы процесса, начиная с установки необходимого программного обеспечения и заканчивая настройкой Apache и деплоем приложения.

Предварительные требования (ПО и знания)

  • Базовые знания Windows Server.
  • Представление о принципах работы веб-серверов.
  • Опыт работы с Django-фреймворком.
  • Установленная Windows Server (рекомендуется последняя стабильная версия).

Необходимое ПО:

  • Python (рекомендуется последняя стабильная версия).
  • pip (менеджер пакетов Python).
  • Microsoft Visual C++ Redistributable.
  • Apache (httpd).

Настройка Windows Server для Django

Установка Python и pip

  1. Загрузите установщик Python с официального сайта python.org.
  2. Запустите установщик и убедитесь, что опция «Add Python to PATH» отмечена. Это позволит запускать Python из командной строки.
  3. Установите Python, следуя инструкциям установщика.
  4. Проверьте установку Python, открыв командную строку и выполнив python --version и pip --version. Если pip не установлен, его можно установить вручную, скачав get-pip.py и запустив python get-pip.py.

Установка и настройка IIS (Internet Information Services)

Хотя мы используем Apache, установка IIS может быть необходима для некоторых зависимостей и может помочь в дальнейшей настройке сервера. Установите IIS через Server Manager.

Установка и настройка Visual C++ Redistributable

Некоторые Python-пакеты, особенно те, которые используют C++ расширения, требуют установленного Visual C++ Redistributable. Загрузите и установите последнюю версию с сайта Microsoft.

Установка и настройка Django

Создание виртуального окружения

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

python -m venv venv
venv\Scripts\activate

Установка Django и необходимых пакетов

Активируйте виртуальное окружение и установите Django:

pip install django

Также, установите wfastcgi, необходимый для интеграции Django с IIS (даже если IIS не используется напрямую, он может потребоваться как зависимость):

pip install wfastcgi

Создание Django-проекта

Создайте новый Django-проект:

django-admin startproject myproject
cd myproject

Настройка Django settings.py (ALLOWEDHOSTS, STATICROOT, и др.)

Отредактируйте myproject/settings.py:

  • ALLOWED_HOSTS: Добавьте доменные имена или IP-адреса, с которых будет доступно приложение. В development-окружении можно указать ['*'].
  • STATIC_ROOT: Укажите путь, куда будут собираться статические файлы. Например, STATIC_ROOT = os.path.join(BASE_DIR, 'static').
  • DEBUG: Установите False в production-окружении.

Пример:

Реклама
# myproject/settings.py

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

DEBUG = False

ALLOWED_HOSTS = ['your_domain.com', '127.0.0.1']

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATIC_URL = '/static/'

Настройка Apache для Django

Установка Apache (httpd) для Windows

Загрузите Apache (httpd) с apachehaus.com или apachelounge.com. Выберите версию, совместимую с вашей архитектурой Windows. Распакуйте архив в удобное место, например, C:\Apache24.

Установка mod_wsgi

Загрузите mod_wsgi с apachelounge.com, убедитесь, что версия mod_wsgi соответствует вашей версии Python и Apache. Скопируйте файл mod_wsgi.so в папку modules Apache (например, C:\Apache24\modules).

Настройка Apache httpd.conf для работы с Django

Отредактируйте файл C:\Apache24\conf\httpd.conf:

  • Раскомментируйте строку LoadModule wsgi_module modules/mod_wsgi.so или добавьте ее, если ее нет.
  • Добавьте конфигурацию VirtualHost для вашего Django-приложения:
<VirtualHost *:80>
    ServerName your_domain.com
    DocumentRoot C:/path/to/your/project

    <Directory C:/path/to/your/project>
        <Files wsgi.py>
            <IfVersion >= 2.3>
                Require all granted
            </IfVersion>
        </Files>
    </Directory>

    Alias /static C:/path/to/your/project/static

    <Directory C:/path/to/your/project/static>
        <IfVersion >= 2.3>
            Require all granted
        </IfVersion>
    </Directory>

    WSGIScriptAlias / C:/path/to/your/project/myproject/wsgi.py
    WSGIDaemonProcess django_app python-path=C:/path/to/your/project python-home=C:/path/to/your/project/venv
    WSGIProcessGroup django_app
</VirtualHost>

Замените your_domain.com, C:/path/to/your/project, и C:/path/to/your/project/venv на актуальные значения.

Настройка файла WSGI

Убедитесь, что файл myproject/wsgi.py настроен правильно. Обычно он выглядит так:

# myproject/wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = get_wsgi_application()

Деплой и тестирование

Сбор статики (python manage.py collectstatic)

Соберите статические файлы Django-приложения:

python manage.py collectstatic

Это скопирует все статические файлы (CSS, JavaScript, изображения) в папку, указанную в STATIC_ROOT.

Настройка прав доступа к файлам и папкам

Убедитесь, что у учетной записи, от имени которой работает Apache, есть права на чтение и выполнение файлов Django-проекта, а также на запись в папку STATIC_ROOT.

Запуск Apache и тестирование Django-приложения

Запустите Apache:

httpd.exe -k install
httpd.exe -k start

Откройте браузер и перейдите по адресу your_domain.com или 127.0.0.1, чтобы проверить работу Django-приложения.

Устранение распространенных ошибок и отладка

  • Ошибка 500 Internal Server Error: Проверьте логи Apache (C:\Apache24\logs\error.log) и Django на наличие ошибок.
  • Ошибка статических файлов: Убедитесь, что STATIC_ROOT настроен правильно, и статические файлы собраны с помощью python manage.py collectstatic.
  • Проблемы с mod_wsgi: Проверьте, что версия mod_wsgi соответствует вашей версии Python и Apache, и что mod_wsgi.so правильно загружен в httpd.conf.
  • Неправильные права доступа: Убедитесь, что у учетной записи, от имени которой работает Apache, есть необходимые права доступа.

Добавить комментарий