Разработка и развертывание готового веб-приложения может быть довольно ресурсоемким процессом, включающим в себя множество различных этапов от планирования и написания кода будущего приложения до тестирования, отладки и публикации в сети интернет. Также необходимо арендовать доменное имя и выделить необходимые мощности. Как правило, все эти шаги распределяются между несколькими командами — команда разработки пишет код, команда тестировщиков тестируют разработанное приложение, а команда DevOps производит выкатку и деплой конечного продукта.
Однако, можно существенно упростить и ускорить некоторые процессы развертывания вашего веб-приложения. В текущей статье мы подробно рассмотрим процесс публикации веб-приложения, написанного с использованием фреймворка Flask, с помощью сервиса Apps.
Timeweb Cloud представляет для своих клиентов готовые услуги типа Platform as a Service (PaaS). PaaS — это сервис, с помощью которого пользователь может опубликовать свое веб-приложение, при этом не занимаясь сложными техническими вопросами. Данный подход позволяет уделять время только написанию кода конечного приложения, не беспокоясь об остальных шагах, связанных с его публикацией. Все прочие технические моменты, включая настройку и поддержку серверного оборудования, возьмет на себя облачный провайдер.
В сервисе Apps достаточно лишь указать ссылку на репозиторий с исходным кодом веб-приложения. Дальнейшие шаги, включая сборку и публикацию вашего проекта, платформа сделает за вас.
Действия, которые требуются выполнить со стороны пользователя, сводятся к минимуму и не требуют широких технических познаний.
Чтобы воспользоваться сервисом Apps, у вас должен быть аккаунт в Timeweb Cloud.
Если его пока нет — зарегистрируйтесь на сайте по кнопке «Создать аккаунт». Для физического лица будет необходимо указать имя (ФИО), контактный ящик и номер телефона.
Вы будете переадресованы в панель управления. Сохраните предложенный пароль или задайте собственный — и можно начинать работу.
В рамках данной статьи мы будем использовать веб-приложение, написанное на языке программирования Python с использованием Flask — популярного свободного и легковесного фреймворка для создания веб-сайтов и веб-приложений. Для Flask написано множество различных плагинов и расширений, что позволяет создавать сайты для различных целей.
Наше веб-приложение — это платформа для ведения блогов. В качестве функционала реализованы публикация и удаление постов. Публиковать посты могут только зарегистрированные пользователи. Пользователи и посты сохраняются в SQLite — компактной встраиваемой СУБД. Несмотря на то, что Flask поддерживает много других сторонних СУБД, включая MySQL, PostgreSQL, Oracle Database и т.д., SQLite используется для хранения данных в Flask по умолчанию. В отличие от других СУБД, SQLite не использует клиент-серверную архитектуру, соответственно, нет необходимости разворачивать отдельный экземпляр СУБД, а все данные хранятся в отдельном файле.
Код используемого приложения можно скачать по ссылке.
1) Авторизируемся в своем аккаунте Timeweb Cloud. Далее ищем на панели слева раздел «Apps»:
В открывшемся окне нажмите на кнопку «Создать»:
2) Сначала выберем тип нашего веб-приложения. Так как в качестве примера у нас проект на Flask, то переходим в раздел Backend и выбираем Flask:
3) Далее переходим к этапу подключения репозитория. Необходимо выбрать одну из трех поддерживаемых систем для хранения Git репозиториев: GitHub, GitLab, Bitbucket. По желанию можно подключить репозиторий по URL, нажав на кнопку «Подключите git-репозиторий по URL»:
В нашем примере исходный код проекта располагается в GitHub. Однако его также можно подключить напрямую по URL, т.к. он является публичным.
Если вы выбираете GitHub, то сервис запросит доступ до репозитория. Мы выберем пункт «Only select repositories» и укажем необходимый репозиторий при помощи кнопки «Select repositories»:
Нажимаем на «Install & Authorize».
Также система попросит вас пройти двухфакторную аутентификацию:
4) На следующем этапе в разделе «Репозиторий» будет отображена информация об использующемся репозитории. Также стоит выделить, что система по умолчанию будет использовать ветку main. Однако вы всегда сможете выбрать другую ветку, которая присутствует в репозитории:
Дополнительно можно включить параметр с названием «Сборка по последнему выполненному коммиту».
Если активировать данный параметр, то процесс сборки приложения будет происходить с последнего коммита, а при появлении нового коммита в репозитории система Apps будет автоматически запускать сборку приложения.
Если данный параметр выключить, то появится возможность выбрать любой другой коммит, который доступен в репозитории:
5) Далее выбирается регион. В Timeweb Cloud у каждого региона в правом верхнем углу указан пинг. Он показывает задержку сигнала от устройства пользователя до сервера в каждой доступной локации. Рекомендуется выбирать сервер с наименьшим пингом, чтобы передача данных проходила как можно быстрее. Руководствуясь этим правилом, мы выбираем локацию Санкт-Петербург:
6) В разделе «Конфигурация» требуется выбрать технические характеристики для сервера. Так как наш проект тестовый и не отличается повышенной нагрузкой, нам хватит минимальной конфигурации. При развертывании реального проекта вам необходимо выбирать конфигурацию, которая будет удовлетворять потребностям вашего приложения:
7) В разделе «Настройка приложения» присутствуют два параметра: «Команда сборки» и «Команда запуска»:
Команда сборки необходима для сборки приложения, а именно для преобразования исходного кода с целью дальнейшей компиляции. В основном этап сборки используется для приложений, написанных на таких языках программирования как Java, C, C++ и другие. При использовании фреймворка Flask команду сборки можно не указывать в связи с тем, что язык программирования Python не является компилированным, и для запуска вашего веб-проекта вам достаточно указать указать команду запуска.
Команда запуска предназначена для запуска вашего проекта без необходимости проводить сборку и компиляцию. Эта опция широко используется при запуске веб-приложений, созданных при помощи фреймворков Flask и Django. В текущем примере, чтобы запустить наше веб-приложение на Flask, необходимо ввести команду:
python3 ./blog_project/main.py
Также на официальном сайте фреймворка Flask, в разделе Deploy to Production, указано что для развертывания вашего Flask проекта можно использовать WSGI (Web Server Gateway Interface) сервер, например, Waitress или Gunicorn.
Если ваше приложение использует переменные, то добавьте их путем нажатия на кнопку «Добавить» в разделе «Переменные». Переменные окружения используются для хранения таких данных, как пароли, токены и т.д. Переменные объявляются в формате «ключ - значение», например:
PASSWORD test123#$
При использование переменных необходимо соблюдать их регистр (верхний регистр, например, PASSWORD
, и нижний регистр, например, password
).
8) Переходим в раздел «Информация о приложении». Здесь можно задать удобное имя для приложения или оставить то, которое было сгенерировано системой:
9) Финальный шаг — необходимо нажать на кнопку «Запустить деплой»:
После старта деплоя появится раздел с Дашбордом приложения, в котором можно найти информацию про состояние процесса деплоя:
Если в процессе деплоя возникнут ошибки, то они будут отображены во вкладке «Логи приложения».
Процесс деплоя может занимать до 10 минут.
После окончания процесса деплоя будет отображен статус «Успешно»:
Также при необходимости можно подключиться к командной строке контейнера (эквивалент команды docker exec
). Для этого откройте раздел «Консоль»:
10) Чтобы открыть готовое приложение, на вкладке «Дашборд» найдите сгенерированное доменное имя для вашего приложения. При клике по доменному имени оно будет скопировано:
Перейдите по скопированному адресу — вы увидите интерфейс вашего веб-приложения:
Любой пользователь, у которого есть доменное имя вашего приложения, может перейти по нему и использовать ваше приложение. При каждом запросе к доменному имени будет отображаться соответствующая строка в разделе «Логи приложения»:
На этом этапе процесс деплоя приложения успешно завершен.
В этом туториале мы рассмотрели процесс деплоя Flask-приложения в сервисе Apps. Сервис Apps отлично подходит для развертывания готовых веб-приложений и экономит ваше время. Платформа Apps автоматически выполнит сборку и запуск приложения, и вам останется только проверить работоспособность запущенного приложения.