Spring Boot: публикуем приложение на сервер (deploy)

preview_player
Показать описание
Spring Boot Web Application (MVC): разворачиваем наше приложение на сервере (deploy to production).

Код из видео:

Установка Git в Windows:

Установка SDKman:

Основы работы в Vi (Vim):

Чаще всего приложения на java разворачивают на серверах linux, поэтому мы будем рассматривать деплой с использование инструментария *nix систем. Нам понадобятся ssh и bash. Перед началом работы необходимо сгенерировать ssh ключи (ssh-keygen) и зарегистрировать их на сервере, где будет запускаться наш сервер приложения.

Если вы работаете в linux, freebsd или macos, то у вас уже полностью готовая среда. В случае, если вы используете windows, вы можете установить git for Windows, который включает в поставку все необходимые утилиты. Как установить git for Windows можно посмотеть в этом видео:

Прежде чем мы развернем наше приложение на сервере, нам необходимо подготовиться: добавить зависимости JAXB и вынести инициализацию PasswordEncoder в отдельный класс.

Зависимости JAXB:

После этого добавим скрипт деплоя, установим ему право на выполнение командой
и запустим его

Скрипт деплоя:

Перед запуском приложения необходимо убедиться, что на сервере установлены postgres (и создана БД sweater) и nginx, который мы будем использовать как прокси.
Конфигурация nginx:

Для проверки корректности работы приложения можно использовать сервис временых почтовых ящиков:

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

Поддержать проект:

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

Рекомендации по теме
Комментарии
Автор

Чесно сказать не с первого захода я смог разобраться со всем этим добром, по правде не со второго и не с третьего. Но все-таки пошло. Вся соль в том что в предыдущих видео был код java и html а здесь работа с консолью, bash, удаленный сервер и прочее. Насчет возмущений по поводу того что код написан под линукс - полная хрень, под винду абсолютно без разницы, только bash и maven доставить нужно. В итоге всех разбирательств попутно выучил очень полезные вещи:
- установка и запуск сервера linux от amazon
- установка java в консоли на сервере (в консольке по правде говоря в разы проще)
- установка и настройка mysql сервера через консоль и регистрация пользователей
- работа по ssh протоколу с сервером и переброска файлов
- запуск приложения на сервере.
В сумме после прохождения "Всех тяжкик" так сказать не особо все и сложно (запустить удаленный сервер, собрать проект в jar, скопировать на сервер и запустить). Но помучаться есть с чем.
Огромная благодарность автору и успехов ему в работе!

YuretsUA
Автор

Большое спасибо, мне нравится:
-ваша дикция (настраивает на приятное прослушивание)
-умение преподносить объяснения в упрощённой форме
-доступность к усвоению излагаемого материала
Всё супер ! Так держать !

oleksandr
Автор

Андрей, огромное вам спасибо за ваш труд!!!! Благодаря вам и вашим видеоурокам я начал понимать всю "инженерную и техническую стороны" постройки приложений на спринге. Надеюсь увидеть и услышать от вас много чего интересного. С уважением!

vladsoldatenko
Автор

Это какой то новый уровень для меня. То что ты делаешь - бесценно.
p.s. как насчет снять что-то о линуксе? для таких как я, которые вообще не понимают что это

drankenwizard
Автор

Было бы интересно посмотреть на написание тестов на приложение) В целом хочу сказать спасибо все ништяк, продолжай в том же духе;)

АлександрЮрченко-щл
Автор

ОООчень не понятно, куча информации пропущена, как на виндовсе всё это делать? Какая виртуальная машина, как её поставить и т.д и .т.п

Sergei-kqhk
Автор

Спасибо за столько познавательные уроки, Андрей. Формат получился необычным )
Как правило приходится ставить скорость на 1, 25 чтобы не заснуть, а у вас наоборот руки чешутся понизить скорость. Иначе по несколько раз прослушивать приходится.
Не слушайте троллей, никто никому ничего не должен, вы вкладываете свое время, предоставляя отличный контент, не просите за это деньги, а это уже многого стоит.

Меня интересует возможности idea в плане деплоя. Дает ли она какие-нить ништяки, облегчающие и автоматизирующие процесс?
То есть хотелось бы чтобы отредактировал файл, нажал кнопку в idea, проект билданулся, выгрузился на сервер.
Перезапустился процесс.
Наверняка есть что-то подобное!

the_toxic
Автор

Спасибо большое за хороший канал и полезные видео, таких каналов по пальцам можно посчитать)))

