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是否正常启动。