Начинаем развертывание Django-сайта на хостинге
Предположим, что мы завершили начальную разработку сайта на тестовом веб-сервере и решили предъявить его миру, то есть, выложить на боевом веб-сервере. Часто для этого арендуется хостинг или сервер целиком (иногда его части – технология VPN) где и планируется расположить проект с файлами и БД. У каждого хостинг-провайдера используется свое оборудование и программное обеспечение, поэтому конкретные шаги по установке проекта на разных хостингах будут отличаться. Но общий принцип похож и его я буду демонстрировать на примере довольно популярного хостера – Beget (это не реклама, мои сайты расположены на других хостингах, так сложилось исторически).
Возможно, некоторые из вас уже связаны с этим хостингом, учитывая его популярность. Это была главная причина выбора Beget в качестве примера. Далее, я буду показывать все так, как выглядит на момент записи этого видео. Возможно, со временем интерфейс и даже некоторые шаги изменятся, но, думаю, общий принцип сохранится. Поэтому будьте внимательны и не повторяйте просто так, бездумно, все, что я показываю в этом и последующих видео.
Итак, после простой регистрации в сервисе, с которым, я думаю, вы разберетесь самостоятельно, мы выбираем один из тарифных планов (я выбрал Blog с месячным тестовым периодом, вполне достаточным, чтобы развернуть сайт и записать эти занятия). Админ-панель выглядит следующим образом:
Здесь нужно открыть вкладку FTP и активировать SSH-доступ, так как он нам в дальнейшем пригодится:

Затем, перейдем на вкладку «Управление сайтами» и здесь у нас уже должен быть тестовый домен 3-го уровня от Beget:

Обратите внимание, с этим доменом связан конкретный каталог, где предполагается хранить файлы сайта. В частности, именно в нем мы будем располагать виртуальное окружение, и устанавливать нужную версию Python и Django, а также другие необходимые зависимости (библиотеки).
Конечно, некоторые из вас могут внимательно изучить админку от Beget и увидеть раздел CMS, где, в частности, имеется и Django:

Но я не рекомендую его устанавливать в автоматическом режиме, так как здесь используется далеко не последняя версия, да и версия языка Python также оставляет желать лучшего. Поэтому, мы будем делать все вручную и с использованием виртуального окружения. Благо, хостеры заботятся об этом и выкладывают подробную документацию об этапах установки того или иного фреймворка. В частности, на странице:
подробно описываются шаги по развертыванию фреймворка Django. Возможно, вас несколько удивит объем приведенной информации и множества шагов, которые необходимо выполнить для установки Django. Но я для того и записываю видео, чтобы постараться все «разложить по полочкам». Конечно, так, насколько я сам понимаю этот процесс.
Для взаимодействия с хостингом на уровне команд нам потребуется специальная программа SSH-клиент PuTTy. Подробно о ней написано здесь:
и используется для ОС Windows (полагаю, что большинство из вас работают именно под этой системой). Скачиваем файл с этой программой (если ее еще нет у вас, или версия устарела) и запускаем. У нас появится следующее окно:

В поле «Host Name (or IP address)» вводим SSH-адрес хостинга и нажимаем на кнопку «Open». Появится консольное окно, где нужно ввести логин и пароль, полученный при регистрации:

- установить версию языка Python 3.8.3 (такую же, что и в тестовом проекте);
- настроить виртуальное окружение с именем djangoenv;
- установить в виртуальное окружение фреймворк Django 3.1.5 (тот же, что и в тестовом проекте);
- выполнить настройку зависимостей для активации Django для сайта sbalak.beget.tech;
- создать БД MySQL, связать ее с приложением и перенести все таблицы из нашего проекта.
ssh localhost -p222
и еще раз введем пароль. (Список всех команд будет приведен в отдельном файле со ссылкой на github). Далее, нам понадобится раздел «Локальная установка Python», где подробно приведена установка интерпретатора выбранной версии. Мне нужна версия 3.8.3. Здесь в описании используется каталог .beget/tmp, которого у меня нет. Создать можно командой:
mkdir -p ~/.beget/tmp
а, затем, перейти в него:
cd ~/.beget/tmp/
Далее, по документации, для сборки интерпретатора Python потребуется библиотека ffi, которую нужно сначала скачать командой:
wget ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
Распаковать:
tar -xf libffi-3.2.1.tar.gz && cd libffi-3.2.1
Сконфигурировать:
./configure --prefix $HOME/.local LDFLAGS="-L/usr/local/lib"
make -j33 && make install
После этого, в директории с кодом libffi-3.2.1/x86_64-unknown-linux-gnu/include появятся два файла: ffi.h и ffitarget.h. Их нужно скопировать в каталог ~/.local/include. Переходим в корневой каталог
создаем нужные каталоги:
mkdir -p ~/.local/include
делаем для этой папки общий доступ и выполняем копирование:
cp x86_64-unknown-linux-gnu/include/ffi.h ~/.local/include/ cp x86_64-unknown-linux-gnu/include/ffitarget.h ~/.local/include/
Далее, нам нужно скачать и собрать Python 3.8.3. Снова переходим в каталог:
cd ~/.beget/tmp
и скачиваем архив с версией 3.8.3:
wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
Распаковываем архив и переходим в созданный каталог:
tar -xf Python-3.8.3.tgz && cd Python-3.8.3
Настраиваем все необходимые зависимости:
./configure --prefix=$HOME/.local LDFLAGS="-L/usr/local/lib"
и запускаем процесс компиляции:
make -j33 && make install
Проверить корректность установки можно командой:
~/.local/bin/python3.8 –V
Настройка окружения virtualenv
Все, язык Python нужной версии 3.8.3 установлен и следующим шагом нам нужно создать виртуальное окружение. Это окружение будем создавать в каталоге sbalak.beget.tech, поэтому вначале выполним команду:
cd ~/sbalak.beget.tech
Затем, для локально созданного интерпретатора языка, вызовем команду создания виртуального окружения, следующим образом:
~/.local/bin/pip3.8 install virtualenv ~/.local/bin/python3.8 -m virtualenv djangoenv
У нас появится папка djangoenv в каталоге sbalak.beget.tech. Виртуальное окружение с именем djangoenv создано. Активируем его командой:
source djangoenv/bin/activate
А командой
which python
можно проверить текущую работающую версию языка Python. Далее, мы установим пакет Django в это виртуальное окружение:
pip install django==3.1.5
(Здесь дополнительно указана версия пакета 3.1.5, так как я этого хочу, если вы устанавливаете последнюю версию, то просто напишите django). В принципе, фреймворк Django установлен и должен быть готов к работе. Создадим с его помощью проект coolsite и проверим как он будет работать. Вначале выполним знакомую нам команду:
django-admin.py startproject coolsite
Далее, в каталог sbalak.beget.tech нужно скопировать файл с именем passenger_wsgi.py и следующим содержимым:
# -*- coding: utf-8 -*- import os, sys sys.path.insert(0, '/home/s/sbalak/sbalak.beget.tech/coolsite') sys.path.insert(1, '/home/s/sbalak/sbalak.beget.tech/ djangoenv/lib/python3.8/site-packages') os.environ['DJANGO_SETTINGS_MODULE'] = 'coolsite.settings' from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
Здесь первый путь – путь к проекту, а второй – к виртуальному окружению. И создать файл .htaccess с содержимым:
PassengerEnabled On PassengerPython /home/s/sbalak/.local/bin/python3.8 #PassengerPython /home/s/sbalak/sbalak.beget.tech/venv/bin/python3.8
Кроме того, в пакете конфигурации в файле settings.py нужно указать разрешенный хост для работы фреймворка Django:
ALLOWED_HOSTS = ['sbalak.beget.tech', 'www.sbalak.beget.tech']
Не забываем сделать общий доступ к папке ~/.local, иначе сайт работать не будет! И в заключении в каталоге сайта sbalak.beget.tech создать подкаталог tmp и разместить в нем пустой файл restart.txt:
mkdir tmp; touch tmp/restart.txt

Все, теперь, обращаясь к странице http://sbalak.beget.tech должно появляться окно с тестовой страницей фреймворка Django: Вот, эта несколько запутанная и длинная последовательность шагов по установке интерпретатора языка Python, Django и связывания всего этого с конкретным сайтом. Опять же, запоминать все это не нужно. Можно сказать, что это справочная информация, которая обычно приведена в документации по каждому хостингу. Мы лишь последовательно следовали указанным шагам и получили ожидаемый результат. Но это был лишь первый этап по развертыванию нашего проекта. На следующем занятии мы перенесем наш сайт, создадим связи с БД и окончательно завершим процесс переноса проекта с тестового веб-сервера на реальный, боевой. Курс по Django: https://stepik.org/a/183363
# Запуск 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-проекта с веб-сервером. Он должен находиться в папке с доменным именем рядом с главным файлом проекта manage.py. Содержимое файла passenger_wsgi.py должно быть следующим:
import sys, os INTERP = os.path.expanduser("~/venv310/bin/python3") if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv) from project.wsgi import application
Здесь в строке INTERP= указан путь к исполняемому файлу виртуального окружения, созданного на этапе подготовки хостинг-контейнера; в строке from project.wsgi. — wsgi-файл, отвечающий за запуск приложения на веб-сервере.
# Выбор интерпретатора
В разделе Управление
Настройки веб-сервера выберите версию интерпретатора 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
При возникновении ошибок в работе базы данных миграция зависимостей не будет произведена, и дальнейшая работа приложения будет невозможна.
После успешной миграции зависимостей перезагрузите веб-сервер ( Управление
Перезагрузить ) и проверьте работу проекта. Откройте в браузере адрес, на котором расположен проект, и проверьте наличие стартовой страницы.
© Джино, 2003–2022. «Джино» является зарегистрированным товарным знаком.
Лицензия на телематические услуги связи №150549 от 09.03.2017.
Установка Django на хостинг
Django — это фреймворк на основе Python, который позволяет быстро и легко создавать мощные веб-сайты.
В этой статье показано, как установить и настроить Django на нашем хостинге.
Для начала нужно войти в панель управления хостингом Directadmin.
После чего перейти по ссылке:


Вводим имя директории, куда будет установлен Django.
Поля «Файл запуска» и «Точка входа» оставляем пустыми.
Также указываем путь к лог файлу.
После введения всех параметров нажимаем на кнопку «Создать приложение»
Обратите внимание, что версия Python должна быть 3.8 и выше.

Посля создания приложения, копируем ссылку на вход в виртуальное окружение.

Далее возвращаемся на главную страницу панели управления хостингом DirectAdmin и переходим по ссылке «Web SSH Client»
(Чтобы использовать SSH, Ваш тарифный план должен поддерживать эту услугу).

Далее в консоле ssh вводите свой логин и пароль, такие как и к панели управления хостингом DirectAdmin.
Вводите свою команду «Вход в виртуальное окружение»
# source /home/username/virtualenv/domains/example.com/django/3.8/bin/activate && cd /home/username/domains/example.com/django
Устанавливаем Django:
# pip install django
И создаем новый проэкт:
# django-admin startproject myapp ~/domains/example.com/django
Далее в настройках Django нужно внести изменения,
для этого откройте файл ~/domains/example.com/django/myapp/settings.py
и в поле ALLOWED_HOSTS = [‘example.com’, ‘www.example.com’] введите свой домен.
Копируем файл запуска:
# cp ~/domains/example.com/django/myapp/wsgi.py ~/domains/example.com/django/passenger_wsgi.py
После чего запускаем команду:
# python ~/domains/example.com/django/manage.py migrate
На этом установка завершена и можете приступать к созданию сайта на базе фреймворка Django.
наш офис работает
ПН-ПТ з 10:00 до 18:00
Как установить Django на хостинг

Инструменты разработки сайтов постоянно совершенствуются. Расширения функционала ресурсов обычно добиваются за счет применения различных языков программирования, например того же Python. Однако он требует довольно много времени, чтобы создавать интерактивные модули с нуля, потому и становятся популярными фреймворки, содержащие массу шаблонных решений.
Что такое Django и зачем он нужен
Один из популярных фреймворков – Django. Это свободный проект, позволяющий разрабатывать ПО с возможностью полной изоляции отдельных модулей. Фактически веб-ресурсы собираются из двух и более блоков, которые редактируются независимо друг от друга. В этом фреймворке используется принцип разработки, нацеленный на уменьшение дублирования данных (DRY).

Платформа Django подходит в следующих случаях:
- Планируется пользоваться только свободным ПО.
- Требуется быстро разработать сайт, внести изменения в готовый проект.
- Хочется сохранить совместимость с другими разработками.
Применение популярного фреймворка позволяет свободно менять исполнителя. У Django есть весьма развитое сообщество разработчиков – в нем легко найти нужную документацию или помощника в доработке готовых модулей или создании новых. Единственное ограничение платформы заключается в необходимости уместить все обрабатываемые данные в единой базе.
Если приложение становится «массивным», то приходится разбивать его на микросервисы, которые обрабатываются отдельно. Такой подход позволяет применять различные сценарии для каждого из независимых модулей. Но рассчитывать только Django не стоит, его возможностей хватит только на реализацию некоторых функций.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Как установить Django на сервер
Сайт, разработанный с включением модулей фреймворка Django, будет работать только при наличии установленной платформы (на хостинге). Есть несколько вариантов ее инсталляции – автоматически (у хостинг-провайдера Timeweb фреймворк можно найти в разделе «Каталог CMS», вкладка «Прочее») или вручную. Второй способ предполагает предварительную установку виртуального окружения virtualenv.
Это инструмент для создания изолированных сред, где запускаются обособленные проекты Python. Такое решение избавляет от проблемы зависимостей и совместимости разных версий приложения между собой. Подробнее о функционале virtualenv лучше почитать в официальных документах, а сейчас речь идет лишь об инсталляции программного обеспечения.
Последовательность действий:
Скачать актуальный релиз и распаковать его в корневой каталог:
wget https://files.pythonhosted.org/packages/53/c0/c7819f0bb2cf83e1b4b0d96c901b85191f598a7b534d297c2ef6dc80e2d3/virtualenv-16.6.0.tar.gz tar xvfz virtualenv-16.6.0.tar.gz
Создать виртуальное окружение с использованием нужной версии Python:
# Если требуется Python3: python3 virtualenv-16.6.0/virtualenv.py ~/myenv или # Если требуется Python2: python virtualenv-16.6.0/virtualenv.py ~/myenv
Активировать виртуальное окружение:
source ~/myenv/bin/activate
Инсталлировать Django при помощи команды pip:
pip install django
Если проект еще не создавался, сделать это командой:
django-admin.py startproject имя_проекта
Создать файл .htaccess, который следует расположить «по умолчанию» в каталоге public_html сайта. Внести в него содержимое:
Options +ExecCGI AddHandler wsgi-script .wsgi RewriteEngine On RewriteCond % !-f RewriteRule ^(.*)$ /index.wsgi/$1 [QSA,PT,L]
По тому же пути разместить файл index.wsgi (он также создается с нуля). Его содержимое для версии Django выше 1.7:
import os import sys sys.path.append('ПУТЬ_ДО_ПРОЕКТА') sys.path.append('ПУТЬ_ДО_ПАКЕТОВ_PYTHON') os.environ['DJANGO_SETTINGS_MODULE'] = 'имя_проекта.settings' import django django.setup() from django.core.handlers import wsgi application = wsgi.WSGIHandler()
Значение «путь до проекта» – это полный путь до каталога с установленной платформой Django, «путь до пакетов Python» – путь до каталога, куда было установлено виртуальное окружение virtualenv. «Имя проекта» – свободное название по решению администратора. Теперь на очереди создание файла settings.py. Он располагается по пути:
~/имя_сайта/public_html/имя_проекта/имя_проекта/settings.py
В нем нужно найти строку:
ALLOWED_HOSTS = []
И указать в ней название сайта:
ALLOWED_HOSTS = ['ДОМЕН']
Или сразу нескольких сайтов:
ALLOWED_HOSTS = ['ДОМЕН1','ДОМЕН2','ДОМЕН3']
Отладка этого файла поможет убедиться в отсутствии ошибок. Она инициируется внесением в него строки DEBUG = True. Проверить подключение проще всего вводом в адресную строку браузера названия сайта (домена). Если все установилось корректно, пользователь увидит приветственную страницу Django.

Система готова к эксплуатации (развертыванию сайтов). Перед началом программирования стоит уточнить версию Python, которая используется на хостинге, командой python3 – version. Это снизит риски сбоев из-за несовместимости приложения с интерпретатором.
В остальном вопросов обычно не возникает или они решаются путем обращения в техническую поддержку провайдера.
