Как установить Django на Mandriva 2009.1 (Apache2/mod_python)
Версия 1.0
Автор: Falko Timme
Введение
Этот практический материал объясняет, как установить Django на сервере Mandriva 2009.1 и запустить его с Apache2 через mod_python. Документ не рассматривает теоретические основы Django — для этого есть официальная документация. Здесь показан один из рабочих способов настройки; он не является единственно возможным.
Важно: предоставленная инструкция даётся «как есть» без каких-либо гарантий. Тестируйте изменения на тестовом окружении перед продакшеном.
Основные шаги (обзор)
- Обновить базу пакетов
- Установить MySQL и включить сетевое соединение
- Установить Apache2 и mod_python
- Установить Django и драйверы Python для MySQL
- Создать проект Django и настроить Apache
- Создать базу данных и подключить её в settings.py
1 Установка MySQL
Сначала обновим базу пакетов:
urpmi.update -aDjango поддерживает несколько движков баз данных (PostgreSQL, MySQL, SQLite и т.д.). Если вы хотите использовать MySQL, установите его так:
urpmi MySQL MySQL-clientПо умолчанию в пакете MySQL для Mandriva 2009.1 сетевой доступ отключён. Чтобы включить его, откройте /etc/my.cnf и раскомментируйте (удалите) строку skip-networking, например:
vi /etc/my.cnf| [...] # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # #skip-networking [...] |
Затем создадим системные ссылки для автозапуска MySQL:
chkconfig mysqld onи запустим сервис:
/etc/init.d/mysqld startПроверьте, что MySQL слушает сетевые сокеты:
netstat -tap | grep mysqlОжидаемый пример вывода:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 2602/mysqld
tcp 0 0 *:mysql-im *:* LISTEN 2576/mysqlmanager
[root@server1 ~]#Установите пароль для пользователя root MySQL (иначе база будет доступна без пароля):
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword2 Установка Apache и mod_python
Если Apache2 и модуль mod_python ещё не установлены, выполните:
urpmi apache-mod_pythonЭто также установит Apache2, если он отсутствует.
Примечание: модуль mod_python устарел для многих современных конфигураций. Рассмотрите использование mod_wsgi и виртуальных окружений (см. раздел «Альтернативные подходы»).
3 Установка Django
Установим Django и Python-байндинги для MySQL:
urpmi python-django python-mysql4 Настройка Apache для проекта Django
Сначала создайте проект Django (в примере — mysite). Для безопасности я помещаю проект за пределы docroot (по умолчанию /var/www/html), например в /home/mycode:
mkdir /home/mycode
cd /home/mycode
/usr/bin/django-admin.py startproject mysiteЭто создаст каталог /home/mycode/mysite с набором Python-файлов.
Теперь настройте Apache. Я делаю резервную копию оригинального файла /etc/httpd/modules.d/16_mod_python.conf и перезаписываю его:
cp /etc/httpd/modules.d/16_mod_python.conf /etc/httpd/modules.d/16_mod_python.conf_orig
cat /dev/null > /etc/httpd/modules.d/16_mod_python.conf
vi /etc/httpd/modules.d/16_mod_python.conf| LoadModule python_module extramodules/mod_python.so |
Примечания:
- Строка
указывает URL-путь (http://www.example.com/mysite). При необходимости измените его. - Обновите SetEnv DJANGO_SETTINGS_MODULE и PythonPath в соответствии с именем проекта и путём к нему.
- LoadModule оставьте в /etc/httpd/modules.d/16_mod_python.conf, а секцию
можно переместить в нужный виртуальный хост.
Перезапустите Apache:
/etc/init.d/httpd restartОткройте в браузере http://www.example.com/mysite. При успешной установке вы увидите стартовую страницу Django.

Это означает, что Django установлен и готов к разработке приложений. Для изучения разработки обратитесь к официальной документации: http://www.djangoproject.com/documentation/ .
5 Подключение 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;Откройте файл настроек проекта и укажите параметры БД:
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 Полезные команды и отладка
- Проверка статуса MySQL: /etc/init.d/mysqld status
- Проверка портов: netstat -tap | grep mysql
- Логи Apache: tail -n 200 /var/log/httpd/error_log
- Логи Django/приложения — если настроены, смотрите LOGGING в settings.py
- Проверка прав доступа к файлам: ls -la /home/mycode/mysite
Классические симптомы и действия:
- 500 Internal Server Error: посмотреть /var/log/httpd/error_log и включить PythonDebug On (только для отладки).
- 404 при обращении к /mysite: проверьте секцию
в конфигурации Apache и наличие index-файлов внутри проекта. - Ошибки подключения к MySQL: проверьте пользователя, пароль, host и port в settings.py и доступность сервера MySQL.
Альтернативные подходы и рекомендации
- mod_python против mod_wsgi: mod_python считается устаревшим для развёртывания современных Django-приложений. mod_wsgi чаще используется и лучше интегрируется с виртуальными окружениями (virtualenv) и WSGI-совместимыми приложениями.
- Используйте virtualenv / venv и pip для установки Django и зависимостей: это изолирует зависимости проекта от системных пакетов.
- Рассмотрите использование менеджеров процессов (gunicorn/uwsgi) + nginx для продакшена вместо Apache+mod_python.
Краткая методология развёртывания (mini-methodology)
- Подготовьте чистую VM или контейнер с Mandriva.
- Обновите систему и установите системные зависимости (MySQL, Apache).
- Создайте виртуальное окружение Python и установите Django через pip (альтернатива системным пакетам).
- Создайте проект и проведите локальную проверку (manage.py runserver).
- Настройте веб-сервер (mod_wsgi/nginx+uwsgi) и проверьте в тестовом окружении.
- Мигрируйте данные и переведите в продакшен после проверки.
Чек-лист по ролям
Администратор:
- Обновил пакеты: urpmi.update -a
- Установил MySQL и включил сетевой доступ
- Настроил автозапуск mysqld и httpd
- Проверил логи Apache и MySQL
Разработчик:
- Создал виртуальное окружение и проект Django
- Настроил settings.py и подключение к БД
- Проверил работу приложения локально и через Apache
Критерии приёмки
- Страница http://
/mysite открывается и отображает стартовую страницу Django. - В логах Apache нет ошибок уровня ERROR при загрузке проекта.
- Django успешно подключается к созданной базе данных и выполняет миграции (если применимо).
Отказоустойчивость и откат
Если после внесения изменений сайт перестал работать:
- Откатите конфигурацию Apache к резервной копии (/etc/httpd/modules.d/16_mod_python.conf_orig).
- Перезапустите apache: /etc/init.d/httpd restart.
- Временно включите PythonDebug On для отладки (не делать в продакшене).
- Проверьте журналы и исправьте ошибку конфигурации. После исправления выключите PythonDebug.
Безопасность и рекомендации
- Никогда не храните пароли в общедоступных репозиториях. Для продакшна используйте защищённые секреты/менеджеры.
- Не включайте PythonDebug в продакшене — он раскрывает внутреннее состояние приложения.
- Ограничьте доступ к MySQL только нужным хостам и настройте сильные пароли.
Глоссарий (одно предложение)
- Django: Python-фреймворк для веб-разработки, ускоряющий создание веб-приложений;
- mod_python: модуль Apache для встраивания Python (устаревающий в пользу mod_wsgi);
- mod_wsgi: современный способ запуска WSGI-приложений на Apache;
- virtualenv/venv: виртуальные окружения Python для изоляции зависимостей.
Ссылки
- Django: http://www.djangoproject.com/
- Python: http://www.python.org/
- Mandriva: http://www.mandriva.com/
Короткое резюме
Следуя шагам выше, вы установите Django на Mandriva 2009.1 с Apache/mod_python, подключите MySQL и получите рабочую среду для разработки. Для продакшена рассмотрите модернизацию стека (mod_wsgi, virtualenv, gunicorn/uwsgi + nginx).