Как стать автором
Поиск
Написать публикацию
Обновить
Selectel
IT-инфраструктура для бизнеса

Как перестать бояться и задеплоить Django-проект в облако самым простым способом

Время на прочтение4 мин
Количество просмотров5.8K

Привет! По себе знаю, что любителям программирования нравится именно программировать, но очень не нравится делать деплой приложений на сервер. Пугают неведомые Linux, Docker и Gunicorn с Nginx. Что это все такое и как оно должно работать в связке?

Туториалы по деплою для новичков — просто перечисление незнакомых команд с комментариями, от которых становится еще страшнее. Так я и решил создать максимально простой гайд для начинающих, из которого выбросил абсолютно все, без чего можно обойтись на первом, тестовом деплое. Я хочу показать «скелет» действий и доказать, что это не такой страшный монстр.

Важно! Ни в коем случае не загружайте на сервер настоящее веб-приложение таким образом. Я убрал из туториала все меры для безопасности и стабильной работы. Этот способ подходит только для пробного деплоя.

Используйте навигацию, если не хотите читать текст полностью:
Поднимаем облачный сервер
Обновляем и устанавливаем зависимости
Переносим проект на сервер
Запуск сервера Django

Поднимаем облачный сервер


Допустим, у нас есть простейшее приложение на Django с базой данных SQLite в виде файла в папке проекта. Нам нужно поднять сервер, на который мы это все перенесем. Как это сделать?

1. Зарегистрируйтесь в панели управления Selectel и откройте вкладку Продукты, находящуюся в левом верхнем углу.


2. Перейдите в раздел Облачные серверы и нажмите Создать сервер.


3. В поле Источник выберете Ubuntu 24. Затем подберите нужные ресурсы будущего сервера. Если достаточно пробного деплоя, можно обойтись минимумом — для этого выберите фиксированную конфигурацию и перейдите на вкладку Shared. Выберите 10% ядра и 512 ГБ оперативной памяти.


Если у вас есть уже готовый проект, можно взять и побольше ресурсов. Тут уж смотрите сами.

4. Для подключения к серверу на базе Ubuntu 24 понадобится добавить SSH-ключ. Это делается ниже, в разделе Доступ. Если у вас есть готовые ключи, можно добавить один из них. Если нет — создать новый. Как сгенерировать ключ, подробно описано в статье.

5. После всех настроек нажмите кнопку Создать сервер и дождитесь его включения. Когда он будет готов к работе, справа появится зеленая надпись ACTIVE.


6. После кликните на название сервера и перейдите в раздел Порты. Оттуда скопируйте публичный IP-адрес виртуальной машины.

7. Поздравляю — теперь у вас есть собственный облачный сервер!



Обновляем и устанавливаем зависимости


Подключаемся через терминал


Общаться с сервером нужно через терминал (Terminal в MacOS, Windows Terminal или вкладка Терминал в IDE) — запустите его и подключитесь к серверу по SSH с помощью следующей команды:


81.177.222.28 замените на IP-адрес своего сервера.

Обновляем пакеты


Казалось бы, без этого шага можно обойтись. Подумаешь, будут не самые свежие версии компонентов ОС, но нет. Ubuntu должна обновить свои компоненты и установить все необходимое для дальнейшей работы. Тем более, в этом нет ничего сложного:

apt update && apt upgrade -y


Устанавливаем Python, pip и venv


Далее нам нужно установить минимальный джентльменский набор: Python, систему управления пакетами pip и утилиту venv для создания виртуальных окружений. Все это можно сделать с помощью всего одной команды:

apt install python3 python3-pip python3-venv

Переносим проект на сервер


Создаем папку проекта


Пора думать, куда нам разместить код нашего веб-приложения. Можно поместить его почти в любую директорию на сервере, но все-таки есть несколько общепринятых мест для размещения, и папка var/www — одно из них.

Создадим в ней директорию нашего проекта, которую назовем myproject:

mkdir -p /var/www/myproject


Подготовим проект для отправки на сервер


В нашем минималистичном туториале достаточно будет сделать всего одно действие с нашим кодом — в файле settings.py добавить IP-адрес нашего сервера в список ALLOWED_HOSTS:

ALLOWED_HOSTS = ['81.177.222.28', '127.0.0.1']

Отлично. Сейчас код нашего веб-приложения существует только на компьютере — его нужно перенести на сервер. Есть с десяток разных способов, как сделать это. Например, можно использовать команду scp, rsync, git (с переносом напрямую на сервер или через GitHub) или FTP-клиент вроде FileZilla.

Копируем код проекта на сервер


Выбор конкретного способа зависит от ваших предпочтений и ограничений виртуальной среды. Главное, чтобы в итоге все файлы вашего проекта оказались на сервере в созданной папке /var/www/myproject. И еще: не нужно копировать на сервер вашу локальную папку виртуального окружения venv. Это будет долго и совершенно ни к чему. Например, для macOS команда, копирующая локальную папку Django-проекта myproject на сервер (и исключающая из копирования папку .venv), выглядит так:
rsync -av --exclude='.venv' /Users/ruslan/PycharmProjects/myproject/ root@81.177.222.28:/var/www/myproject

Обратите внимание, что помимо пути до проекта на вашем компьютере нужно указать, в какую директорию на сервере его сохранить. Как это сделать — показано в примере. Нужно только заменить IP-адрес и название папки при необходимости.

Внимание! Выполните эту команду в терминале на компьютере, а не на сервере.

Запуск сервера Django


Возвращаемся на сервер и установим виртуальное окружение:

python3 -m venv /var/www/myproject/venv

Перейдем в папку Django-проекта и активируем виртуальное окружение:

cd /var/www/myproject
source /var/www/myproject/venv/bin/activate 

Следующим шагом установим фреймворк Django внутри виртуального окружения и запустим manage.py runserver:

pip install django
python manage.py runserver 0.0.0.0:8000

Да-да, на production-сервере мы запустили development. Для полноценной работы вашего приложения так делать нельзя, но для тестового деплоя — почему бы и да.

Далее вы можете просто набрать IP-адрес вашего сервера и указать через двоеточие порт для общения с клиентом. И все — ваше приложение работает в интернете.


Как видите, все не так уж и страшно. После того, как вы проделаете все эти этапы, можно приступить к изучению настоящего production-деплоя — со всеми полноценными настройками и мерами безопасности. Но это уже тема для отдельного разговора. Еще увидимся!
Теги:
Хабы:
Всего голосов 42: ↑34 и ↓8+36
Комментарии4

Публикации

Информация

Сайт
slc.tl
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия
Представитель
Влад Ефименко