ЕвгенийДмитриевич-хг
Автор

Самые качественные видео на эту тему, /и в рунете, и на англ/ Крутой
подход, спасибо автору. Следовал видео и получилось сделать интересный
проект, который любопытно "докручивать" самому. Советы автора помогают
не утонуть в деталях и не потерять мотивацию. Спасибо ребятам в
комментах - если вы напоролись на ошибку, решения находил здесь же.
Успехов! Хватит читать комменты, идите кодить)

ВикторияК-сц
Автор

Если вы использовали Amazon EC2, могут пригодится заметки, которые я получил через боль :)
Одна из причин, что дефолтный юзер 'ubuntu' логинится без пароля.
->>>
* On server:
* Setup PostgreSQL: Run `sudo apt-get update`. Than `sudo apt-get install postgresql`
* `sudo -u postgres psql` launches SQL shell
* On server PSQL concole:
* `create user ubuntu;`
* `alter user ubuntu createdb;` grants permissions
* `alter user ubuntu superuser;` grants permissions because of error
* `\du` shows list of users
* `\q` quits. Login to PSQL by `psql postgres` under 'ubuntu' user.
* `create database sweater` creates DB
* Update Amazon server
with ports 8080 for IPv4, IPv6
* **If Windows used on local machine. Launch 'Git bash'.**
* Locally:
* Run `chmod +x scripts/deploy.sh` to make script executable
* `./scripts/deploy.sh` runs script

Alex-dtkq
Автор

Спасибо, очень понятное толкование и полезные фишки

Madi-mbtc
Автор

Андрей, нужна ваша оценка ситуации и советы по устранению проблемы
====это все выполняется===
1) создал instance на amazon ec2
2)создал ключ на своей машине и в настройках безопасности "показал" его амазону
4)установил на сервер - java, mysql, nginx
4.1)mysql создал базу

4.2)nginx поправил настройки в default файле
5)скрипт deploy.sh работает на ура (только не перезапускает сервер, якобы нельзя сделать не на серверном терминале)
5.1)скрипт все копирует

5.2)*.jar файл запускается без ошибок
5.3)в mysql появляются все таблицы и заполняются поля, что указали в миграции
6)application и application-dev.properties настроены и отрабатывают на localhost нормально


====это не выполняется===
1)переход по ip сервера в браузере не дает никаких результатов
2)перезапуск сервера, сервера, nginx не дают результатов
3)подстановка портов так же ничего не дает
Подскажите, что может быть не так?
P.S. кто сталкивался с похожей ситуацией подскажите решение)))

andreyomelchuk
Автор

сижу и проставляю лайки под каждым видео и вот тут не смог не остановиться. Мега полезное видео.

matusmatusew
Автор

после обиды и слез от того, что долгожданное видео не оправдало моих ожиданий, попытаюсь взять себя в руки. В общем видно что ты хорошо знаком со всеми технологиями, которые используешь. И понимаешь что ты делаешь. Это замечательно конечно. Только для тех кто никогда не развертывал приложения это выглядело как решение логарифмов перед пятилетним ребенком. Вроде бы логарифмы это просто, но если только показывать не объясняя, ребенок ничему не научится.

atg
Автор

Ребята, Андрей, такой вопрос (немного не по теме, но думаю, будет интересен всем). Как реализовать динамический ввод данных в Spring? К примеру: есть книга рецептов, добавляя рецепт, мы можем добавить поля название, время готовки, сложность и т.п., Но возникает вопрос - как добавить поля, во время создания рецепта, этапов готовки? То есть у нас же не может быть всегда одинаковое количество этапов/полей, может быть их 100, а может и 10. Как это можно реализовать? Динамическая форма во freemaker? Или использовать js подобные скрипты?

andreyomelchuk
Автор

супер! довольно интересные подход, еще было бы интересно посмотреть подготовка и деплой на амазон клауд

artsbrand
Автор

Спасибо, очень помогают видео в обучении.

wellman
Автор

Доброго часу доби, Андрій. В першу чергу хочу подякувати вам за ваш канал і працю, і попросити створити відео підключення платіжної системи LiqPay в java, яка повертатиме callback (true або false про успішність проведення платежу при тому запускатиме автоматично якийсь метод на стороні інтернет магазину чи ще якого сайту)

volodymyr
Автор

Надо ещё больше писать в командную строку и вообще перестать комментировать происходящее, тогда миллион просмотров обеспечен.

ИгорьМешалкин-жф
Автор

Огромное спасибо, видео очень помогло!))

nikitaantonenko