Установка Django на Fedora 9 (Apache2/mod_python)
Version 1.0
Автор: Falko Timme
Важно: этот документ предоставляется “как есть” без каких-либо гарантий. Это один из возможных способов настройки — он подходит в большинстве простых случаев, но не гарантированно сработает во всех окружениях.
Описание и назначение
Это практическое руководство объясняет, как быстро развернуть Django на Fedora 9 с Apache2 и mod_python. Здесь описаны команды и минимальные настройки, необходимые для того, чтобы запустить проект Django и подключиться к базе данных MySQL.
Кто выиграет от этой инструкции: системные администраторы и разработчики, которым нужно быстро развернуть тестовый или небольшой продакшен-сервер на Fedora 9. Для обучения разработке на Django см. официальную документацию.
Ключевые термины
- Django: высокоуровневый веб-фреймворк для Python.
- mod_python: модуль Apache, позволяющий интерпретировать Python-код в контексте веб-сервера.
- MySQL: реляционная база данных.
Содержание
- Установка MySQL
- Установка Apache и mod_python
- Установка Django и Python-биндингов для MySQL
- Настройка Apache для проекта Django
- Подключение Django к базе MySQL
- Проверка, отладка и безопасность
- Альтернативные подходы и когда это не подходит
- Чек-лист ролей и критерии приёмки
- Короткий словарь
- Полезные ссылки
1 Установите MySQL
Django поддерживает разные движки баз данных (PostgreSQL, MySQL, SQLite и др.). Для установки MySQL выполните:
yum install mysql mysql-serverСоздайте автозапуск сервиса MySQL при загрузке:
chkconfig --levels 235 mysqld onЗапустите MySQL:
/etc/init.d/mysqld startУстановите пароль для пользователя root (иначе доступ к базе будет открыт):
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpasswordПримечание: замените yourrootsqlpassword на надёжный пароль. Если сервер доступен извне, ограничьте доступ по сети и используйте firewall.
2 Установите Apache и mod_python
Если Apache2 и mod_python ещё не установлены, выполните:
yum install mod_pythonЭта команда установит также Apache, если он отсутствует.
3 Установите Django
Для установки Django и Python-биндингов для MySQL выполните:
yum install Django MySQL-pythonПосле этого у вас появится django-admin.py и необходимые библиотеки для работы с MySQL.
4 Настройка Apache для проекта Django
Перед настройкой Apache создайте проект Django (например, mysite) вне web-докрут-дерева по соображениям безопасности (в примере используется /home/mycode):
mkdir /home/mycode
cd /home/mycode
/usr/bin/django-admin.py startproject mysiteЭто создаст каталог /home/mycode/mysite с файлами проекта.
Создайте резервную копию существующей конфигурации и подготовьте новый файл конфигурации для mod_python:
cp /etc/httpd/conf.d/python.conf /etc/httpd/conf.d/python.conf_orig
cat /dev/null > /etc/httpd/conf.d/python.conf
vi /etc/httpd/conf.d/python.conf| LoadModule python_module modules/mod_python.so |
Этот блок конфигурации подходит для дефолтного vhost (/var/www/html). Если у вас несколько виртуальных хостов, поместите секцию
Пояснения:
— URL-префикс, по которому будет доступен ваш проект (например, http://www.example.com/mysite). - SetEnv DJANGO_SETTINGS_MODULE mysite.settings — указывает модулю Django файл настроек проекта.
- PythonPath “[‘/home/mycode’] + sys.path” — добавляет путь к проекту в sys.path.
Перезапустите Apache:
/etc/init.d/httpd restartПосле перезапуска откройте в браузере http://www.example.com/mysite. Если всё настроено верно, вы увидите стартовую страницу Django.

Страница означает успешную установку и работу фреймворка. Для разработки изучайте официальную документацию по Django.
5 Подключение MySQL к проекту Django
Создайте базу данных и пользователя в MySQL:
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. [...] |
Сохраните файл и перезапустите Apache, если считаете нужным.
Проверка и отладка
- Логи Apache: /var/log/httpd/error_log и access_log — первые места для поиска ошибок.
- Логи MySQL: /var/log/mysqld.log — ошибки подключения и прав.
- Ошибки Django в режиме отладки: включите DEBUG = True в settings.py (только для тестирования), чтобы увидеть стек-трейсы.
Типичные проблемы и решения:
- Ошибка импорта django.core.handlers.modpython: убедитесь, что Django установлен в системном Python, путь в PythonPath верный.
- Ошибка доступа к базе: проверьте пользователя, пароль, права и host (localhost/127.0.0.1).
- Права на файлы: Apache должен иметь доступ к каталогу проекта, но по возможности не давать полного доступа пользователю www-data/ apache.
Безопасность и эксплуатация
- Никогда не включайте DEBUG = True в продакшене.
- Используйте сложные пароли для пользователей БД.
- Ограничьте доступ к серверу через межсетевой экран (firewall) и настройте SELinux при необходимости.
- По возможности используйте виртуальные окружения Python (virtualenv) и изолируйте зависимости проекта. mod_python запускает код в процессе Apache — это может затруднять изоляцию окружения, поэтому для продакшена рекомендованно использовать WSGI (mod_wsgi) или отдельные WSGI-сервисы.
Альтернативные подходы и когда это не подходит
Когда этот способ не рекомендован:
- Когда нужна изоляция приложений и управление зависимостями — лучше использовать virtualenv и mod_wsgi.
- Когда требуется масштабирование — используйте WSGI-приложения за балансировщиком (nginx + uWSGI/gunicorn).
- Если вы разворачиваете современное приложение — Fedora 9 устарела; лучше выбрать поддерживаемую ОС и актуальные версии Python/Django.
Альтернативы:
- mod_wsgi вместо mod_python (рекомендуется для современных развёртываний).
- Контейнеризация (Docker) для изоляции и удобства миграции.
- Использование PostgreSQL вместо MySQL для расширенных возможностей транзакций и репликации.
Роли и чек-лист для развертывания
Администратор сервера:
- Установить и запустить MySQL.
- Настроить автозапуск mysqld.
- Заблокировать доступ к базам снаружи и настроить firewall.
Разработчик/DevOps:
- Создать проект Django вне document root.
- Установить зависимости (Django, MySQL-python или альтернативы).
- Настроить Apache и убедиться в корректной PythonPath и DJANGO_SETTINGS_MODULE.
Чек-лист перед сдачей в тестовую эксплуатацию:
- Доступна стартовая страница Django по URL.
- Подключение к БД работает, миграции применяются.
- DEBUG выключен.
- Логи собираются и ротация настроена.
Критерии приёмки
- Страница проекта доступна по заданному URL и возвращает HTML 200.
- Django успешно подключается к MySQL и может создавать/читать записи.
- Сервис Apache работает стабильно после перезапуска.
- Отсутствуют очевидные утечки прав доступа к файлам проекта.
Короткий словарь (1 строка)
- vhost — виртуальный хост Apache;
- mod_python — модуль Apache для запуска Python-кода;
- WSGI — интерфейс для запуска Python веб-приложений;
- virtualenv — инструмент для создания изолированного окружения Python.
Полезные ссылки
- Django: http://www.djangoproject.com
- Python: http://www.python.org
- Fedora: http://fedoraproject.org
Краткое резюме
- Установите MySQL, Apache/mod_python и Django через yum.
- Создайте проект вне document root и настройте Apache, добавив проект в PythonPath.
- Настройте подключение к MySQL в settings.py и проверьте работу через браузер.
Заметка: для продакшена рассмотрите использование mod_wsgi или WSGI-серверов, а также обновление ОС и версий компонентов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента