Развертывание проекта Spring Boot на VPS: пошаговое руководство
Как развернуть приложение Spring Boot на собственном VPS? Подробное руководство, сравнивающее 5 различных способов загрузки JAR, сборки на основе Git, systemd, Docker и Kubernetes.
Хотя запуск проектов Spring Boot — относительно простой процесс, создание устойчивого конвейера развертывания — утомительная задача для большинства разработчиков. Загрузка JAR-файла на сервер занимает 5 минут; но добавление службы systemd, обратного прокси-сервера nginx, Let’s Encrypt SSL, автоматического перезапуска, ротации журналов, проверки работоспособности может занять 2–3 дня.
В этом руководстве мы сравним 5 различных способов развертывания проекта Spring Boot на VPS; Наконец, мы покажем вам, как сделать это через VDS Panel самым быстрым способом.
Подготовка: чистый VPS
Для любого метода достаточно минимум 2 виртуальных ЦП + 4 ГБ ОЗУ + Ubuntu 22.04+. Если ваше приложение Spring Boot не использует большую кучу, оно также будет работать на VPS с 2 ГБ ОЗУ.
Установим необходимые пакеты на сервер:
Р0
Способ 1: JAR + systemd (ручной, классический)
Самый основной метод. Вы копируете JAR на сервер с помощью scp:
Плюсы: Полный контроль, никаких зависимостей.
Минусы: Один и тот же ритуал для каждого развертывания. Очень много человеческих ошибок. Обновление требует времени.
Способ 2: контейнеризация с помощью Docker
Вы добавляете Dockerfile в проект Spring Boot:
П4
Вы собираете, отправляете в реестр докеров и извлекаете + запускаете на сервере.
Плюсы: Портативность, контроль версий, простой откат.
Минусы: Управление реестром Docker, оптимизация размера образа, руководство по использованию nginx + SSL.
Способ 3: Docker Compose
Если имеется несколько сервисов (БД, Redis и т. д.), Docker Compose упрощает задачу. Но вам все равно нужно подключиться к серверу по SSH и запустить P0. Вы устанавливаете CI/CD самостоятельно.
Способ 4: Kubernetes (K3s)
Профессиональный вариант. Вы пишете манифесты развертывания, обслуживания и входа и применяете их к кластеру. Масштабируемые, непрерывные обновления, встроенные проверки работоспособности.
Плюсы: Стандарт отрасли, масштабируемость, отказоустойчивость.
Минусы: Кривая обучения очень крутая. ЯМЛ тоже. Слишком сложно для простого приложения.
Какой из них нам следует изучить?
Знание основ systemd, Docker и Kubernetes ценно для карьеры разработчика. Но вам не обязательно использовать их при каждом развертывании. Две разные цели: учиться и быть продуктивным.
Способ 5: развертывание в один клик с помощью панели VDS
Все 4 метода выше работают, но все они требуют трудозатрат. Если время вашей команды разработчиков ценно, автоматизация может взять на себя большую часть этого процесса.
01
Добавить проект на панель
Если GitHub подключен, репозиторий выбирается из списка; Если нет, то URL-адрес вводится. Существует также опция загрузки JAR.
02
Автоматическое определение стратегии сборки
Если есть pom.xml, используется Maven, если есть build.gradle, используется Gradle, а если есть Dockerfile, используется сборка Docker.
03
Добавить автоматическую базу данных (необязательно)
Вы ставите галочку в поле PostgreSQL; панель генерирует базу данных + пользователя + пароль, DATABASE_URL вводится в env.
04
Подключите личный домен
Укажите запись DNS A на IP-адрес сервера; Панель автоматически получает сертификат Let's Encrypt.
05
Нажмите «Развернуть»
Панель запускает параллельный конвейер: сборка, БД, SSL, nginx, проверка работоспособности. Жить за ~90 секунд.
~90 секунд
мерзавец, толкай, чтобы жить
Сборка + БД + SSL + nginx — все параллельно. После первого развертывания с кешем он становится еще короче.
При каждом последующем развертывании git push
После первого развертывания при каждой отправке на GitHub панель захватывает вебхук и снова выполняет описанные выше шаги. Откат тоже осуществляется по клику: написано «Восстановить» до предыдущего успешного развертывания.
Параметры JVM, проверка работоспособности, журнал
Из интерфейса панели:
Параметры JVM ( P0 , P1 , P2 ) определяются
Конечная точка проверки работоспособности (P3) определена, интервал определен
Ротация журналов активируется автоматически (5 файлов по 100 МБ каждый)
Ограничение памяти/ЦП устанавливается для каждого проекта индивидуально.
Переменные среды надежно хранятся (не записываются в файл).
Интеграция Nexus + SonarQube
Две общие потребности, которые возникают в проектах Spring Boot: хранилище артефактов и анализ качества кода. Модуль systemServices VDS Panel предоставляет эти два способа установки одним щелчком мыши:
Nexus Repository Manager, сюда помещаются JAR-файлы, ваш Maven P0 автоматически обновляется.
SonarQube, анализ качества кода выполняется при каждой сборке, отчет интегрирован в панель.
Установка этих двух инструментов вручную занимает минимум 2 часа. 1 минуту, перейдя на вкладку «Услуги» на панели и нажав +.
Заключение
Мы видели пять способов развертывания Spring Boot на VPS. Необходимо изучить первые четыре, еще ценно знание systemd, Docker и Kubernetes в карьере разработчика. Но вам не обязательно использовать эту информацию для каждого развертывания.
Именно в этом и состоит цель VDS Panel: ускорить ваш рабочий процесс, сохраняя простоту поверхности, не скрывая при этом технологии. Чтобы начать работу с проектами Spring Boot git push, вы можете завершить установку панели за 8 минут.
Современный опыт развертывания на вашем собственном сервере, всего в одном сообщении.
Позвольте нам понять ваш сценарий использования и подготовить для вас соответствующую лицензию и план установки. Наше среднее время ответа составляет менее 24 часов.