在部署应用时需要更改默认的端口号及应用,以免让别人知道使用的服务器类型而进行攻击。
tomca的部署有多种方式,这里简单谈一下。
目前想到有三种方式:
一、添加 Context
在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个JSP应用程序。
在tomcat中conf目录下server.xml中的<host/>节点中添加:
<Context path="/hello" docBase="D:\ workspace\hello\WebRoot" debug="0" privileged="true"></Context>
或者
<Context path="/myapp" reloadable="true" docBase="D:\myapp" workDir="D:\myapp\work"/>
或者
<Context path="/sms4" docBase="D:\workspace\sms4\WebRoot"/>
参数说明:
path
是虚拟路径;
docBase
是应用程序的物理路径;
workDir
是这个应用的工作目录,存放运行时生成的与这个应用相关的文件;
debug
则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息
privileged
设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet
reloadable
如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署
antiResourceLocking和antiJARLocking
热部署时需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。
docBase 最好是tomcat/webapps 外的目录
,不然就是加载了两个应用,一个是context path=””的web-demo应用,而另一个是context path=”web-demo”的应用,虽然两者指向的物理路径一致。因此,访问http://localhost:8080, 访问http://localhost:8080/web-demo,得到的是相同的首页,但是其实是tomcat的2个context的response。
二、覆盖ROOT
将项目拷贝到webapps下,并将项目名称改为ROOT,把原来的ROOT备份。
三、修改 ROOT目录的index.jsp(不推荐,会暴露服务器默认首页)
修改tomcat ROOT目录的index.jsp,使其加载默认应用的首页,如此处应修改成如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<meta http-equiv="refresh" content="0;URL=<%=request.getContextPath()%>/web-demo/index.html">
</head>
<body>
</body>
</html>