Как установить Django на Debian Etch (Apache2/mod_python)
Краткое практическое руководство по установке Django на Debian Etch с Apache2 и модулем mod_python. Показывает установку MySQL, Apache и Django, создание проекта, конфигурацию виртуального хоста и подключение к базе данных. Включены советы по безопасности и альтернативы для продакшена.
Введение
Версия 1.0
Автор: Falko Timme
Это практическое руководство объясняет, как установить Django на сервере Debian Etch и запустить проект через Apache2 с mod_python. Руководство фокусируется на практических шагах: установка пакетов, базовая конфигурация и подключение MySQL. Теоретические основы фреймворка и расширённые темы описаны в официальной документации (см. ссылки в конце).
Важно: этот документ не даёт абсолютных гарантий и показывает один из возможных подходов. Подходите к настройке с учётом вашей инфраструктуры.
Внимание: Debian Etch — устаревший релиз. Для новых проектов рекомендуется современная версия Debian и использование mod_wsgi или Gunicorn + reverse proxy.
1 Установить MySQL
Django поддерживает несколько СУБД (PostgreSQL, MySQL, SQLite и др.). Если вы выбираете MySQL, установите сервер и клиент так:
apt-get install mysql-server mysql-clientПо умолчанию MySQL иногда слушает только localhost. Чтобы он принимал подключения на всех интерфейсах, откройте конфигурационный файл /etc/mysql/my.cnf и закомментируйте строку bind-address = 127.0.0.1, например через vi:
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 3085/mysqld
server1:~#Установите пароль для системного пользователя root MySQL (иначе доступ к базе может быть открыт):
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpasswordПримечание: используйте надёжные пароли и храните их в защищённом хранилище.
2 Установить Apache и mod_python
Если Apache2 и mod_python ещё не установлены, выполните:
apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-pythonЗамечание: mod_python устарел и не рекомендуется для новых проектов. Рекомендуемые альтернативы — mod_wsgi, Gunicorn или uWSGI.
3 Установить Django
Установите пакеты Django и Python-адаптер для MySQL (Debian-пакеты):
apt-get install python-django python-mysqldbАльтернатива: установка через virtualenv и pip даёт больше контроля и современных версий пакетов.
4 Конфигурировать Apache
В примере используется /var/www как DocumentRoot и файл виртуального хоста /etc/apache2/sites-available/default. Перед настройкой Apache создайте Django-проект (например, mysite). Для безопасности проект размещаем вне DocumentRoot, например в /home/mycode.
Создаём проект:
mkdir /home/mycode
cd /home/mycode
/usr/share/python-support/python-django/django/bin/django-admin.py startproject mysiteЭто создаст каталог /home/mycode/mysite с файлами проекта.
Добавьте в конфигурацию виртуального хоста (файл /etc/apache2/sites-available/default) блок Location, например между тегами
vi /etc/apache2/sites-available/default| [...] |
Пояснения:
— URL-путь, по которому будет доступен проект (например, http://www.example.com/mysite). - SetEnv DJANGO_SETTINGS_MODULE — указывает модулю mod_python, где брать настройки Django.
- PythonPath — добавляет путь с вашим проектом в sys.path.
Перезапустите Apache:
/etc/init.d/apache2 restartОткройте в браузере http://www.example.com/mysite — при удачной установке вы увидите стандартную страницу Django.

Эта страница подтверждает, что Django запущен и доступен через Apache/mod_python. Для дальнейшей разработки изучите официальную документацию: https://docs.djangoproject.com/en/1.10/ .
5 Подключение MySQL к проекту Django
Создайте базу данных и пользователя для вашего проекта (пример: база mysite, пользователь mysiteadmin). Зайдите в консоль MySQL под root:
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';
FLUSH PRIVILEGES;
quit;Затем откройте settings.py вашего проекта (например /home/mycode/mysite/settings.py) и измените параметры базы данных:
vi /home/mycode/mysite/settings.py| [...] DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. 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 команды могут отличаться):
python /home/mycode/mysite/manage.py syncdb
python /home/mycode/mysite/manage.py createsuperuser6 Ссылки и ресурсы
- Django: http://www.djangoproject.com
- Python: http://www.python.org
- Debian: http://www.debian.org
Дополнительно: когда этот метод уместен и когда нет
Когда подходит:
- У вас устаревший сервер или вы поддерживаете старую инфраструктуру на Debian Etch.
- Нужно быстро поднять тестовый экземпляр на старом оборудовании.
Когда не подходит / альтернативы:
- Для продакшена лучше использовать mod_wsgi, Gunicorn или uWSGI + reverse proxy (nginx).
- Современные установки лучше делать через virtualenv/venv и pip, чтобы управлять версиями Django и зависимостями.
Частые проблемы и решения
- Ошибка импорта django.core.handlers.modpython — проверьте, установлен ли пакет python-django и путь в PythonPath.
- 500 Internal Server Error при обращении — выключите PythonDebug On в продакшен и посмотрите логи Apache (/var/log/apache2/error.log).
- Невозможно подключиться к MySQL — проверьте, слушает ли mysqld нужный интерфейс, права пользователя и правильно ли указан хост в settings.py.
Безопасность и рекомендации для продакшена
- Отключите PythonDebug On в настройках Apache для продакшен-сайтов.
- Не используйте системного пользователя root для приложения; создайте отдельного пользователя MySQL с минимальными привилегиями.
- Ограничьте доступ к файлам проекта (чтение для веб-сервера, запрет на исполнение).
- Рассмотрите использование TLS/SSL (ssl-cert пакет и настройка виртуального хоста).
- Обновите Debian и пакеты — Etch устарел, поддержка и исправления безопасности отсутствуют.
Мини-методология развёртывания (шаблон шагов)
- Подготовить сервер: обновить пакеты, настроить бэкапы.
- Установить и настроить СУБД (MySQL или PostgreSQL).
- Создать пользователя и базу данных.
- Создать virtualenv (рекомендуется) и установить зависимости через pip или использовать пакеты Debian.
- Создать Django-проект и проверить в режиме разработки.
- Настроить веб-сервер (mod_wsgi/Gunicorn) и reverse proxy при необходимости.
- Настроить мониторинг, логирование и резервное копирование.
Роли и чек-листы
Администратор сервера:
- Обновление ОС и пакетов.
- Настройка брандмауэра и прав доступа.
- Настройка системных служб (MySQL, Apache).
Разработчик:
- Настройка virtualenv и зависимостей.
- Конфигурация settings.py (секретные ключи, базы).
- Запуск миграций и тестов.
Критерии приёмки
- Запрос к URL /mysite возвращает страницу Django без ошибок.
- Приложение успешно подключается к MySQL и выполняет миграции.
- В логах нет критических ошибок, и доступ ограничен (отсутствуют лишние права).
- Настройки Debug отключены в продакшен-среде.
Факто-бокс
- Поддержка: Debian Etch — устаревший релиз, используйте современные релизы для новых развёртываний.
- Рекомендуемая альтернатива для продакшена: mod_wsgi или Gunicorn + nginx.
- Документация Django: официальная документация всегда актуальнее устаревших туториалов.
Итог
Это практическое руководство показывает базовые шаги по установке Django на Debian Etch с Apache2 и mod_python: установка MySQL, Apache, Django, создание проекта, конфигурация виртуального хоста и подключение к MySQL. Для боевой эксплуатации следует рассмотреть более современные инструменты (mod_wsgi, virtualenv, контейнеры) и уделить внимание безопасности.
Важное: используйте этот документ как стартовую точку и адаптируйте под свою среду.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента