当前位置:首页>开发>正文

怎么把spring部署到nginx spring-boot 需要启动nginx吗

2023-04-15 06:38:38 互联网 未知 开发

 怎么把spring部署到nginx spring-boot 需要启动nginx吗

怎么把spring部署到nginx

Nginx配置如下:

XML/HTML code?

server {
listen 80
server_name 这里写外网访问的域名
access_log 这里写访问日志文件路径
location / {
proxy_pass 这里很重要,见下面注释
index index.jsp index index.html
}
}

Nginx是反向代理,proxy_pass 要指定Tomcat配置的访问方式,如果Tomcat是默认方式访问,就:
proxy_pass http /localhost:8080
配的域名方式访问就把localhost改为域名。
转载,仅供参考。

spring-boot 需要启动nginx吗

在开发Spring Boot应用的过程中,Spring Boot直接执行public static void main()函数并启动一个内嵌的应用服务器(取决于类路径上的以来是Tomcat还是jetty)来处理应用请求。对于生产环境,这样的部署方式同样有效,同时Spring Boot也支持传统的部署方式——将war包放入应用服务器中启动运行。
内嵌应用服务器
在使用Maven或Gradle构建Spring Boot应用的过程中,Spring Boot插件提供了巨大的帮助,除了生命各类预定义的依赖,它还能够构建可以直接运行的jar包——包含了所有的依赖以及内嵌应用服务器。应用的分发也就变得非常简单,任何人拿到了这个jar包,只需要简单运行java -jar your.jar就可以启动应用,无需任何构建工具、安装过程以及应用服务器。
内嵌应用服务器配置
在生产环境中,应用服务器需要各类配置,Spring Boot本身提供了一种非常简单的配置机制——application.properties:

server.port=8080 # 监听端口
server.address= # 绑定的地址
server.session-timeout= #session有效时长
server.context-path= #默认为/
server.ssl.* #ssl相关配置

Tomcat
默认情况下,Spring Boot启动的内嵌容器就是Tomcat,对于Tomcat有几个非常重要的配置:

server.tomcat.basedir=/tmp

tomcat的baseDir,日志、dump等文件都存在于这个目录中,一般是系统的临时文件夹/tmp,但也可以按照自己的需求变更位置。

server.tomcat.access-log-pattern= # log pattern of the access log
server.tomcat.access-log-enabled=false # is access logging enabled

这两个配置打开Tomcat的Access日志,并可以设置日志格式。
Jetty
如果你不喜欢Tomcat,Jetty也是一个非常不错的选择。使用Jetty的方式也非常简单——把tomcat依赖从Maven或Gradle中移除,加入Jetty内嵌容器的依赖:

org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty Java EE应用服务器 除了内嵌容器的部署模式,Spring Boot也支持将应用部署至已有的Tomcat容器, 或JBoss, WebLogic等传统Java EE应用服务器。 以Maven为例,首先需要将从jar改成war,然后取消spring-boot-maven-plugin,然后修改Application.java: package demo import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.EnableAutoConfiguration import org.springframework.boot.builder.SpringApplicationBuilder import org.springframework.boot.context.web.SpringBootServletInitializer import org.springframework.context.annotation.ComponentScan import org.springframework.context.annotation.Configuration import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @Configuration @ComponentScan @EnableAutoConfiguration public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(applicationClass, args) } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(applicationClass) } private static Class applicationClass = Application.class } 接下来打包应用,将生成的war包放入应用服务器目录即可。 使用外部配置文件 在应用程序中有很多配置项,例如数据库连接地址、日志文件位置、应用服务器配置等等。为了安全与灵活性,我们推荐将Spring Boot的配置文件放在生产环境的服务器上,并严格控制访问权限。在运行应用时可以通过命令行参数指定配置文件: java -jar location_of_your_jar_file.jar --spring.config.location=location_of_your_config_file.properties 这样做的好处是: 配置位于生产环境中,数据库连接等私密信息不容易泄露 灵活性强,同一份代码(包括构建的jar包)可以应用于不同的环境配置(开发、测试、生产) 使用Profile区分环境 在某些情况下,应用的某些业务逻辑可能需要有不同的实现。例如邮件服务,假设EmailService中包含的send(String email)方法向指定地址发送电子邮件,但是我们仅仅希望在生产环境中才执行真正发送邮件的代码,而开发环境里则不发送以免向用户发送无意义的垃圾邮件。 我们可以借助Spring的注解@Profile实现这样的功能,这样需要定义两个实现EmailService借口的类: @Service @Profile("dev") class DevEmailService implements EmailService { public void send(String email) { //Do Nothing } } @Service @Profile("prod") class ProdEmailService implements EmailService { public void send(String email) { //Real Email Service Logic } } @Profile("dev")表明只有Spring定义的Profile为dev时才会实例化DevEmailService这个类。那么如何设置Profile呢? 在配置文件中指定 在application.properties中加入: spring.profiles.active=dev 通过命令行参数 java -jar app.jar --spring.profiles.active=dev 以服务的形式运行应用 使用java命令运行应用非常简单,但是通常我们都是通过ssh命令连接到服务器并运行它,一旦ssh连接断开,那么由它fork的java子进程也就随之销毁了。所以我们必须借助工具将应用作为服务运行在服务器上: Systemd systemd 是Linux 下的一款系统和服务管理器。可以为Spring Boot应用编写启动脚本: [Unit] Description=Spring Boot Application [Service] ExecStart=/usr/bin/java -jar location_of_jar_file.jar --spring.config.location=location_of_config.properties --spring.profiles.active=profile User=${your expected user} [Install] WantedBy=multi-user.target Supervisord Supervisord是用Python实现的一款非常实用的进程管理工具。可以为Spring Boot应用编写: [program:app] command=/usr/bin/java -jar location_of_jar_file.jar --spring.config.location=location_of_config.properties --spring.profiles.active=profile user=${your expected user} autostart=true autorestart=true startsecs=10 startretries=3

springboot部署到服务器找不到controller

那应该是服务器端的Nginx没有配置,需要增加映射按一下流程筛查:
域名解析ip正确 - 访问 -> 服务器 - Nginx - 配置根据域名找到springboot项目,并确保Nginx和springboot项目已启动。

spring boot怎么部署到服务器

1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的jar修改为war形式;
2. 其次spring boot的web项目中内嵌tomcat服务器,所以如果我们想要发布war包到tomcat项目,要讲spring boot中内嵌的tomcat包依赖排除,不然产生冲突,打开下面代码中的注释即可。

org.springframework.boot spring-boot-starter-web

最新文章