使用Spring Boot将WEB服务在Azure App Service环境中启动(使用jar文件格式)
使用Azure App Service在Spring Boot中启动WEB服务(以jar文件格式)。
的目标
在Azure App Service环境中启动Spring Boot WEB服务,以加深对其理解。
实现
将Spring Boot的jar文件格式的WEB应用部署到Microsoft Azure App Service。
科技背景
微软Azure应用服务是什么?
Microsoft Azure App Service是Microsoft Azure的一种PaaS(平台即服务)服务,专注于托管WEB应用程序、移动应用程序和API应用程序。
Azure App Service的主要特点和优势如下。
简单部署
Azure App Service通过Azure门户、Azure CLI和Azure DevOps等工具,可以轻松部署WEB应用程序。此外,它支持多种编程语言和框架,具有灵活的开发能力。
可扩展性
Azure App Service支持自动和手动扩展,可根据应用程序负载灵活调整规模。
高可用性
Azure App Service具有全球负载均衡和故障转移功能,可以实现高可用性。
集成
Azure App Service可以与Azure的其他服务无缝集成。例如,与Azure SQL Database和Azure Storage等存储服务进行协作,方便进行应用程序数据管理。
安全性
Azure App Service提供网络安全组(NSG)和WEB应用程序防火墙(WAF)等安全功能,可以提高应用程序的安全性。
总结
通过这些特点和优势,Azure App Service为开发人员和企业提供了一个快速且灵活的WEB应用程序开发和部署平台。
开发环境 fā
-
- Windows 11 Home 22H2 を使用しています。
WSL の Ubuntu を操作していきますので macOS の方も参考にして頂けます。
> wsl –version
WSL版本:1.0.3.0
内核版本:5.15.79.1
WSLg版本:1.0.47Ubuntu
$ lsb_release -a
没有可用的LSB模块。
发行商ID:Ubuntu
描述:Ubuntu 22.04.1 LTS
发布:22.04
Java JDK ※ 安装Java JDK和Hello World!
$ java -version
openjdk version “11.0.17” 2022-10-18
OpenJDK Runtime Environment(构建11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64位服务器VM(构建11.0.17+8-post-Ubuntu-1ubuntu222.04,混合模式,共享)
Maven ※ 安装Maven和Hello World!
$ mvn -version
Apache Maven 3.6.3
Maven主目录:/usr/share/maven
Java版本:11.0.17,供应商:Ubuntu,运行时:/usr/lib/jvm/java-11-openjdk-amd64
※ 本文将主要介绍如何使用 Ubuntu 终端进行操作。
展示「你好,世界」的步骤。
创建Spring Boot网页服务
请您参考Spring Boot WEB服务的Hello World!
切换到项目文件夹中
我们将~/tmp/hello-spring-boot文件夹视为项目文件夹。
$ cd ~/tmp/hello-spring-boot
编译Java应用程序
目标/app.jar将被创建。
$ mvn clean install
获得Azure账户
使用Azure的免费账户在云端构建
使用Azure CLI登录
请参考安装 Azure CLI 的步骤。
$ az login
※ 假如要更新至最新版本。
$ az upgrade
蔚藍的環境
资源组
创建资源组
$ az group create \
--name rg-hello \
--location japaneast
显示资源组列表
$ az group list
如果要删除资源组,请进行以下操作。
$ az group delete -n <group>
应用服务计划
创建App Service计划
$ az appservice plan create \
--resource-group rg-hello \
--name asp-hello \
--sku Free \
--is-linux
显示App Service计划的列表
$ az appservice plan list
※ 如果要删除 App Service 计划
$ az appservice plan delete -n <plan> -g <group>
Web应用程序应用程序
虽然有多种方法可以在Azure App Service上部署Spring Boot WEB应用程序,但本次将介绍使用Azure CLI部署jar文件的方法。
※ 验证运行时间
- JAVA:11-java11 を使用します。
$ az webapp list-runtimes --os-type linux | grep -e java -e JAVA
创造网络应用程序
$ az webapp create \
--resource-group rg-hello \
--plan asp-hello \
--name app-hello-spring-boot \
--runtime "JAVA:11-java11"
设定Web应用的启动命令。
$ az webapp config set \
--resource-group rg-hello \
--name app-hello-spring-boot \
--startup-file "java -jar /home/site/wwwroot/app.jar --server.port=80"
网络应用程序的日志记录配置
$ az webapp log config \
--resource-group rg-hello \
--name app-hello-spring-boot \
--application-logging filesystem \
--web-server-logging filesystem
应用服务 WEB 应用的部署
部署
$ az webapp deploy \
--name app-hello-spring-boot \
--resource-group rg-hello \
--src-path target/app.jar \
--type jar
用网络浏览器进行访问
$ az webapp browse \
--resource-group rg-hello \
--name app-hello-spring-boot
※ 虽然页面加载需要一些时间,但是页面会显示出来。然而,显示的页面 “/” 没有设置任何内容。
请在网络浏览器上重新检查一遍
※ 请将URL根据您的环境替换。
https://app-hello-spring-boot.azurewebsites.net/api/data
在WEB浏览器中显示了{“message”:”你好,世界!”},并成功获取到了JSON数据。
请用curl命令从另一个终端确认。
$ curl -v https://app-hello-spring-boot.azurewebsites.net/api/data
* Trying 20.43.67.36:443...
* Connected to app-hello-spring-boot.azurewebsites.net (20.43.67.36) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS header, Finished (20):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS header, Finished (20):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: C=US; ST=WA; L=Redmond; O=Microsoft Corporation; CN=*.azurewebsites.net
* start date: Dec 27 21:12:39 2022 GMT
* expire date: Dec 22 21:12:39 2023 GMT
* subjectAltName: host "app-hello-spring-boot.azurewebsites.net" matched cert's "*.azurewebsites.net"
* issuer: C=US; O=Microsoft Corporation; CN=Microsoft Azure TLS Issuing CA 05
* SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* Using Stream ID: 1 (easy handle 0x55b794ea9e80)
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
> GET /api/data HTTP/2
> Host: app-hello-spring-boot.azurewebsites.net
> user-agent: curl/7.81.0
> accept: */*
>
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
< HTTP/2 200
< content-type: application/json
< date: Mon, 27 Feb 2023 02:51:05 GMT
< set-cookie: ARRAffinity=ae907ce840c6b95b786870ca4c1362dc92f4733f1b7145fe24a6c8a07a0d5ff4;Path=/;HttpOnly;Secure;Domain=app-hello-spring-boot.azurewebsites.net
< set-cookie: ARRAffinitySameSite=ae907ce840c6b95b786870ca4c1362dc92f4733f1b7145fe24a6c8a07a0d5ff4;Path=/;HttpOnly;SameSite=None;Secure;Domain=app-hello-spring-boot.azurewebsites.net
<
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* Connection #0 to host app-hello-spring-boot.azurewebsites.net left intact
{"message":"Hello World!"}
在终端上显示{“message”:”你好,世界!”},并成功获取了 JSON 数据。
※ Azure 可以为您使用 SSL/TLS 支持和 HTTP/2 协议。
总结
- Ubuntu のシンプルな構成の Java 開発環境で Spring Boot WEBサービスを Azure App Service 環境で起動させることが出来ました。
请提供下列内容的中文本地化方式,并提供一个选项:
参考意见。
参考资料。
参考建议。
参考档案。
Azure App Service 命令参考文档