最近想要将springboot项目部署到阿里云ECS云服务器的tomcat上,并通过nginx做反向代理,遇到的几个问题及解决方法。
1.nginx操作:/etc/init.d/nginx start|restart|stop
(1)将nginx中 将http最后的
#include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;
注释掉否则配置不起作用
(2)出现504Gateway Time-out
在http中设置fastcgi_buffers 8 128k
加大进程响应缓冲区
2.springboot打成war包,用maven打包
(1)将springboot启动类继承SpringBootServletInitialize,并重写
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringContextApplication.class);
}
(2)增加servlet api
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
(3)将springboot starter tomcat 作用域改为provided
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
(4)将springboot starter web 中的springboot starter tomcat移除
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
(5)在要部署的war项目中加入插件
<build>
<finalName>/xxx(自己的项目名)</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
将打的war包放到tomcat的webapps下启动tomcat就行了
欢迎加入qq交流群,享受编程之美,开源分享之乐!群号:488208422