Cat

Разворачивание Django-проекта на Replit

В этом посте мы разберём как развернуть Django на бесплатном сервисе Replit


 

Реклама

Icon Link
Полезные инструменты proDream 06 Март 2024 Просмотров: 841

В одном из прошлых постов я рассказал о том, как развернуть Django-проект на бесплатном сервисе PythonAnyWhere. В этом посте поговорим о другом сервисе, который знаком многим - Replit.

Replit - это онлайн IDE для разных языков программирования. Помимо онлайн интерпретатора, он также позволяет размещать у себя небольшие проекты. Естественно, с ограничениями, но, как и было сказано ранее, этот способ подойдёт для демонстрации проекта, а не для рабочего использования.

Развернуть проект на Replit намного проще, чем на PythonAnyWhere. Сервис не предоставляет БД. Проект запущенный на этом сервере должен использовать SQLite3 или внешнюю БД. Также у Replit нет WSGI-сервера - проект будет использовать встроенный в Django веб-сервер.

 

Подготовка проекта.

Процесс подготовки проекта, а именно создание .env-файла, не будет сильно отличаться от того, что мы описывали для разворачивания на PythonAnyWhere.

Мы также выносим настройку SECRET_KEY и DEBUG в .env-файл. Поскольку БД не предоставляется, используем стандартные настройки Django.

Тем не менее, внести некоторые изменения в settings.py всё же потребуется: мы добавим одну строку, разрешающую отображение сайта внутри фрейма:

X_FRAME_OPTIONS = '*'

 

Для запуска проекта на Replit, необходимо в корне проекта (там, где находится manage.py) создать файл .replit.
В файле прописываем следующую команду:

run = "python manage.py runserver 0.0.0.0:3000"

 

Создание проекта на Replit.

Первым делом необходимо зарегистрироваться или войти, используя сторонние сервисы, такие, как Google, GitHub и другие.

Сайт сервиса: https://replit.com/

После авторизации мы попадаем в личный кабинет.

Слева выбираем раздел Home, если выбран какой-то другой, и попадаем на главную страницу ЛК. Прямо по центру страницы располагается список последних открытых проектов "Recent Repls", а над ним находятся кнопки создания проектов. Нажимаем на кнопку "Create Repl".

 

Перед нами отображается окно с выбором шаблона и названия проекта.
На этом этапе необходимо решить, каким образом вы будете загружать файлы в сервис.
Можно выбрать шаблон "Django", будут созданы основные файлы проекта и дальше писать код на сайте.
В этой статье, мы рассматриваем вариант с импортом проекта из репозитория на GitHub.
Нажимаем кнопку в правом верхнем углу "Import from GitHub".

 

В открывшемся окне также необходимо сделать выбор:

  • Предоставить сервису доступ к GitHub и выбрать нужный репозиторий из списка.
  • Вставить ссылку на репозиторий (В таком случае приватный репозиторий клонировать не удастся).

Выбираем нужный вариант и нажимаем кнопку "Import from GitHub".

 

Далее репозиторий будет клонирован и откроется страница проекта.

 

Настройка проекта для запуска.

Поскольку в Replit не поддерживаются .env-файлы, вместо них есть раздел "Secrets" в блоке "Tools" в левой части экрана. Откроем его и добавим в него переменные из .env-файла.

 

Там же в блоке "Tools" выбираем раздел "Shell" для доступа к терминалу.
В нём нам необходимо создать виртуальное окружение и установить зависимости.

Вводим в терминал команду:

python -m venv venv

 

При первом вводе будет предложено установить инструменты Python в проект. Вводим Y и повторяем ввод первой команды.

После создания виртуального окружения, активируем его:

source venv/bin/activate

 

Устанавливаем зависимости из файла requirements.txt:

pip install -r requirements.txt

 

Применяем миграции:

python manage.py migrate

 

Собираем статику:

python manage.py collectstatic

 

Закрываем терминал и наживаем большую кнопку "Run" в верхней части экрана.

Проект запустится, но мы увидим ошибку "Bad Request (400)". Она вызвана тем, что адрес сайта не указан в ALLOWED_HOSTS.


Чтобы исправить это, в окне "Webview", в адресной строке нажимаем кнопку "New tab". Сайт откроется в новой вкладке. Копируем из адресной строки адрес сайт, он будет выглядеть примерно так: https://351b1912-c31d-4b10-a236-e7b8046a752d-00-3ll5ep3cujefu.picard.replit.dev/

Открываем файл settings.py и добавляем его в ALLOWED_HOSTS:

ALLOWED_HOSTS = ["127.0.0.1", "351b1912-c31d-4b10-a236-e7b8046a752d-00-3ll5ep3cujefu.picard.replit.dev"]

 

Сайт автоматически перезагрузится и в окне Webview отобразится главная страница.

На этом разворачивание сайта закончено.

 

Настройка статики.

Поскольку в Replit нет стороннего веб-сервера, статику должна отдавать сама Django. Для этого откроем файл settings.py и изменим настройки статических файлов:

STATIC_URL = "static/"
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

 

Завершение.

Теперь, пока сайт запущен, можно закрыть страницу проекта и он продолжит работу. В сервисе есть ограничения, но для демонстрации проекта или временного решения, Replit подойдёт отлично.

Лично мне, Replit нравится значительно больше, чем PythonAnyWhere, как минимум из-за скорости работы и простоты настройки.

Автор

    Нет комментариев

    Реклама