什么是Spring Boot
Spring Boot通过大量的默认配置,让使用Spring框架进行开发变得方便快捷,从而使得Java开发人员专注于程序原型设计。本文介绍如何创建一个简单的Spring Boot应用,然后通过NGINX反向代理进行发布。
开始之前
你需要一个同时装有Java 8和NGINX的Linode虚拟主机。如果这些已经安装好了,请跳过此步。
安装Java JDK 8
- 安装
software-properties-common:
1 | sudo apt install software-properties-common |
- 添加Oracle PPA仓库:
1 | sudo apt-add-repository ppa:webupd8team/java |
- 更新所有已安装的软件包:
1 | sudo apt update |
- 安装Oracle JDK。若需要安装Java 9 JDK,将
java8改为java9的命令为:
1 | sudo apt install oracle-java8-installer |
- 检查Java版本:
1 | java -version |
安装NGINX
以下步骤介绍在Ubuntu上安装从NGINX官方库下载的NGINX开发版。需要了解NGINX其他发行版,请参阅NGINX管理指南。若需要了解如何为生产环境配置NGINX,请参阅NGINX入门指南。
在文本编辑器中打开/etc/apt/sources.list,并在文件最后追加以下内容。再将CODENAME替换为Ubuntu版本的代号。例如,为Ubuntu 18.04,代号为Bionic Beaver(仿生海狸),以下使用bionic替代CODENAME:
1 | /etc/apt/sources.list1 |
- 导入仓库的包签名密钥并将其添加到
apt:
1 | sudo wget http://nginx.org/keys/nginx_signing.key |
- 安装NGINX:
1 | sudo apt update |
- 确保NGINX正在运行并设置开机自启动:
1 | sudo systemctl start nginx |
安装Spring Boot CLI
Spring Boot CLI使得搭建项目框架变得更加容易。SDKMAN!是一个简化Spring CLI安装和构建的工具(如同Gradle或Maven)。使用Spring Boot CLI,可以直接在命令行中创建新项目。
- 安装SDKMAN!的依赖项:
1 | sudo apt install unzip zip |
- 安装SDKMAN!:
1 | curl -s https://get.sdkman.io | bash |
- 按照控制台中打印的说明操作:
1 | source "/home/username/.sdkman/bin/sdkman-init.sh" |
验证SDKMAN!是否已安装:
1 | sdk help |
- 安装Spring CLI:
1 | sdk install springboot |
验证安装:
1 | spring version |
- 安装Gradle:
1 | sdk install gradle 4.5.1 |
构建一个jar文件
有许多可用的构建工具。Spring Boot CLI默认使用Maven,但本文中将使用Gradle。想了解有关Maven和Gradle之间差异的讨论,请参阅Maven和Gradle比较。
- 使用Spring Boot CLI创建一个新项目。使用项目框架创建一个名为
hello-world的新目录。
1 | spring init --build=gradle --dependencies=web --name=hello hello-world |
注意要查看Spring Boot CLI的可能参数的完整列表,请运行:
1 | spring init --list |
- 进入项目目录。此示例创建一个Endpoint以在Spring应用中返回”Hello world”。需添加两个额外的引用和一个新类。
1 | ~/hello-world/src/main/java/com/example/helloworld/HelloApplication.java |
- 构建应用程序。这将在在项目中创建一个名为
build的新目录。
1 | ./gradlew build |
- 运行嵌入了Tomcat服务器的应用。该应用将在
localhost:8080上运行。可以按Ctrl+C停止。
1 | java -jar build/libs/hello-world-0.0.1-SNAPSHOT.jar |
- 应用可以在不链接jar文件的情况下运行。
1 | gradle bootRun |
- 测试应用是否正确地在
localhost中运行:
1 | curl localhost:8080 |
- 按
CTRL+C停止Tomcat服务器。
创建一个初始化脚本
将Spring Boot应用设置为服务以在服务器重启时自启动:
1 | /etc/systemd/system/helloworld.service |
启动服务:
1 | sudo systemctl start helloworld |
检查状态是否生效:
1 | sudo systemctl status helloworld |
反向代理
现在Spring应用已作为服务运行,NGINX代理允许将应用部署到非特权端口并设置SSL。
- 为反向代理创建NGINX配置文件:
1 | /etc/nginx/conf.d/helloworld.conf |
- 测试配置以确保无误:
1 | sudo nginx -t |
- 如果没有错误,请重新启动NGINX以使更改生效:
1 | sudo systemctl restart nginx |
- 现在可以通过浏览器访问该应用。访问Linode的公共IP地址,应显示”Hello world”消息。
效果

