1 springboot
項目相關
1.1 修改pom.xml
文件依賴
若是要將最終的打包形式改成war
的話,還須要對pom.xml
文件進行修改,由於spring-boot-starter-web
中包含內嵌的tomcat
容器,因此直接部署在外部容器會衝突報錯。這裏有兩種方法能夠解決,以下java
方法一:web
在web
依賴中去除tomcat
的依賴spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
在這裏須要移除對嵌入式Tomcat
的依賴,這樣打出的war
包中,在lib
目錄下才不會包含Tomcat
相關的jar
包,不然將會出現啓動錯誤。還有一個很關鍵的關鍵點,就是tomcat-embed-jasper
中scope
必須是provided
。apache
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
方法二:bootstrap
由於SpringBootServletInitializer
須要依賴javax.servlet
,而tomcat-embed-jasper
下面的tomcat-embed-core
中就有這個javax.servlet
,若是沒用provided
,最終打好的war
裏面會有servlet-api
這個jar
,這樣就會跟tomcat
自己的衝突了。這個關鍵點一樣適應於下面說的第二種方法。vim
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
provided
的做用上面已經介紹的很透徹了,這裏就不囉嗦了,這種方式的好處是,打包的war
包同時適合java -jar
命令啓動以及部署到外部容器中。api
1.2 修改打包方式
<packaging>war</packaging>
1.3 修改啓動類
外部容器部署的話,就不能依賴於Application
的main
函數了,而是要以相似於web.xml文件配置的方式來啓動Spring應用上下文,此時咱們須要在啓動類中繼承SpringBootServletInitializer
並實現configure
方法:瀏覽器
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication public class Chapter05Application extends SpringBootServletInitializer { [@Override](https://my.oschina.net/u/1162528) protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Chapter05Application.class); } public static void main(String[] args) { SpringApplication.run(Chapter05Application.class, args); } }
#2 tomcat
相關tomcat
2.1 下載
網址:http://tomcat.apache.org/springboot
2.2 解壓安裝
將安裝包移動到你想要的位置,而後解壓:
tar -zxvf apache-tomcat-8.5.34.tar.gz ./
重命名,這樣後面的操做能夠少打一點字。
mv apache-tomcat-8.5.34 tomcat
設置環境變量
vim /etc/profile
在文件末尾中加入:
#set tomcat environment CATALINA_HOME=/usr/local/tomcat export CATALINA_HOME
從新加載環境變量的配置文件:
source /etc/profile
進入tomcat
文件夾
cd /usr/local/tomcat
編輯catalina.sh
文件:
vim bin/catalina.sh
在文檔前面加入:
CATALINA_HOME=/usr/local/tomcat JAVA_HOME=/usr/local/java/jdk1.8.0_181
CATALINA_HOME
是tomcat
的安裝路徑,JAVA_HOME
是上面JDK的安裝路徑,把上面的路徑改爲你本身的安裝路徑便可。
2.3 啓動tomcat
當前位置是/usr/local/tomcat
./bin/startup.sh
顯示下面信息,表示啓動成功:
Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jdk1.8.0_181 Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started.
2.4 中止tomcat
./bin/shutdown.sh
2.5 檢測tomcat
是否安裝成功
瀏覽器訪問http://localhost:8080 會顯示tomcat的信息。
2.6 修改tomcat
端口
vim /usr/local/tomcat/conf/server.xml
找到8080端口的位置,將他修改成80。
2.7 將tomcat
設置爲開機啓動
複製catalina.sh
到/etc/init.d
目錄下,並重命名爲tomcat
cp /usr/local/tomcat/bin/catalina.sh /etc/init.d/tomcat
設置權限
chmod +x /etc/init.d/tomcat
在自啓動文件夾下建立tomcat
的軟(或硬)鏈接,K表示不自啓動,S表示自啓動。
ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat
完成,重啓測試便可。
3 部署項目
刪除tomcat
的webapps
下的全部文件
rm -rf /usr/local/tomcat/webapps/*
將項目的war包上傳到tomcat
的webapps
下,而且重命名爲ROOT.war
啓動tomcat,訪問http://localhost 。
重啓測試tomcat是否正常啓動。