Найти тему
Timeweb Cloud

Деплой Python-приложения на сервер

Оглавление

Деплой (deploy) – это процесс публикации (развёртывания) вашего приложения на сервере для того, чтобы оно было доступно в интернете или другой сети.

В этой статье мы рассмотрим туториалы по развертыванию Flask- и Django-приложений на сервере от Timeweb Cloud и облачной платформе PythonAnywhere.

В качестве примера мы будем использовать простейшее приложение, которое выводит на экран приветствие “Hello, world!”

Читайте также: Деплой React-приложения

Деплой приложения на сервере

Когда вы разворачиваете приложения на облачном сервере, кроме непосредственного запуска контейнера может потребоваться настройка реверс-прокси (например nginx) и SSL. Docker — инструмент, который упрощает создание, развертывание и запуск приложений с использованием контейнеров.

Контейнер docker — это набор зависимостей и кода, организованный в виде программного обеспечения, которое позволяет приложениям быстро и эффективно работать в различных вычислительных средах.

В первую очередь мы устанавливаем Docker с официального сайта.

Приложение Flask

Опубликуем приложение Flask.

Настройка Dockerfile

Создаём файл и называем его Dockerfile. Добавим в него код:

# Docker позволяет наследовать существующие образы, поэтому в качестве базового образа устанавливаем образ Python.

FROM python:3.8-slim-buster

# Меняем рабочую директорию внутри контейнера. Все оставшиеся операции будут запускаться внутри /app контейнера.

WORKDIR /app

# Устанавливаем все зависимости из файла requirements.txt внутри контейнера.

RUN pip install -r requirements.txt

# Копируем все остальные файлы из текущей директории (та, в которой находится файл Dockerfile) в директорию /app внутри образа.

COPY . /app

# Запускаем интерпретатор python

ENTRYPOINT [ "python" ]

# Добавляем список параметров к ENTRYPOINT. для выполнения команды, которая запускает приложение. Это похоже на то, как вы бы запустили его Python на своем терминале, используя команду python name_.py

CMD ["name_app.py" ]

Создание образа контейнера

Создадим образ для только что созданного контейнера:

docker build -t flask-docker .

Запуск контейнера

Для запуска контейнера выполняем код:

docker run -d -p 5000:5000 flask-docker

-d – для запуска контейнера в автономном режиме

-p – для указания порта, который будет открыт

Запустив localhost:5000 в браузере, увидим приложение.

Приложение Django

Деплой Django-приложения на Docker мало чем отличается от деплоя Flask-приложения.

Создадим виртуальное окружение и Dockerfile, в который добавим код:

FROM python:3.8-slim-buster

WORKDIR /app

COPY requirements.txt requirements.txt

RUN pip3 install -r requirements.txt

COPY . /app

CMD ["python3", "manage.py", "runserver", "0.0.0.0:5000"]

Создадим файл .dockerignore, в котором будет находиться название нашего виртуального окружения:

venv

Создадим образ контейнера и запустим контейнер, используя команды build и run:

docker build --tag django-docker .

docker run --publish 8000:8000 django-docker

Запустив в браузере http://localhost:5000/, увидим приложение.

Кстати, в своем официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.

Деплой на облачной платформе PythonAnywhere

При использовании облачных сервисов, таких как PythonAnywhere или Heroku, вы сможете писать проекты прямо в браузере. Но для такой работы вам понадобится установка и подготовка Git-репозитория.

Установка Git и создание Git-репозитория

Вначале необходимо подготовить проект для Github. В своей учетной записи Github создайте новый репозиторий во вкладке Repositories. Назовите его по своему усмотрению и нажмите Create repository.

Дальше вам нужно подключить проект к Github с помощью Git. Установить Git можно с официального сайта git-scm.com.

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

git init

Она инициализирует новый репозиторий git для вашего проекта.

Создание файла .gitignore

Необходимо создать файл в корневом каталоге проекта с именем .gitignore, который используется для указания git, какие файлы и папки игнорировать. Откройте редактор и внесите:

*.log

*.pot

*.pyc

__pycache__/

db.sqlite3

db.sqlite3-journal

media

static

Мы указываем Git игнорировать базу данных разработки, статические файлы и медиафайлы.

Теперь создаём requirements.txt. В нем перечислены все зависимости, необходимые проекту для правильной работы.

pip freeze > requirements.txt

Подключение git-репозитория к Github

Теперь нужно связать локальный репозиторий с репозиторием на GitHub. Наберите в консоли следующую команду:

git add --all

git commit -m "first commit"

git branch -M main

git remote add origin https://github.com/<your_github_username>/<your_project>.git # your_github_username – логин на Github,  your_project – название репозитория

git push -u origin main

Внутри командной строки будет предложено ввести имя пользователя и пароль. С недавнего времени вместо пароля вводится персональный токен доступа. Для его получения, необходимо:

  1. В GitHub перейти в Settings -> Developer Settings -> Personal access tokens и нажать на Generate new token
  2. Нажать repo. Токен будет применим для всех указанных действий в ваших репозиториях.
  3. Нажать Generate Token.

Теперь, при обновлении браузера, вы увидите весь код со своего компьютера в репозитории Github.

Публикация на облачном сервисе

Для использования созданного репозитория на PythonAnywhere необходимо создать аккаунт уровня «Beginner». После этого на главной странице во вкладке Consoles запускаем Bash-консоль. Чтобы опубликовать приложение на облачном сервисе, понадобится помощь программы, которая сделает это автоматически.

Внутри bash-консоли запускаем строку для установки программы:

pip3.6 install --user pythonanywhere

Теперь активируем только что установленную утилиту:

$ pa_autoconfigure_django.py https://github.com/<your_github_username >/<your_project>.git

Приложение доступно для использования в интернете!

Заключение

Мы рассмотрели, как выполнить деплой Python-приложения на облачной платформе PythonAnywhere и сервере от Timeweb Cloud.

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

Наука
7 млн интересуются