Установка Django

Django (Джанго) - это свободный фреймворк для разработки веб-приложений на языке Python. 

Базовая поддержка Python стала доступна вместе с Python-селектором на всех тарифных планах на новых серверах (пожалуйста, о наличии python-селектора на вашем сервере уточняйте у специалистов технической поддержки).

Расширенная поддержка доступна на тарифном плане “Профи” (а также архивных тарифах "Типовой+" и "Интернет-проект"). Она позволяет устанавливать Python-модули, которые содержат в себе компоненты, написанные на С/C++ и компилирующиеся в процессе установки. 

В данной статье рассмотрим варианты запуска фреймворка Django версии 2.2.5 на тарифах с расширенной и базовой поддержкой Python версии 3.7. Для иных версий действия могут незначительно отличаться.

1. В панели управления хостингом (сPanel) выбираем в разделе "Программное обеспечение" пункт "Настройка Python приложений":

Django-1.png

2. На открывшейся странице нажимаем на кнопку “Создать приложение”.

django-2.png

3.Выбираем нужную версию Python, указываем каталог относительно корня аккаунта, в котором будут размещены файлы приложения, а также URL, по которму приложение будет доступно. Оставшиеся поля к заполнению не обязательны. После нажимаем на кнопку “Создать”.

django-3.png

4. В сPanel в пункте "Мастер баз данных MySQL" раздела "Базы данных" создаем новую базу данных, пользователя к ней, выдаём пользователю права:

django-4.png

5. Заходим на сервер по SSH, и после авторизации выполняем команду активации виртуального окружения, которая указана в рамке вверху страницы настройки приложения:

django-5.png

В результате перед строкой приглашения появится название виртуального окружения (myapp:3.7):

django-5-2.png

При необходимости, выход из виртуального окружения осуществляется командой deactivate

6. Выполняем установку базовых пакетов для работы Django.
Вариант для тарифов с поддержкой компилятора: pip install django mysqlclient
Вариант для остальных тарифов: pip install django pymysql
То есть для работы с базой данных можно использовать разные библиотеки. По умолчанию, работа Django предполагается с компилируемым модулем mysqlclient. Вариант с pymysql не требует наличия компилятора, но нужны будут правки в коде запуска приложения и установленных, которые рассмотрим ниже.

7. Создаем новый Django проект командой django-admin startproject mysite:

8. Модифицируем файл passenger_wsgi.py в директории ~/myapp. Он должен выглядеть следующим образом:

import sys, os 
cwd = os.getcwd()
sys.path.append(cwd)
sys.path.append(cwd + '/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = "mysite.settings"
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
9. Задаём список разрешённых доменов, по которым сайт будет отвечать. Для этого вносим правки в параметр ALLOWED_HOSTS в файле ~/myapp/mysite/mysite/settings.py:
django_9.png

10. Далее в этом же файле указываем параметры подключения к базе данных, которую создавали в пункте 4:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'sql_mode': 'traditional',
},
'NAME': 'yourdoma_db',
'USER': 'yourdoma_user',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
django_10.png
11. В конце того же файла ~/myapp/mysite/mysite/settings.py в конце в блоке настроек, касающихся статических файлов, указываем следующее:
STATIC_URL = '/mysite/static/' 
STATIC_ROOT = '/home/yourdoma/public_html/mysite/static/'
MEDIA_URL = '/mysite/media/'
MEDIA_ROOT = '/home/yourdoma/public_html/mysite/media/'

Это позволит nginx получить доступ к вашим статическим файлам.

12. Если при установке был использован модуль mysqlclient, то правки, указанные в этом пункте не требуются, переходите к следующему шагу. Для работы Django с pymysql требуются правки кода модулей и настроек приложения. Сперва отредактируем файл ~/myapp/passenger_wsgi.py и добавим в начало следующие строки:
try: 
import pymysql
pymysql.install_as_MySQLdb()
except ImportError:
pass

Итоговый файл должен выглядеть следующим образом: 

djando_12.png 
Аналогичный блок добавим в файл ~/myapp/mysite/manage.py. Получаем такое содержимое: 

django_12_2.png 
Далее, редактируем файл ~/virtualenv/myapp/3.7/lib/python3.7/site-packages/pymysql/__init__.py и заменим в нем version_info = (1, 3, 12, "final", 0) на version_info = (1, 3, 13, "final", 0): 

django_12_3.png 

13. Выполняем команду python manage.py collectstatic в директории ~/myapp/mysite:

django_13.png

Эта команда собирает всю статику из каталогов приложений и копирует ее в единый каталог, указанный в settings.py.

14. Для миграции базы данных там же выполняем команду python manage.py migrate

django_14.png

15. В панели управления хостингом делаем рестарт нашего приложения, чтобы изменения вступили в силу: 

django_15.png 

16. Открываем в браузере адрес нашего приложения. Должна появиться "дефолтная" страница Django: 

django_16.png 
Также, при правильной настройке по адресу http://yourdomain.by/admin/ должна открыться следующая страница админки Django:

django_17.png