在开发环境中,直接通过运行启动类并对外提供服务。但在实际项目中,会把SpringBoot项目打包成war包或jar包,把war包或jar包部署到服务器,再通过命令启动对应的SpringBoot服务。
在一些高并发环境中,还会把相同的SpringBoot项目部署到多台服务器上实现分布式部署,同时引入反向代理组件Nginx,Nginx把请求分摊到多台服务器上,以负载均衡的方式提升系统的整体吞吐能力。
在实际应用中,一般还会通过Actuator等组件监控SpringBoot项目及所处服务器的状态,比如监控当前项目是否处在工作状态,或所处服务器的CPU情况等。
打包和运行Spring Boot项目
用Maven命令打包
首先,在pom.xml里,制定打包格式
<groupId>org.example</groupId><artifactId>Simpleprj</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging> //或war
如果项目只包含java代码,可以打包成jar。如果还有html、jsp、js等web代码,可以打包成war。
通过点击Maven的package命令即可完成打包

打包完成后,在项目的target目录里看到打成的jar包。
也可以在命令行进入当前项目的目录,通过mvn命令完成打包
D:\work\Spring Boot Code\chapter15\Simpleprj>mvn clean package
启动项目
打包完成后,进入到jar包所在路径,通过如下java命令启动项目
D:\work\Spring Boot Code\chapter15\Simpleprj\target>java -jar Simpleprj-1.0-SNAPSHOT.jar
实际会把达成的jar或war包复制到linux主机的制定路径。部署完成后,在linux系统中通过类似的java命令启动项目。
Nginx
Nginx组件与分布式负载均衡
下载Nginx组件

实践分布式部署
复制多个项目,设置server.port分别是8080,8085,8090。
打开nginx.conf文件夹,修改为如下
worker_processes 1;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream springboot.com{server 127.0.0.1:8080;server 127.0.0.1:8085;server 127.0.0.1:8090;}server {listen 80;location / {proxy_pass http://springboot.com/hello;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
重启nginx,打包运行三个项目,在浏览器多次输入http://localhost:80/。
该请求被nginx转发到三个项目的控制器方法,产生不同的输出。该过程仅为演示,
在实际项目中,会按如下步骤实施分布式部署
- 会把模块打包部署到多台(比如三台)不同的主机上,用java命令启动项目,它们工作的端口完全相同,比如都在8080。
- 在nginx.conf中做如下配置(不同ip),以负载均衡方式转发到三台服务器
较详细的linux环境下部署:https://blog.csdn.net/JJBOOM425/article/details/88416872
upstream springboot.com{server ip1:8080;server ip2:8080;server ip3:8080;}
- 如果三个业务模块仍无法满足高并发的需求,那么进行扩容。比如在新的服务器上部署并启动业务模块,修改nginx.conf文件里的upstream配置项。
实现在Nginx反向代理的基础上,以分布式部署的方式,用若干个业务模块同时应对高并发的请求。
监控Spring Boot项目
引入依赖,监控端点
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies>
配置监控项
参考&推荐
《搭建Spring Boot开发环境》
CSDN·Linux服务器使用Nginx分布式部署
