Гид по технологиям

Как установить Django на Debian Lenny (Apache2/mod_python)

5 min read Django Обновлено 28 Nov 2025
Установка Django на Debian Lenny
Установка Django на Debian Lenny

Версия 1.0
Автор: Falko Timme
Следите за мной в Twitter

1 Установка MySQL

Django поддерживает несколько бэкендов баз данных (PostgreSQL, MySQL, SQLite и др.). Если планируете использовать MySQL, установите его следующей командой:

aptitude install mysql-server mysql-client

В процессе установки вам будет предложено задать пароль root для MySQL:

New password for the MySQL “root” user: <– yourrootsqlpassword
Repeat password for the MySQL “root” user: <– yourrootsqlpassword

По умолчанию MySQL в Debian часто слушает только localhost. Если вы хотите, чтобы MySQL был доступен с других интерфейсов, отредактируйте /etc/mysql/my.cnf и закомментируйте строку bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf

| [...] # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 [...] |

Затем перезапустите MySQL:

/etc/init.d/mysql restart

Проверьте, что сетевой доступ включён:

netstat -tap | grep mysql

Ожидаемый пример вывода:

server1:~# netstat -tap | grep mysql  
tcp        0      0 *:mysql                 *:*                     LISTEN      3403/mysqld  
server1:~#

Важно: Открытие доступа MySQL на всех интерфейсах увеличивает поверхность атаки. Делайте это только при необходимости и настройте firewall/правила доступа.

2 Установка Apache и mod_python

Если Apache2 и libapache2-mod-python ещё не установлены, выполните:

aptitude install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-python

Замечание: libapache2-mod-python работает в сочетании с модулем prefork. Для современных развертываний рекомендуется рассмотреть mod_wsgi или использование WSGI-сервера (gunicorn/uwsgi) за обратным прокси (nginx), см. раздел «Альтернативные варианты».

3 Установка Django

Для установки Django и Python-биндингов для MySQL выполните:

aptitude install python-django python-mysqldb

Это установит системный пакет Django, совместимый с Debian Lenny.

4 Настройка Apache

В этом руководстве я использую /var/www как document root виртуального хоста, а файл конфигурации — /etc/apache2/sites-available/default. Отредактируйте пути под ваши условия.

Перед настройкой Apache создайте проект Django (например, mysite) вне document root по соображениям безопасности (например, /home/mycode):

mkdir /home/mycode  
cd /home/mycode  
/usr/share/python-support/python-django/django/bin/django-admin.py startproject mysite

Это создаст директорию /home/mycode/mysite с базовыми файлами Django.

Теперь откройте конфигурацию виртуального хоста (в примере — /etc/apache2/sites-available/default) и вставьте внутри контейнера следующие строки:

vi /etc/apache2/sites-available/default

| [...] SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonDebug On PythonPath "['/home/mycode'] + sys.path" [...] |

