Spring Boot позволяет легко создавать автономные приложения, которые готовы к использованию и запуску. Это также отличная альтернатива, если вы хотите ускорить цикл разработки вашего приложения. Существует много способов развернуть приложение Spring Boot. В этом уроке я покажу вам три разных способа:
- лазурь
- Amazon Web Services
- Самопринятый
Мы будем использовать простое приложение, чтобы продемонстрировать развертывание для каждого из вариантов.
Создайте пример приложения Spring Boot
Я создал очень простое приложение Spring Boot, которое вы можете скачать с GitHub. Приложение состоит из одного контроллера и небольшой формы для отправки. Итак, клонируйте репозиторий, соберите и запустите его:
Оболочка
1
$ git clone https://github.com/oktadeveloper/okta-spring-boot-deploy.git
2
$ cd okta-spring-boot-deploy
3
$ ./mvnw spring-boot:run
Небольшая функциональная форма будет доступна по адресу http: // localhost: 8080 /reeting .
Прежде чем мы перейдем к вариантам развертывания, давайте удостоверимся, что наше приложение безопасно.
Защитите приложение Spring Boot с помощью Okta
Okta имеет специальную библиотеку для Spring Boot, которая упрощает добавление аутентификации OAuth 2.0 в ваше приложение.
Во-первых, зарегистрируйте бесплатную учетную запись разработчика сегодня! Когда вы закончите, выполните следующие шаги, чтобы создать приложение.
- Войдите в свою учетную запись разработчика на developer.okta.com.
- Перейдите в Приложения и нажмите Добавить приложение
- Выберите Web и нажмите Next
- Дайте приложению имя (например
Spring Boot Awesome App
) - Добавьте следующее как URI перенаправления входа в систему:
http://localhost:8080/login/oauth2/code/okta
- Нажмите Готово
Во-первых, включите Okta в качестве зависимости в pom.xml
:
XML
1
<dependency>
2
<groupId>org.springframework.boot</groupId>
3
<artifactId>spring-boot-starter-security</artifactId>
4
</dependency>
5
<dependency>
6
<groupId>com.okta.spring</groupId>
7
<artifactId>okta-spring-boot-starter</artifactId>
8
<version>1.3.0</version>
9
</dependency>
Теперь создайте файл src/main/resources/application.properties
с настройками вашего приложения:
Файлы свойств
xxxxxxxxxx
1
okta.oauth2.issuer=<your_org_url>/oauth2/default
2
okta.oauth2.clientId=<app_client_id>
3
okta.oauth2.clientSecret=<app_client_secret>
Вы можете найти свой Client ID и Client Secret на панели инструментов Okta на вкладке General только что созданного приложения. URL-адрес вашей организации отображается в левом верхнем углу панели инструментов .
И мы сделали! Просто, теперь ваше приложение защищено с помощью OAuth 2.0.
Разверните приложение Spring Boot в Azure
Microsoft была инвестирована в Java в последнее время; партнерство с Azul и приобретение jClarity , естественное развертывание в Azure, не сложно.
Убедитесь, что у вас есть активная учетная запись, зарегистрировавшись на веб-сайте Azure . Первым шагом является установка CLI Azure на ваш компьютер. Мы будем использовать его для входа в Azure из терминала командной строки.
В проекте добавьте плагин Azure как часть сборки pom.xml
файла. Попробуйте приведенный ниже пример конфигурации и убедитесь, что вы заменили appName
его уникальным именем для своего приложения. Также настройте region
, чтобы определить, где географически будет развернуто ваше приложение. Список доступных регионов доступен в разделе Доступность региона Azure . Наконец, pricingTier
определяет, какой тип экземпляров вы будете использовать и сколько это будет стоить. Список доступных уровней цен доступен в разделе Цены службы приложений Azure . Настроенный уровень цен в приведенном ниже примере — «F1», что означает их бесплатный уровень , поэтому не беспокойтесь, если вы просто хотите попробовать Azure; вы не получите счета, если развернете на уровень F1.
XML
xxxxxxxxxx
1
<plugin>
2
<groupId>com.microsoft.azure</groupId>
3
<artifactId>azure-webapp-maven-plugin</artifactId>
4
<version>1.7.0</version>
5
<configuration>
6
<schemaVersion>v2</schemaVersion>
7
<resourceGroup>maven-plugin</resourceGroup>
8
<appName>Spring-App</appName>
9
<region>East US</region>
10
<runtime>
11
<os>linux</os>
12
<javaVersion>jre8</javaVersion>
13
<webContainer></webContainer>
14
</runtime>
15
<deployment>
16
<resources>
17
<resource>
18
<directory>${project.basedir}/target</directory>
19
<includes>
20
<include>*.jar</include>
21
</includes>
22
</resource>
23
</resources>
24
</deployment>
25
<pricingTier>F1</pricingTier>
26
</configuration>
27
</plugin>
28
Поскольку Azure обрабатывает HTTPS для нас, и мы будем работать за их прокси-сервером, нам также необходимо обновить наши настройки Spring, чтобы выбрать стандартные заголовки HTTP и правильно построить URL-адреса перенаправления. Просто добавьте эту строку в application.properties
файл:
xxxxxxxxxx
1
server.forward-headers-strategy=FRAMEWORK
После настройки файла pom.xml
и application.properties
файла развертывание состоит из открытия терминала командной строки, входа в Azure и запуска цели Maven для выполнения развертывания. Чтобы войти в Azure, используйте команду az login
. Это откроет ваш веб-браузер для процесса входа в систему, а затем распечатает информацию о вашей учетной записи на консоли. Затем запустите, mvn package
чтобы убедиться, что ваше приложение создано. После входа в систему используйте команду mvn azure-webapp:deploy
для развертывания приложения в облаке Azure. Итак, весь процесс развертывания выглядит так:
Оболочка
xxxxxxxxxx
1
$ az login
2
$ mvn package
3
$ mvn azure-webapp:deploy
После этого ваше приложение будет развернуто в Azure.
Теперь добавьте конечную точку входа в приложение, которое вы создали в Okta, чтобы вы могли войти в него. Для этого перейдите на панель своей организации, нажмите « Приложения» на верхней панели, выберите созданное вами приложение, нажмите вкладку « Общие », нажмите « Изменить общие настройки» и следующий URI для «URI перенаправления входа в систему» следующим образом (имя вашего приложения что вы определили в pom.xml
файле для тега appName
):
Простой текст
xxxxxxxxxx
1
https://<your_app_name>.azurewebsites.net/login/oauth2/code/okta
Зайдем https://<your_app_name>.azurewebsites.net/greeting
увидеть приложение в действии, развернутый в облаке Azure в.
Разверните приложение Spring Boot на веб-сервисах Amazon
Amazon AWS по-прежнему является де-факто выбором для общедоступных облаков с долей рынка около половины . Java-приложения могут быть развернуты в AWS Elastic Beanstalk с помощью нескольких нажатий кнопки.
Поскольку AWS будет обрабатывать трафик приложений для нас, а мы будем работать за их прокси-сервером, нам нужно обновить Spring, чтобы принимать стандартные заголовки HTTP и правильно создавать URL-адреса перенаправления. Просто добавьте эту строку в application.properties
файл:
Файлы свойств
xxxxxxxxxx
1
server.forward-headers-strategy=FRAMEWORK
После настройки application.properties
файла убедитесь, что ваше приложение создано, выполнив mvn package
. Нам также понадобится сгенерированный файл JAR. Для развертывания в Amazon Web Services перейдем к Консоли управления AWS и следуем пошаговому руководству по развертыванию:
- Найдите и нажмите на Elastic Beanstalk .
- Это приведет вас к пошаговому мастеру для развертывания приложения.
- Нажмите « Начать» .
- Введите название вашего приложения.
- Выберите Java в качестве платформы.
- Выберите Загрузить свой код .
- Нажмите Загрузить .
- Выберите Локальный файл .
- Найдите и выберите файл JAR вашего приложения, расположенный по адресу
<your_app_path>/target/demo-0.0.1-SNAPSHOT.jar
- Вы можете оставить ярлык Версии как есть, но вам нужно будет использовать уникальные ярлыки каждый раз, когда вы развертываете более новую версию своего приложения.
- Нажмите Загрузить .
- Нажмите Настроить дополнительные параметры
- В разделе « Программное обеспечение» нажмите « Изменить».
- В разделе Свойства среды создайте новое свойство с именем
SERVER_PORT
и значением5000
. - Нажмите Сохранить .
- Нажмите Создать приложение .
Вы попадете на страницу, которая показывает ход создания приложения. Подождите, пока это не закончится. Когда он будет завершен, URL-адрес вашего приложения должен появиться в верхней панели экрана. Теперь добавьте конечную точку входа в приложение Okta (как мы делали для Azure, подробно описано выше):
Простой текст
xxxxxxxxxx
1
http://<your_app_name>-env.<app_id>.<region>.elasticbeanstalk.com/login/oauth2/code/okta
Перейдите к своему приложению на http://<your_app_name>-env.<app_id>.<region>.elasticbeanstalk.com/greeting
. Там ваше приложение развернуто в Amazon Web Services.
AWS не предоставляет сертификат по умолчанию, поэтому ваше приложение не работает по протоколу HTTPS. Вы должны определенно переместить его в HTTPS перед началом производства. Это описано в их документации по настройке HTTPS для среды Elastic Beanstalk .
ПРИМЕЧАНИЕ. Как только вы это заработаете, вы можете автоматизировать его с помощью плагина Beanstalk Maven .
Self-Host Your Spring Boot App
Если вы решите разместить приложение самостоятельно, сначала вы должны решить, хотите ли вы запустить свое приложение как JAR или развернуть его на сервере приложений, таком как Tomcat, как WAR. Я бы порекомендовал JAR, поэтому управление версиями вашего приложения и сервера приложений упрощает развертывание.
Для запуска в качестве автономного JAR просто скомпилируйте свое приложение, mvn package
чтобы сгенерировать файл JAR в target
папке. Затем вы можете запустить его с java -jar <your_app_name>-<your_app_version>.jar
.
Если вы хотите использовать существующую установку Tomcat или предпочитаете использовать сервер приложений, процесс сборки должен генерировать WAR вместо JAR, а также подключаться к серверу приложений. Для этого вы должны удалить spring-boot-maven-plugin
из вашего pom.xml
файла. Затем добавьте следующую строку:
XML
xxxxxxxxxx
1
<packaging>war</packaging>
Убедитесь, что Tomcat не встроен в ваше приложение, так как вы собираетесь запустить его во внешнем Tomcat. Добавьте эти строки в раздел зависимостей вашего pom.xml
файла:
XML
xxxxxxxxxx
1
<dependency>
2
<groupId>org.springframework.boot</groupId>
3
<artifactId>spring-boot-starter-tomcat</artifactId>
4
<scope>provided</scope>
5
</dependency>
Теперь измените DemoApplication
класс, чтобы он регистрировал приложение на сервере, расширил SpringBootServletInitializer
и переопределил configure
метод следующим образом:
Джава
xxxxxxxxxx
1
package com.oktadeveloper.demo;
2
import org.springframework.boot.SpringApplication;
4
import org.springframework.boot.autoconfigure.SpringBootApplication;
5
import org.springframework.boot.builder.SpringApplicationBuilder;
6
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
7
9
public class DemoApplication extends SpringBootServletInitializer {
10
public static void main(String[] args) {
12
SpringApplication.run(DemoApplication.class, args);
13
}
14
16
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
17
return builder.sources(DemoApplication.class);
18
}
19
}
Теперь, если вы запустите, mvn clean package
вы должны получить файл WAR в target
папке. Скопируйте этот WAR-файл в вашу установку Tomcat webapps/ROOT.war
и удалите существующий webapps/ROOT
каталог. Tomcat автоматически подберет его и развернет. После завершения развертывания ваше приложение должно быть доступно по адресу, подобному http://localhost:8080/greeting
.
Есть несколько новых проблем при самостоятельном размещении. Например, если вы хотите запустить свое приложение на нескольких серверах, вам нужно убедиться, что на каждом сервере запущена одна и та же версия приложения, и вам нужно, чтобы другой сервер обрабатывал балансировку нагрузки. Вы можете использовать NGINX в качестве балансировщика нагрузки, просто всегда обновляйте его конфигурацию при масштабировании ваших серверов. Один из способов убедиться, что все ваши серверы настроены одинаково, - использовать некоторые решения для автоматизации, такие как Chef . Самостоятельный хостинг означает, что вы должны делать все самостоятельно, например, управление сертификатами TLS, чтобы убедиться, что ваши серверы прослушивают HTTPS. Azure и Amazon имеют специальные предложения по управлению сертификатом для вас.
Узнайте больше о Spring Deployment
В этой статье мы рассмотрели развертывание Azure, AWS и самостоятельное размещение Tomcat. Вы также можете запустить свое приложение в виде контейнера Docker, который описан в статьях Get Jibby With Java, Docker и Spring Boot .
Если вы хотите узнать больше о Java, Spring и User Auth с помощью Okta, прочитайте эти замечательные статьи:
- Простая аутентификация с помощью Spring Security
- Какой Java SDK вы должны использовать?
- Создайте веб-приложение с помощью Spring Boot и Spring Security за 15 минут
- Изучение Java как первого языка
Вопросов? Запросы на будущий пост? Оставьте их в комментариях! И не забудьте подписаться на @oktadev в Twitter и подписаться на Youtube .
Разверните свое весеннее загрузочное приложение «Правильный путь» первоначально было опубликовано в блоге разработчиков Okta 3 декабря 2019 года.