Установка Django в Ubuntu с использованием локального Python окружения
Что бы не засорять системный("глобальный") Python различными модулями, пакетами, библиотеками есть удобная и невероятно необходимая вещь - Virtualenv.
Virtualenv - инструмент, который создает отдельное, изолированое окружение для Python. Это очень удобно, например: создание локальной версии Python для отдельного проекта; разграничение версий библиотек или модулей для разных проектов; установка, удаление библиотек не затрагивая системной версии Python; использование разных версий Python для разных проектов, быстрое переключение между версиями.
Перед установкой Django создадим отдельное виртуальное окружение для нашего проекта, что бы не засорять глобальный Python и не ставить сам фреймворк Django глобально.
Для начала установим pip - установщик пакетов Python. Он может устанавливать, выводить список установленных пакетов, обновлять и удалять пакеты. pip это замена для easy_install. Он использует в основном те же методы для поиска пакетов, поэтому пакеты, которые были сделаны easy_installable являются совместимыми и с pip.
sudo apt-get install python-pip
Установка virtualenv:
sudo pip install virtualenv
Виртуальное окружение создадим в /var/www/python
mkdir /var/www/django && cd /var/www/django
Создаем виртуальное окружение с названием django(--prompt="(django)"), указываем версию Python(--python=/usr/bin/python3), сам Python кладем папку env, запрещаем использование системного site-packages (для полной изоляции вашего окружения от системы) --no-site-packages. В итоге выполняем:
virtualenv --no-site-packages --python=/usr/bin/python3 --prompt="(django)" env
Активируем окружение django, что бы далее работать и проводить дальнейшую установку в нем:
source /var/www/django/env/bin/activate
Примечание. Для окончания работы с окружением (например для переключение на системный python) следует выполнить в командной строке: deactivate
Установим Django
pip install django
Создаем проект, назовем его project. Проект в django может быть самостоятельным приложением, но в большой степени это просто структура директорий и настройки общие для всех приложений внутри. А приложение - это как раз код, который выполняется.
django-admin.py startproject <название проекта>, или django-admin startproject <название проекта>, в зависимости от системы. Выполняем:
cd /var/www/django django-admin.py startproject project
или
django-admin startproject project
После этого создастся новый каталог project
Переходим в папку созданного проекта и создаем приложение python manage.py startapp <название приложения>, назовем его app. Выполняем:
cd project python manage.py startapp app
Для теста делаем проверку на ошибки:
python manage.py validate
И запускаем http-сервер:
python manage.py runserver
По адресу http://127.0.0.1:8000/ - должна быть доступна страница приветсвия Django
uWSGI + Nginx + Django
Для запуска Django на продакшн серверах обычно используют связку с nginx. В нашем случае сделаем, что бы nginx - выступал в роли прокси сервера для динамики и отдавал статику напрямую.
Для виртуального окружения поставим uWSGI — быстрый, удобный и, при этом, надежный WSGI-сервер.
source /var/www/python/django/bin/activate pip install uwsgi
Создадим конфиг для uwsgi
touch /var/www/project/uwsgi.ini
Содержимое:
[uwsgi] home=/var/www/django/env chdir=/var/www/django/project master=True vacuum=True pidfile=/var/www/django/project/pids/project.pid max-requests=5000 socket=127.0.0.1:49001 processes=1 log-date = True pythonpath=/var/www/django/env/bin/python3 env=DJANGO_SETTINGS_MODULE=project.settings module = django.core.handlers.wsgi:WSGIHandler() touch-reload=/var/www/django/project-reload
Создадим виртуальны хост в nginx, динамику будем проксировать на 127.0.0.1:49001 отдавая на обработку WSGI-серверу
touch /etc/nginx/sites-available/django
Содержимое:
server { listen 80; server_name django.my; access_log /var/www/django/project/logs/nginx_access.log; error_log /var/www/django/project/logs/nginx_error.log; location / { uwsgi_pass 127.0.0.1:49001; include uwsgi_params; } location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { root /var/www/django; } }
Файлы для логов
touch /var/www/django/project/logs/nginx_access.log touch /var/www/django/project/logs/nginx_error.log
Символическая ссылка
ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/django
Перезапускаем nginx
/etc/init.d/nginx restart
Запускаем WSGI-сервер
uwsgi --ini /var/www/django/uwsgi.ini
Запуск нужно производить в виртуальном окружении, куда ставилась Django
По адресу django.my дожно отобразиться окно приветствия.
Добавить комментарий