Представьте, что у вас есть бэкенд-приложение с REST API и вы хотите обращаться к нему не только с локальной машины, но и из интернета — через браузер, Postman, фронтенд или мобильное приложение. Для этого можно настраивать маршрутизацию, туннелирование, искать белый IP — или просто задеплоить приложение в облако. Под катом — пошаговая инструкция, в которой развернем Java-приложение на облачном сервере и пошагово пройдем весь процесс — от сборки до запуска и обращения к API извне.

Облачный сервер с криперами и порталом в Незер. Добывайте ресурсы, стройте объекты, исследуйте мир Selectel в Minecraft и получайте призы.

Исследовать →

Используйте навигацию, если не хотите читать текст целиком:

О проекте

В этой инструкции не будем писать бэкенд приложения с нуля — возьмем готовый проект, написанный на Java с использованием Spring. В качестве базы данных используем встроенную H2 (in-memory), чтобы не отвлекаться на развертывание СУБД.

Весь код проекта доступен на GitHub.

API предоставляет стандартный набор CRUD-операций для работы с пользователями: можно создавать, редактировать, удалять и получать их данные:

Локальный запуск

Приложение запускается на локальной машине с помощью встроенного веб-сервера Apache Tomcat (порт 8080). На localhost мы можем проверить работу с API, убедиться, что приложение запускается и эндпоинты доступны:

Проверка через браузер. 
Проверка через браузер. 

Однако такой запуск работает только на локальном компьютере. Обратиться к API «извне» не получится — для этого потребуются, например, дополнительные настройки маршрутизации, «белый» IP-адрес или динамический DNS. К тому же придется постоянно держать компьютер с запущенным приложением включенным, что не очень удобно. Помимо прочего, перебои у интернет-провайдера сделают сервис недоступным. Все эти проблемы можно решить с помощью деплоя приложения в облако.

Создание облачного сервера

1. В панели управления в разделе Продукты переходим во вкладку Облачные серверы и нажимаем Создать сервер.

2. Указываем имя, регион и операционную систему. В нашем случае — Ubuntu 24.04 LTS 64-bit. В разделе Конфигурация переходим во вкладку Shared. Для работы сайта подойдет минимальная конфигурация: 

  • 10% от 1 CPU,

  • 512 MБ RAM,

  • 5 ГБ SSD,  

  • публичный IP-адрес.

Конфигурация сервера в панели управления.
Конфигурация сервера в панели управления.

3. Добавляем SSH-ключ. Указываем имя и копируем команду для терминала, после чего получаем публичный ключ и добавляем его в соответствующее поле. Подробнее о создании и размещении SSH-ключа — в документации.

Окно добавления SSH-ключа.
Окно добавления SSH-ключа.

4. Знакомимся со стоимостью конфигурации и нажимаем Создать сервер.

Деплой

Подключиться к серверу можно напрямую через консоль в панели управления. Однако для примера используем подключение через Git Bash (можете использовать любой другой SSH-клиент). 

1. Из конфигурации сервера берем команду подключения по SSH и используем ее:

sshroot@<IP-адрессервера>

2. Обновляем систему:

sudo apt update
sudo apt upgrade

Далее установим все необходимые зависимости. 

3. Приложение написано на Java, поэтому устанавливаем JDK и JRE:

sudo apt install openjdk-17-jre
sudo apt install openjdk-17-jdk

4. Для клонирования кода проекта с GitHub, устанавливаем Git:

sudo apt install git

5. Проект будет запускаться не из среды разработки, например IntelliJ IDEA, а как скомпилированный .jar-файл. Для сборки в проекте используем Maven — его тоже нужно установить:

sudo apt install maven

Окружение готово! Помним, что базу данных устанавливать не нужно — в проекте используем in-memory H2, которая запускается вместе с приложением. Этого достаточно для демонстрации. Однако для реального проекта рекомендуем использовать PostgreSQL или другую полноценную СУБД.

В бесплатном курсе рассказываем про установку и настройку базы данных PostgreSQL, делимся, как ими управлять, организовать резервное копирование и репликацию. А главное — что делать, если администрировать самим БД не хочется.

Сборка и запуск проекта

Клонируем наш проект на сервер и сразу перейдем в каталог с проектом: 

git clone https://github.com/EVG-A/demo.git
cd demo
С помощью git clone клонируем проект на сервер.
С помощью git clone клонируем проект на сервер.

Приступим к сборке проекта в jar-архив, чтобы мы могли его запустить. Поскольку сервер использует минимальную конфигурацию, сборку лучше запускать без выполнения тестов. Это поможет облегчить и ускорить процесс:

mvn clean 
mvn package -DskipTests=true

После успешной сборки видим, что появилась директория target с собранным .jar-файлом, в нашем случае — упакованным сервисом demo-1.jar:

Запускаем сервис с помощью установленной Java:

java -jar demo-1.jar

Теперь в консоли видно, как запускается наше приложение:

Если все прошло успешно, в консоли появится сообщение:

Tomcat started on port 8080(http) with context path ‘/’

Это означает, что приложение развернуто и доступно по внешнему IP-адресу, указанному в конфигурации сервера. 

Проверка работы API

Теперь мы можем отправлять запросы к API. IP-адрес можно найти в панели управления (поле Публичный IP). Именно на нем теперь работает наш RESTful-сервис. 

Попробуем отправить запросы через браузер компьютера или телефон. Переходим по адресу http://<IP-адрес>:8080:

Если все настроено верно, API ответит на запрос. Все логи приложения (включая ошибки) будут отображаться прямо в консоли, где развернут сервис.

Заключение

Мы развернули RESTful-сервис с CRUD-операциями — созданием, обновлением, удалением и получением сущностей. Приложение размещено на облачном сервере и доступно по публичному IP-адресу.

Дальнейшее развитие функций ограничивается лишь вашей фантазией и потребностями! Код проекта доступен на GitHub, а для более детально ознакомиться со всеми можно в видеоверсии инструкции.

Автор инструкции — Евгений Афанасьев, Java-разработчик и создатель одноименного YouTube-канала.

Комментарии (0)