# Запуск Django-проекта на Джино.Хостинге
Запуск Django-проекта состоит из следующих этапов:
- подготовка хостинг-контейнера к запуску Django-проекта;
- загрузка готового проекта на сервер;
- запуск проекта.
# Подготовка хостинга к запуску Django-проекта
Создайте новый хостинг-контейнер и подключите услуги Поддержка веб-приложений и Поддержка SSH. По умолчанию для работы с базами данных Django использует SQLite, но если её возможностей будет недостаточно, в разделе Услуги подключите MYSQL или PostgreSQL.
Для запуска Django-проекта на хостинге нужно создать виртуальное окружение для той же версии Python, на которой создан проект. Создайте виртуальное окружение командой:
/opt/alt/python37/bin/virtualenv --python /opt/alt/python310/bin/python3 venv310
Здесь /opt/alt/python37/bin/virtualenv
— путь к утилите virtualenv, отвечающей за создание виртуального окружения на хостинге; /opt/alt/python310/bin/python3
— путь к интерпретатору Python 3.10. Все доступные версии Python и пути к их интерпретаторам представлены в разделе УправлениеТехническая информация.
На Джино.Хостинге утилита для создания виртуального окружения vitualenv расположена по адресу /opt/alt/python37/bin/virtualenv
и с помощью неё создаётся виртуальное окружение для любой версии Python.
# Загрузка Django-проекта
Способы загрузки Django-проекта на сервер:
- загрузка через протоколы передачи файлов (FTP, FTPS, SFTP);
- использование git-репозитория;
- загрузка проекта с помощью инструментов, встроенных в IDE.
# Запуск Django-проекта
Для запуска Django-проекта нужно:
- указать URL-адрес, на котором будет работать приложение;
- установить зависимости проекта;
- создать файл passenger_wsgi.py, который будет отвечать за обработку веб-сервером запросов к Django;
- выбрать интерпретатор для домена.
# Указание URL
В папке проекта в файле settings.py найдите строку ALLOWED_HOSTS = []
и укажите в ней адрес своего сервера. Например: ALLOWED_HOSTS = ['example.com']
.
# Установка зависимостей проекта
Для некоторых проектов может понадобиться установка дополнительных зависимостей, установленных в локальном окружении. Чтобы установить зависимости в виртуальное окружение на сервере, создайте файл requirements.txt на локальной машине. Для этого выполните команду:
pip freeze > requirements.txt
При загрузке проекта на сервер проследите, чтобы файл requirements.txt был загружен вместе с другими файлами проекта.
После этого активируйте созданное на хостинге виртуальное окружение:
source ./venv310/bin/activate
Далее в папке приложения выполните команду:
pip install -r requirements.txt
# passenger_wsgi.py
Файл passenger_wsgi.py обеспечивает взаимодействие Django-проекта с веб-сервером. Он должен находиться в папке с доменным именем. Содержимое файла passenger_wsgi.py должно быть следующим:
import sys, os
INTERP = os.path.expanduser("~/venv310/bin/python3")
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'project'))
from project.wsgi import application
Здесь в строке INTERP=
указан путь к исполняемому файлу виртуального окружения, созданного на этапе подготовки хостинг-контейнера; в строке from project.wsgi...
— wsgi-файл, отвечающий за запуск приложения на веб-сервере.
В строке sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'project'))
добавляется абсолютный путь до папки проекта на сервере в список путей для поиска модулей Python.
# Выбор интерпретатора
В разделе УправлениеНастройки веб-сервера выберите версию интерпретатора Python, на которой работает ваше приложение.
После этого в адресной строке браузера введите адрес вашего сервера.
Вы должны увидеть стартовую страницу вашего сайта.
Запуск Django-приложения на Хостинге, созданном до 28.04.2022
Для запуска Django-проекта на Хостинг-аккаунте, созданном до 28.04.2022, понадобится виртуальное окружение, созданное командой:
virtualenv-3.9 venv39
После создания виртуального окружения активируйте его:
source ./venv39/bin/activate
Далее установите Django с помощью стандартного менеджера пакетов pip:
pip install django
После этого создайте новый проект прямо на сервере или загрузите уже имеющийся.
Папка, содержащая проект, должна находиться вне папки ~/domains
.
Для запуска Django-проекта создайте файл .htaccess в папке ~/domains/your_domain
. Здесь your_domain
— доменное имя, на котором будет работать сайт. Если у вас ещё нет домена или он не привязан к Хостингу, воспользуйтесь техническим адресом сервера. Технический адрес сервера представлен в разделе УправлениеНастройки SSH в строке Имя сервера
и имеет общий вид 123xyz.hosting.myjino.ru или j12345678.myjino.ru.
В файл .htaccess поместите следующие директивы:
AddHandler wsgi-script .wsgi
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]
Этот файл определяет, что в качестве рабочего файла для mod_passenger будет использоваться файл с расширением .wsgi, и далее напрямую указывает имя этого файла django.wsgi.
Теперь создайте файл django.wsgi в папке ~/domains/your_domain
.
Содержимое django.wsgi должно быть следующим:
import os, sys
virtual_env = os.path.expanduser('~/venv39')
activate_this = os.path.join(virtual_env, 'bin/activate_this.py')
exec(open(activate_this).read(), dict(__file__=activate_this))
sys.path.insert(0, os.path.expanduser('~/path/to/your/project'))
from project.wsgi import application
В этом файле указан путь к папке с виртуальным окружением, путь к файлу, активирующему виртуальное окружение, и путь к wsgi-файлу проекта.
Далее в разделе УправлениеНастройки веб-сервера проверьте версию Python, которая используется на домене. Она должна совпадать с версией, для которой создано виртуальное окружение.
После этого в адресной строке браузера укажите выбранное доменное имя и проверьте работу проекта.
# Подключение баз данных
По умолчанию в качестве СУБД Django использует SQLite, но к проекту можно подключить MySQL или PostgreSQL в разделе Услуги.
После этого в разделе УправлениеУправление MySQL(PostgreSQL) создайте новую базу данных и нового пользователя для неё:
Для подключения базы данных к Django-проекту понадобится клиент, работающий с выбранным типом баз данных.
В случае с MySQL — это mysqlclient, для PostgreSQL — psycopg2.
Примечание
В связи с особенностями функционирования программной платформы, mysqlclient и psycopg2 временно не могут быть установлены в виртуальное окружение, созданное для Python 3.10. Для версий Python 3.9 и старше всё работает.
Установите клиент в активированном виртуальном окружении:
(venv39)user@hosting: pip install mysqlclient
После того как клиент успешно установится, настройте подключение приложения к базе.
В файле settings.py приведите раздел DATABASES
к следующем виду:
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'j12345678_django-app',
'USER': 'j12345678',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT':'3306',
}
}
...
в строке
ENGINE
укажите, какой движок используется для работы с базами данных (mysql или postgresql);в строках
NAME
,USER
иPASSWORD
укажите данные только что созданной базы данных и пользователя;в строках
HOST
иPORT
опишите сетевые параметры для подключения к базе данных. В данном случае база данных и Django-проект расположены в одном хостинг-контейнере, поэтому подключаться к базе можно с параметромlocalhost
. Для подключения Django-проекта к базе данных, расположенной на другом хостинг-контейнере, воспользуйтесь данными, представленными в разделе УправлениеТехническая информация.
В консоли SSH-подключения перейдите в папку с приложением и запустите миграцию зависимостей:
python manage.py makemigrations
python manage.py migrate
При возникновении ошибок в работе базы данных миграция зависимостей не будет произведена, и дальнейшая работа приложения будет невозможна.
После успешной миграции зависимостей перезагрузите веб-сервер (УправлениеНастройки веб-сервераПерезагрузить) и проверьте работу проекта. Откройте в браузере адрес, на котором расположен проект, и проверьте наличие стартовой страницы.