以前都是在虚拟机上部署的,所以没太多感觉,这次部署到云服务器(阿里云),问题有点太多了。
1. jdk安装,以前已经安装好了,这里不再介绍
2. tomcat安装,推荐别太快部署,先看看猫能不能出来,我安装的版本是8.0.53
注意:不知道为什么netstat lnp|grep 80 查看端口号时,8005端口总是起不来,这里参照网上的方法,将jdk中jre/lib/security/Java.security中参数进行修改
参数securerandom.source=file:/dev/random 改为 securerandom.source=file:/dev/urandom,这样我们8005端口号总算是起来了
3. 猫能看到了,现在开始部署(提前说一下,我把ROOT删掉了)
3.1 SpringBoot配置可能需要麻烦一点
a.修改pom.xml中打包方式<packaging>war</packaging>
b.然后移除嵌入式tomcat插件
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
c.添加servlet-api
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
d.修改启动类,重写初始化方法
类似于web.xml的配置方式来启动spring上下文了,在Application类的同级添加一个SpringBootServletInitializer类
/** * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */ public class SpringBootServletInitializer extends org.springframework.boot.web.support.SpringBootServletInitializer{ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(BootdoApplication.class); } }
前期springBoot项目就准备好了
3.2 我所使用的ide是idea,使用他的maven projects管理,package就可以生成war
3.3 接着将war包放到tomcat的webapps下
3.4 进入tomcat的conf下对server.xml进行配置
解释下标签host和context(我只用到这几个)
host :
appName —— 初始值为webapps,存放应用程序的路径
name —— 初始值为localhost,主机名
unpackWARS —— 初始值为 true,是否自动解压war包
autoDeploy —— 初始值为true,设置程序是否自动装载
context :
docBase —— 文件路径,可以是绝对路径,也可以是相对路径,相对路径就是相对于appName
path —— 访问路径 访问格式 http://ip:port/path
reloadable —— true 是否自动部署
然后运行startup.sh就可以了