Установка Django

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

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

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

В данной статье будет описываться один из способов запуска фреймворка Django на сервере с базовой поддержкой Python версии 3.6

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

2) В появившемся окне выбираем версию интерпретатора Python, указываем директорию, где будет размещаться наше приложение и относительный URL, по которому оно будет открываться. После чего нажимаем Setup.django2.png

3) Открываем адрес нашего приложения в браузере, чтобы убедиться, что приложение установилось.django3.png

4) После создания приложения добавляем Django в появившемся разделе "Модули" (modules) и запускаем процесс установки, нажимая кнопку Update.django4.png

5) Переходим в консоль и активируем виртуальное окружение командой, указанной в настройках вашего Python-приложения в CPanel.django5.png

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

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

6) Переходим в каталог нашего приложения cd ~/myapp и создаем новый Django проект командой  django-admin startproject mysite:django7.png

7) Модифицируем файл 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()

8) Задаём список разрешённых доменов, по которым сайт будет отвечать. Для этого вносим правки в параметр ALLOWED_HOSTS в файле ~/myapp/mysite/mysite/settings.py: django8.png

9) В том же файле  ~/myapp/mysite/mysite/settings.py в блоке настроек, касающихся статических файлов, указывем следующее:

STATIC_ROOT = '/home/yourdoma/public_html/mysite/static/'
STATIC_URL = '/mysite/static/'
MEDIA_ROOT = '/home/yourdoma/public_html/mysite/media/'
MEDIA_URL = '/mysite/media/'

django9.png

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

После этого выполняем команду python manage.py collectstatic в директории ~/myapp/mysite:django10.png

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

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

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

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

12) Для работы с базой данных MySQL устанавливаем модуль PyMySQL (аналогично описанному в пункте 4): django14.png

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

14) В файле ~/myapp/mysite/mysite/settings.py редактируем переменную DATABASES и вносим туда правки следующего вида (имя созданной БД, логин и пароль берутся из предыдущего шага):

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'OPTIONS': {
        'sql_mode': 'traditional',
        },
    'NAME': 'yourdoma_db',
    'USER': 'yourdoma_user',
    'PASSWORD': 'password',
    'HOST': 'localhost',
    'PORT': '3306',
    }

django15.png

15) Отредактируем файл ~/myapp/mysite/manage.py и добавим в него строчки:

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass

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

16) Заменим MySQLdb на pymysql в следующем файле:
~/virtualenv/myapp/3.6/lib/python3.6/site-packages/django/db/backends/mysql/base.pydjango17.png

17) Проверим соединение с базой данных, выполнив команду python manage.py migrate в папке ~/myapp/mysite:    django18.png