Установка Django
Django (Джанго) - это свободный фреймворк для разработки веб-приложений на языке Python.
Базовая поддержка Python стала доступна вместе с Python-селектором на всех тарифных планах на новых серверах (пожалуйста, о наличии python-селектора на вашем сервере уточняйте у специалистов технической поддержки).
Расширенная поддержка доступна на тарифном плане “Профи” (а также архивных тарифах "Типовой+" и "Интернет-проект"). Она позволяет устанавливать Python-модули, которые содержат в себе компоненты, написанные на С/C++ и компилирующиеся в процессе установки.
В данной статье рассмотрим варианты запуска фреймворка Django версии 2.2.5 на тарифах с расширенной и базовой поддержкой Python версии 3.7. Для иных версий действия могут незначительно отличаться.
1. В панели управления хостингом (сPanel) выбираем в разделе "Программное обеспечение" пункт "Настройка Python приложений":
2. На открывшейся странице нажимаем на кнопку “Создать приложение”.
3.Выбираем нужную версию Python, указываем каталог относительно корня аккаунта, в котором будут размещены файлы приложения, а также URL, по которму приложение будет доступно. Оставшиеся поля к заполнению не обязательны. После нажимаем на кнопку “Создать”.
4. В сPanel в пункте "Мастер баз данных MySQL" раздела "Базы данных" создаем новую базу данных, пользователя к ней, выдаём пользователю права:
5. Заходим на сервер по SSH, и после авторизации выполняем команду активации виртуального окружения, которая указана в рамке вверху страницы настройки приложения:
В результате перед строкой приглашения появится название виртуального окружения (myapp:3.7):
При необходимости, выход из виртуального окружения осуществляется командой 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, os9. Задаём список разрешённых доменов, по которым сайт будет отвечать. Для этого вносим правки в параметр ALLOWED_HOSTS в файле ~/myapp/mysite/mysite/settings.py:
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()
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',
}
}
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
Итоговый файл должен выглядеть следующим образом:
Аналогичный блок добавим в файл ~/myapp/mysite/manage.py. Получаем такое содержимое:
Далее, редактируем файл ~/virtualenv/myapp/3.7/lib/python3.7/site-packages/pymysql/__init__.py и заменим в нем version_info = (1, 3, 13, "final", 0) на version_info = (1, 4, 0, "final", 0):
13. Выполняем команду python manage.py collectstatic в директории ~/myapp/mysite:
Эта команда собирает всю статику из каталогов приложений и копирует ее в единый каталог, указанный в settings.py.
14. Для миграции базы данных там же выполняем команду python manage.py migrate
15. В панели управления хостингом делаем рестарт нашего приложения, чтобы изменения вступили в силу:
16. Открываем в браузере адрес нашего приложения. Должна появиться "дефолтная" страница Django:
Также, при правильной настройке по адресуhttp://yourdomain.by/admin/должна открыться следующая страница админки Django: