Как установить django на хостинг
Начинаем развертывание 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». Появится консольное окно, где нужно ввести логин и пароль, полученный при регистрации:
В принципе, все эти шаги будем выполнять строго по предоставленной хостером документации (кроме последнего шага). Первым делом нужно войти, в так называемый Docker, чтобы иметь возможность запускать интерпретатор Python и устанавливать необходимые пакеты. Для этого выполним команду:
и еще раз введем пароль. (Список всех команд будет приведен в отдельном файле со ссылкой на github).
а, затем, перейти в него:
Далее, по документации, для сборки интерпретатора Python потребуется библиотека ffi, которую нужно сначала скачать командой:
Django
Для запуска сайта на Django необходимо, чтобы данный фреймворк был у вас установлен. Сделать это вы можете автоматически через панель управления в разделе «Каталог CMS», вкладка «Прочее» или вручную.
При ручной установке вы можете провести инсталляцию виртуального окружения virtualenv, после чего можно использовать pip для установки библиотек Python.
Версии Django и Python
На наших серверах доступны две версии интерпретатора: Python 2 и Python 3 (версии 3.4, 3.5, 3.6).
Для работы Python3 используйте для сайта версию PHP 7.x. При выборе более старых версий PHP будет использоваться Python 2.7
Совместимость версий Django и Python:
Версия Django | Версии Python |
---|---|
1.11 | 2.7, 3.4, 3.5, 3.6, 3.7 (в версии 1.11.17) |
2.0 | 3.4, 3.5, 3.6, 3.7 |
2.1 | 3.5, 3.6, 3.7 |
2.2 | 3.5, 3.6, 3.7, 3.8 (в версии 2.2.8) |
3.0 | 3.6, 3.7, 3.8 |
Установка Django
Шаг 1: установка virtualenv
Установите и активируйте virtualenv по нашей инструкции.
Шаг 2: установка Django
2.1. После можно приступить к установке django с помощью pip:
2.2. Если проект еще не создан, вы можете создать его командой:
Если при выполнении этой команды возникает ошибка:
То для создания проекта используйте команду:
2.3. Далее, чтобы развернуть проект, необходимо создать файл .htaccess в папке public_html сайта со следующим содержанием:
2.4. Там же нужно создать файл index.wsgi.
Для версии django меньше 1.7 cо следующим содержанием:
Для версии django 1.7 и выше cо следующим содержанием:
ПУТЬ_ДО_ПРОЕКТА – это полный путь до папки с проектом Django. Обычно создается в той папке, в которой была введена команда:
Пример полного пути:
Полный путь до вашего проекта можно узнать, введя в консоли:
Если Django устанавливается на основной сайт, то команда будет:
ПУТЬ_ДО_ПАКЕТОВ_PYTHON – это полный путь до папки, которая содержит пакеты Python для виртуального окружения (virtualenv).
Если виртуальное окружение было создано по инструкции на шаге 1, то полный путь можно узнать, введя команду:
Где python3.6 – это версия python, выбранная при установке виртуального окружения.
2.5. Далее необходимо добавить список разрешенных хостов (доменов) для проекта Django в файле settings.py, который находится по пути:
Если Django установлен на основной сайт, то команда будет:
В этом файле необходимо найти строку:
И указать в ней используемый домен:
Если сайт будет использоваться на нескольких доменах, их тоже необходимо прописать:
2.6. Также рекомендуется включить отладку проекта в том же файле settings.py (обычно включена по умолчанию), отредактировав строку с параметром DEBUG:
В результате при переходе по домену должна отобразиться приветственная страница:
Дополнительную информацию вы можете найти на официальном сайте проекта.
Отображение статических файлов
Для решения данной задачи установите нужное значение константы STATIC_ROOT в файле settings.py вашего приложения.
Значения u и user необходимо заменить на первую букву вашего логина и сам логин.
После выполните активацию виртуального окружения и запустите команду:
Django сгенерирует статические файлы и разместит их в папке, указанной в STATIC_ROOT.
Более подробную информацию можно получить в документации Django.
Также вы можете переместить имеющуюся папку static в директорию public_html. Это тоже позволит отобразить статические файлы.
Как установить Django на хостинг
Django — популярный, высокоуровневый web-фреймворк. Предназначен для web-приложений на Python, обладает большим набором готовых компонентов, которые будут полезны не только новичкам, но и профессионалам.
Важно: Django доступен только для панели управления ISPmanager. Ваш домен должен быть привязан к услуге хостинга. Если вы это еще не сделали, воспользуйтесь инструкцией Как привязать домен к хостингу
Как установить Django
Перейдите в раздел WWW-домены, выберите домен, для которого вы хотите установить Django, и нажмите Изменить:
В разделе «Дополнительные возможности» включите CGI-скрипты, Python, выберите Версию Python и нажмите Ok:
Перейдите в каталог вашего пользователя с помощью команды: cd
Убедитесь, что вы в нужном каталоге, выполнив команду: pwd
Создайте виртуальное окружение (Virtualenv) с произвольным именем. Виртуальное окружение необходимо создать для версии Python, которой вы планируете пользоваться для вашего проекта. Она должна совпадать с версией в шаге 3.
Чтобы узнать доступные версии Python, выполните команду:
Для создания виртуального окружения выполните команду:
python-3.7.6 — ваша версия Python,
djangoenv — название вашего виртуального окружения.
Активируйте ваше виртуальное окружение с помощью команды:
Где djangoenv — название вашего виртуального окружения.
Если слева от строки ввода команды появилось название вашего виртуального окружения, значит, оно активировалось:
Обновите pip, установите пакеты Django и mysqlclient с помощью команды:
Перейдите в корневой каталог вашего сайта с помощью команды:
Убедитесь, что вы в нужном каталоге, выполнив команду:
Важно: перед созданием проекта удалите все файлы и папки из каталога вашего сайта.
Создайте новый проект в корневом каталоге:
django-admin startproject project_name
Где project_name — название вашего проекта.
Откройте настройки вашего файла командой:
Где project_name — название вашего проекта.
В секции ALLOWED_HOSTS = [] добавьте имя вашего домена и его псевдонимы. Обратите внимание! Домены должны быть в кавычках:
В секции DATABASES укажите данные для подключения к MySQL:
Если у вас нет базы данных, вы можете создать её по инструкции Как создать базу данных?
Ниже секции STATIC_URL добавьте новую секцию: STATIC_ROOT=’static/’
После внесения изменений нажмите ESC для выхода в командный режим. Для сохранения изменений и выхода введите :wq и нажмите «Enter».
Создайте каталог со статическими файлами командой:
python project_name/manage.py collectstatic
Где project_name — название вашего проекта.
Выполните миграцию в MySQL с помощью команды:
python project_name/manage.py migrate
Создайте в корневом каталоге вашего сайта конфигурационный файл с именем passenger_wsgi.py и запишите в нем следующее:
В строке sys.path.insert(0, ‘/var/www/u0000006/data/www/faq-reg.ru/project_name’) измените путь к вашему проекту. Вместо u0000006 используйте логин вашей услуги хостинга: Как узнать логин хостинга. Путь к вашему проекту вы можете увидеть в панели управления:
В строке sys.path.insert(1, ‘/var/www/u0000006/data/djangoenv/lib/python3.7/site-packages’) укажите:
Готово, по адресу вашего домена должна отобразиться стартовая страница Django.
Как перезапустить проект на Django
Если вы изменили файлы проекта и хотите увидеть изменения, вам необходимо перезапустить проект. Для этого создайте файл .restart-app в корневой директории вашего сайта. После перезапуска проекта файл будет удалён автоматически.
Установка Django на виртуальном хостинге
Подготовка
Желательно иметь представление о Python 3 и Bash
Домен
Не забудьте разрешить подключение по FTP и SSH
Docker
Сначала необходимо подключиться к серверу по SSH ( инструкция от Beget )
Вместо username введите имя аккаунта у которого есть доступ к хостингу
Для перехода в виртуальное окружение Docker нужно выполнить следующую команду:
После чего возможно придётся ещё раз ввести пароль для доступа к аккаунту.
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.9.132-0-beget-acl x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage
Python
Проверить, установлены ли python3 и pip можно командами
Python 3.7.0
pip 20.1 from /home/u/user/.local/lib/python3.7/site-packages/pip (python 3.7)
Проверить где находится python3 можно командой
Установка новой версии Python
Установка Python
Подробнее про установку программ в Linux с помощью configure_make_make-install читайте здесь
/.local/include && cp x86_64-unknown-linux-gnu/include/ffi.h
/.local/include/ && cp x86_64-unknown-linux-gnu/include/ffitarget.h
/.local/include/ (docker) login@server:
/.local/bin/ или алиас для python3,
Проверим путь до python3
Этот путь нам и нужно прописать в PATH. Отбросим только /python3
Виртуальное окружение
Часто полезно пользоваться виртуальным окружением. Создавать их можно разными способами, например с помощью:
Обычно при активации виртуального окружения в терминале перед именем пользователя появляется называние окружения в круглых скобках.
Внутри контейнера вы скорее всего уже видите (docker) а название окружения может и не появиться.
Чтобы проверить перешли вы в окружение или нет выполнитеi
Либо перейдите в интерактивный режим
Выполните две команды
Они должны показать разный результат
Установка Django
Первым делом советую обновить pip
Затем непосредственно установить Django
Запуск первого проекта в Django
Переходим в директорию в которой нужно создать проект. Например в public_html.
django-admin startproject Project_Name
После удачного выполнения этой команды создаётся директория Project_Name
NB: Если вы пишите код в PyCharm эту директорию нужно кликнуть правой кнопкой мыши и выбрать Mark Directory as → Sources Root
Внутри вложенной директории Project_Name находятся файлы
__init__.py
settings.py
urls.py
wsgi.py
WSGI расшифровывается как Web Server Gateway Interface.
Это стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, и самим веб-сервером, например Apache
Пример файла manage.py
#!/usr/bin/env python «»»Django’s command-line utility for administrative tasks.»»» import os import sys def main (): «»»Run administrative tasks.»»» os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘Project_Name.settings’) try : from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( «Couldn’t import Django. Are you sure it’s installed and » «available on your PYTHONPATH environment variable? Did you » «forget to activate a virtual environment?» ) from exc execute_from_command_line(sys.argv) if __name__ == ‘__main__’: main()
passenger_wsgi.py
Нужно создать в корне сайта файл passenger_wsgi.py
cd /home/u/user/site.ru
touch passenger_wsgi.py
Для настройки passenger_wsgi.py понадобятся путь до Django и путь до проекта.
Путь до Django можно получить выполнив
Из этого пути нужно оставить
Посмотреть путь до проекта можно перейдя в родительскую директорию Project_Name (директорий Project_Name две нужна более высокого уровня) и выполнив pwd
Пример файла passenger_wsgi.py
Запуск приложения
В каждом проекте (project) обычно используется одно или несколько приложений (application)
Когда все приложения и конфигурации объединены они составляют веб-приложение.
applications + configurations = web application
Создаём первое приложение
python3 manage.py startapp first_app
Появится директория first_app в которой будут следующие файлы
settings.py
Переходим в директорию Project_Name/Project_Name
Редактируем файл settings.py
Добавляем домен, на котором Вы разворачиваете сайт в ALLOWED_HOSTS файла (из проекта) settings.py
Нужно добавить в список установленных приложений наше новое приложение first_app
INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘first_app’, ]
Запуск/Перезапуск сервера
Если перезапуск осуществляется с помощью скрипта выполняем (насколько я знаю, это актуально для хостингов Beget и dreamhost)
Возможно, на вашем хостинге запуск будет осуществляться с помощью runserver
Как установить Django на хостинг
Инструменты разработки сайтов постоянно совершенствуются. Расширения функционала ресурсов обычно добиваются за счет применения различных языков программирования, например того же Python. Однако он требует довольно много времени, чтобы создавать интерактивные модули с нуля, потому и становятся популярными фреймворки, содержащие массу шаблонных решений.
Что такое Django и зачем он нужен
Один из популярных фреймворков – Django. Это свободный проект, позволяющий разрабатывать ПО с возможностью полной изоляции отдельных модулей. Фактически веб-ресурсы собираются из двух и более блоков, которые редактируются независимо друг от друга. В этом фреймворке используется принцип разработки, нацеленный на уменьшение дублирования данных (DRY).
Платформа Django подходит в следующих случаях:
Применение популярного фреймворка позволяет свободно менять исполнителя. У Django есть весьма развитое сообщество разработчиков – в нем легко найти нужную документацию или помощника в доработке готовых модулей или создании новых. Единственное ограничение платформы заключается в необходимости уместить все обрабатываемые данные в единой базе.
Если приложение становится «массивным», то приходится разбивать его на микросервисы, которые обрабатываются отдельно. Такой подход позволяет применять различные сценарии для каждого из независимых модулей. Но рассчитывать только Django не стоит, его возможностей хватит только на реализацию некоторых функций.
Как установить Django на сервер
Сайт, разработанный с включением модулей фреймворка Django, будет работать только при наличии установленной платформы (на хостинге). Есть несколько вариантов ее инсталляции – автоматически (у хостинг-провайдера Timeweb фреймворк можно найти в разделе «Каталог CMS», вкладка «Прочее») или вручную. Второй способ предполагает предварительную установку виртуального окружения virtualenv.
Это инструмент для создания изолированных сред, где запускаются обособленные проекты Python. Такое решение избавляет от проблемы зависимостей и совместимости разных версий приложения между собой. Подробнее о функционале virtualenv лучше почитать в официальных документах, а сейчас речь идет лишь об инсталляции программного обеспечения.
Последовательность действий:
Скачать актуальный релиз и распаковать его в корневой каталог:
Создать виртуальное окружение с использованием нужной версии Python:
Активировать виртуальное окружение:
Инсталлировать Django при помощи команды pip:
Если проект еще не создавался, сделать это командой:
По тому же пути разместить файл index.wsgi (он также создается с нуля). Его содержимое для версии Django выше 1.7:
Значение «путь до проекта» – это полный путь до каталога с установленной платформой Django, «путь до пакетов Python» – путь до каталога, куда было установлено виртуальное окружение virtualenv. «Имя проекта» – свободное название по решению администратора. Теперь на очереди создание файла settings.py. Он располагается по пути:
В нем нужно найти строку:
И указать в ней название сайта:
Или сразу нескольких сайтов:
Отладка этого файла поможет убедиться в отсутствии ошибок. Она инициируется внесением в него строки DEBUG = True. Проверить подключение проще всего вводом в адресную строку браузера названия сайта (домена). Если все установилось корректно, пользователь увидит приветственную страницу Django.
Система готова к эксплуатации (развертыванию сайтов). Перед началом программирования стоит уточнить версию Python, которая используется на хостинге, командой python3 – version. Это снизит риски сбоев из-за несовместимости приложения с интерпретатором.
В остальном вопросов обычно не возникает или они решаются путем обращения в техническую поддержку провайдера.