环境
Centos 7
Tomcat-8
Web项目1:java web 入门学习项目
Web项目2:spring boot /maven 构建
提纲
在一个tomcat中部署多个web项目,一般只需要简单的將web程序放到tomcat安装目录/webapps中即可,但是我安装的时候遇见了一些问题,在此记录便于以后查询,若有问题欢迎道友指正,不胜感激^.^
tomcat配置,三种方法
Tomcat安装略过
1. 基础做法
直接將项目放到webapps中即可,重启tomcat浏览器访问即可;
特别说明:在安装tomcat的时候,没有更改这个默认的存放项目的位置。Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将程序打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的所有内容进行压缩得到。
修改默认的项目存放位置:修改tomcat安装目录/conf/server.xml
<Host name="localhost"
appBase="webapps"
unpackWARs="true"
autoDeploy="true"
xmlNamespaceAware="false">
將host
节点中appBase
更改为自己存放项目的目录即可,unpackWARs
表明是否在启动时是否自动解压war包
2. 升级做法
在tomcat安装目录/conf/server.xml
指定项目位置。
在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个JSP应用程序。打开server.xml文件,在Host标签内建一个Context,内容如下
<Context path="/web1" docBase="D:\我存放第一个web项目的目录" debug="0" privileged="true"></Context>
<Context path="/web2" reloadable="true" docBase="D:\我存放第二个web项目的目录"/>
Path
是浏览器访问时输入的request
路径,我写得和项目.war包名相同;docBase
是存放应用程序的物理路径
3.推荐做法
不用修改conf/server.xml文件,直接在tomcat安装目录/conf/Catalina/localhost
目录下创建配置文件,文件名和request路径名相同,和war包名相同,后缀为.xml,如web1.xml,web2.xml
然后在web1.xml文件中写的类容为:
<Context path="/hello" docBase="D:\程序web1的目录" debug="0" privileged="true"></Context>
Path值和文件名相同,即等于request路劲。
然后web2中的类容一样,只是path和docBase做相应更改即可,如果以后有更多项目,直接增加相应的文件即可。
服务器端运行的项目名称为path,外部访问的URL则使用XML的文件名。这个方法很方便的隐藏了项目的名称,对一些项目名称被固定不能更换,但外部访问时又想换个路径,非常有效
网址无法打开,查看日志,显示
Unable to add the resource at [/WEB-INF/lib/twilio-java-sdk-6.3.0.jar] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
的问题,是因为从tomcat8中开始就增加了静态资源缓存的配置 ,是需要设置相应的参数的。
在tomcat的安装目录/conf/context.xml
中的Context中添加:<Resources cachingAllowed="true" cacheMaxSize="100000"/>
web程序代码设置
因为spring-boot默认提供内嵌的tomcat,所以需要在一个tomcat中运行多个web程序的时候,需要將项目打包成war以及取消boot自带的tomcat。
1.修改程序入口
将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
2.修改pom
在pom.xml文件中,project下面增加package标签,若原有可能的是jar,所以將jar改成war
<packaging>war</packaging>
3.取消内嵌的tomcat
pom.xml文件中,dependencies下面添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
备注:
请注意修改防火墙访问端口。以上办法都没有设置项目访问域名以及设置单独的访问端口,均使用相同的IP和端口访问。
参考
tomcat服务器部署多项目方法
tomcat配置文件中属性值的说明
spring-boot项目在外部tomcat环境下部署遇到的问题