Пояснения:

  • Путь в первой строке () — это URL, по которому будет доступен проект (например, http://www.example.com/mysite). Изменяйте по необходимости.
  • SetEnv DJANGO_SETTINGS_MODULE указывает модулю Django, где брать настройки проекта. Подставьте ваш модуль.
  • PythonPath должен содержать путь к каталогу, где находится ваш проект (в примере /home/mycode).

Затем перезапустите Apache:

/etc/init.d/apache2 restart

Откройте в браузере http://www.example.com/mysite. Если всё настроено корректно, вы увидите стартовую страницу Django.

Стартовая страница Django, отображаемая в браузере

Это подтверждение успешной установки Django. Для разработки читайте документацию: http://www.djangoproject.com/documentation/.

5 Подключение к MySQL из проекта Django

Чтобы использовать MySQL в проекте Django, создайте базу данных (например, mysite) и пользователя (mysiteadmin):

mysql -u root -p

В консоли MySQL выполните:

CREATE DATABASE mysite;  
GRANT ALL ON mysite.* TO 'mysiteadmin'@'localhost' IDENTIFIED BY 'mysiteadmin_password';  
GRANT ALL ON mysite.* TO 'mysiteadmin'@'localhost.localdomain' IDENTIFIED BY 'mysiteadmin_password';  
quit;

Затем откройте settings.py в каталоге проекта (например, /home/mycode/mysite) и измените настройки БД:

vi /home/mycode/mysite/settings.py

| [...] DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = 'mysite' # Or path to database file if using sqlite3. DATABASE_USER = 'mysiteadmin' # Not used with sqlite3. DATABASE_PASSWORD = 'mysiteadmin_password' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. [...] |

После этого можно применять миграции и создавать суперпользователя (в старых версиях Django команды могут отличаться; смотрите документацию вашей версии).

6 Полезные ссылки

Отладка и распространённые ошибки

  • Ошибка импорта модулей Python в Apache: убедитесь, что PythonPath включает путь к проекту и виртуальное окружение (если используется).
  • 500 Internal Server Error: смотрите логи Apache (/var/log/apache2/error.log), включите PythonDebug On временно для подробного трассинга.
  • Подключение к MySQL: проверьте права пользователя и host (localhost vs IP).
  • Версии пакетов: системный пакет python-django в Debian Lenny может быть старым; для новых проектов рассмотрите установку Django через virtualenv/pip.

Альтернативные варианты и рекомендации

  1. Использовать mod_wsgi вместо mod_python. mod_python устарел и ограничен; mod_wsgi даёт более надёжную интеграцию WSGI-приложений и обычно предпочтительнее.
  2. Запуск приложения через WSGI-сервер (gunicorn/uwsgi) и использование nginx/Apache в роли обратного прокси. Это обеспечивает лучшую производительность и масштабируемость.
  3. Применять virtualenv для изоляции зависимостей и установки более новых версий Django через pip.

Когда описанный метод может не подойти:

  • Если нужен современный стек (Python 3, новые версии Django), пакетный менеджер Debian Lenny может быть слишком старым.
  • Если требуется высокая нагрузка и многопроцессная модель — рассмотрите комбинированный подход с nginx + gunicorn.

Контрольный список перед запуском в продуктиве

  • Проверить корректность настроек DATABASE_* в settings.py.
  • Убедиться, что Apache настроен для правильного пользователя и прав доступа к файлам проекта.
  • Отключить PythonDebug в продуктиве (PythonDebug Off).
  • Ограничить доступ к MySQL по IP и настроить firewall.
  • Настроить резервное копирование базы данных.
  • Настроить логирование и ротацию логов Apache.

Критерии приёмки

  • При обращении к URL /mysite приложение возвращает HTML-страницу без ошибок сервера.
  • Приложение успешно подключается к созданной базе mysite под учётной записью mysiteadmin.
  • Логи Apache не содержат необработанных исключений Django при простых запросах.

Глоссарий (в одну строку)

  • Django — высокоуровневый фреймворк для веб-приложений на Python.
  • mod_python — модуль Apache для запуска Python-программ (устаревший в пользу mod_wsgi).
  • WSGI — интерфейс между веб-сервером и Python-приложением.
  • virtualenv — инструмент для изоляции Python-зависимостей.

Безопасность и соответствие требованиям приватности

  • Пароли и секреты не храните в репозитории; используйте переменные окружения или защищённые конфигурации.
  • Если проект обрабатывает персональные данные граждан ЕС, рассмотрите требования GDPR: минимизация данных, права субъектов, шифрование при передаче и хранении.
  • Обновляйте пакеты безопасности и применяйте обновления ОС.

Быстрый план развёртывания (мини-методология)

  1. Подготовка сервера: обновление системы, firewall, создание учётной записи администратора.
  2. Установка MySQL и настройка доступа.
  3. Установка Apache и модулей.
  4. Создание виртуального окружения (рекомендуется) и установка Django.
  5. Создание проекта и базовой страницы, настройка Apache.
  6. Тестирование локально и в тестовой среде.
  7. Перенос в продуктив и мониторинг.

Краткое резюме

Django можно быстро развернуть на Debian Lenny с помощью системных пакетов и mod_python, однако для современных проектов рекомендуется использовать virtualenv, модуль mod_wsgi или WSGI-серверы (gunicorn/uwsgi) за обратным прокси. В руководстве приведены команды установки, пример конфигурации Apache и шаги для подключения MySQL.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как сбросить репозиторий Git: stash, reset, clean
GIT

Как сбросить репозиторий Git: stash, reset, clean

YouTube Music на Windows — PWA и десктопные клиенты
Приложения

YouTube Music на Windows — PWA и десктопные клиенты

Family Pairing в TikTok — как включить контроль
Безопасность

Family Pairing в TikTok — как включить контроль

Apple Pay не работает — как быстро исправить
Мобильные платежи

Apple Pay не работает — как быстро исправить

Проверка и очистка использования диска Docker
Docker

Проверка и очистка использования диска Docker

Как исправить ошибки Hulu на Xbox One
Техподдержка

Как исправить ошибки Hulu на Xbox One