前幾天springboot項目部署到linux中,整個過程就是個坑啊。踩坑的過程當中也學到了許多。spring boot 項目部署時因爲其內置了tomcat和jdk,並且還都是8。 因此部署的話就分爲兩種部署了, 第一種就是使用其內置的tomcat部署, 第二種就是採用外部的tomcat部署。採用內部的tomcat部署又分爲兩種: 第一種是打包成war包部署,第二種事打包成jar包部署。 二者區別就在於打包成jar包的是無靜態資源的,如jsp,HTML等,像只是提供restful接口。html
閱讀此篇博客請先去閱讀本人的spring boot 經常使用註解java
除了必要的jar,插件外還需導入 spring-boot-maven-plugin 插件linux
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.6.RELEASE</version> <configuration> <!-- 指定該Main Class爲全局的惟一入口 --> <mainClass>com.spSystem.App</mainClass> </configuration> <executions> <execution> <goals> <!--能夠把依賴的包都打包到生成的Jar包中--> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
採用外置tomcat部署時要注意:spring
1. 依賴jar包的衝突tomcat
因爲spring boot 內置了tomcat,jdk,servlet等,因此部署到外部tomcat中時要將其內置的tomcat,servlet等設置爲只在編譯和測試時使用springboot
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!-- 去除Spring Boot自帶的Tomcat插件 --> <scope>provided</scope> </dependency>
<!-- 配置低版本Tomcat,不然需8.5以上版本,請根據本身的Tomcat版本配置 -->
<properties>
<tomcat.version>7.0.77</tomcat.version>
</properties>
2. 程序主入口是什麼restful
項目中內置了servlet,程序的主入口原先是main方法,使用main方法自啓動。 因此咱們要將其重寫jsp
@SpringBootApplication public class SpringBootTest extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringBootTest.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringBootTest.class); } }
3.導入相應jar包的maven依賴時其相對應的版本maven
因爲spring boot與jdk,spring cloud 都有相對應的版本,因此導入jar包maven依賴時要配對好。 spring boot 2.0及以上的對應jdk1.8, spring cloud Finchley 版。 jdk 1.7 對應的是 spring boot 1.5 (1.0版)
ide
4. 部署到tomcat後程序的訪問路徑
本地中啓動項目訪問是沒有項目名的,但部署上去後。訪問路徑要加上項目名了(如:http://IP:端口/項目名/路由)
採用內置tomcat 部署 :
導出jar 包(同maven 導 jar 包,導war 包相同)採用內置tomcat 部署 將jar 包放入linux 中的一個目錄, 而後進入其所在目錄,執行
# spSystem.jar: jar包 # springboot.log: 執行命令後所生成的項目運行log(命令執行完,查看此log看看項目是否啓動成功) # &1 &:將此項目設置爲守護進程,要否則黑窗口一關項目也就中止了 nohup java -jar spSystem.jar >springboot.log 2>&1 &
採用內置tomcat部署時要注意:同上 1, 3
當採用內置tomcat 部署時 沒有導入 spring-boot-maven-plugin 插件 maven依賴 或者 沒有在依賴中指定程序的主入口 都會報 no main in xx.jar
當注意1的時候, 就是與採用外部tomcat 部署相反了,把<scope>provided</scope>註釋掉,或者把tomcat等的maven 依賴註釋去除
當注意3 的時候, 就會報XXXXX 52 版本衝突
關閉程序,殺死進程就能夠了
在此,但願此篇博客能幫助到一些人。有不足之處,有問題的話能夠博客上Q我,看到就會回覆
原文出處:https://www.cnblogs.com/jingjiren/p/10337561.html