tomcat根目录结构
- Tomcat中默认网站根目录是/usr/local/apache-tomcat-8.5.100/webapps/
- 在Tomcat的webapps目录中,有个非常特殊的目录ROOT,它就是网站默认根目录。
- 将eshop解压后的文件放到这个/usr/local/apache-tomcat-8.5.100/webapps/ROOT中。
- bbs解压后文件都放在/usr/local/apache-tomcat-8.5.100/webapps/forum目录下。
- /usr/local/apache-tomcat-8.5.100/webapps下面的每个目录都对应一个Web应用,即WebApp
http://localhost/ 对应于eshop的应用WebApp,即/usr/local/apache-tomcat-8.5.100/webapps/ROOT/目录,
http://localhost/docs/ 对应于forum的应用WebApp,即/usr/local/apache-tomcat-8.5.100/webapps/docs/
- 如果同时存在/usr/local/apache-tomcat-8.5.100/webapps/ROOT/forum ,仍以 /usr/local/apache-tomcat-8.5.100/webapps/forum/ 优先生效
- 每一个虚拟主机都可以使用appBase指令配置自己的站点目录,使用appBase目录下的ROOT目录作为主站目录
案例
[root@localhost webapps]# cat ROOT/index.html
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>tomcat</title>
</head>
<h1>给孩子一个运维的工作</h1>
JSP WebApp目录结构
/usr/local/apache-tomcat-8.5.100/webapps下面的每个目录对应的WebApp,可能有以下子目录,但下面子目录是非必须的
主页配置:默认按以下顺序查找主页文件 index.html,index.htm、index.jsp
WEB-INF/:当前目录WebApp的私有资源路径,通常存储当前应用使用的web.xml和context.xml
配置文件
META-INF/:类似于WEB-INF,也是私有资源的配置信息,和WEB-INF/目录一样浏览器无法访问
classes/:类文件,当前webapp需要的类
lib/:当前应用依赖的jar包
主页配置
全局配置实现修改默认主页文件
默认情况下 tomcat 会在/usr/local/apache-tomcat-8.5.100/webapps/ROOT/目录下按以下次序查找文件,找到第一个则进行显示
可以通过修改 在/usr/local/apache-tomcat-8.5.100/conf/web.xml 中的下面 <welcome-file-list>标签 内容修改默认页文件
[root@localhost ROOT]# cat index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>tomcat test</title>
</head>
<body>
<h1> Tomcat Website </h1>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html
WebApp的专用配置文件
cp -a ROOT/WEB-INF/ xf/
chown -R tomcat.tomcat webapps/xf/
配置规则
- webApp的专有配置优先于系统的全局配置
- 修改系统的全局配置文件,需要重新启动服务生效
- 修改 webApp的专有配置,无需重启即可生效
应用部署实现
WebApp应用的归档格式
- .war:WebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如jsp,html,配置文件等
- .jar:EJB类文件的打包压缩类zip格式文件,,包括很多的class文件
- .rar:资源适配器类打包文件,目前已不常用
- .ear:企业级WebApp打包,目前已不常用
war格式,部署到Tomcat的webapps目录下,并默认会自动解包展开和部署上线。
部署方式
- 部署Deploy:将webapp的源文件放置到目标目录,通过web.xml和context.xml文件中配置的路径就可以访问该webapp,通过类加载器加载其特有的类和依赖的类到JVM上,即:最终用户可以通过浏览器访问该应用
自动部署:Tomcat一旦发现多了一个web应用APP.war包,默认会自动把它解压缩,加载并
启动起来
手动部署
冷部署:将webapp放到指定目录,才去启动Tomcat服务
热部署:Tomcat服务不停止,需要依赖manager、ant脚本、tcd(tomcat client
deployer)等工具
- 反部署undeploy:停止webapp运行,并从JVM上清除已经加载的类,从Tomcat应用目录中移除部署的文件
- 启动start:是webapp能够访问
- 停止stop:webapp不能访问,不能提供服务,但是JVM并不清除它
手动应用部署
部署主页目录下的应用WebApp
[root@localhost apache-tomcat-8.5.100]# cat webapps/ROOT/test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>jsp例子</title>
</head>
<body>
后面的内容是服务器端动态生成字符串,最后拼接在一起
<%
out.println("hello jsp");
%>
<br>
<%=request.getRequestURL()%>
</body>
</html>
部署一个子目录的应用WebApp
mkdir webapps/xf
cp -p webapps/ROOT/test.jsp webapps/xf/
chown -R tomcat.tomcat webapps/xf/
自动的应用部署war包
制作应用的war包文件
mkdir /data/app
echo "1234567" > /data/app/test.html
cp webapps/ROOT/test.jsp /data/app/
cd /data/app/
jar cvf /data/app.war *
cp /data/app.war /usr/local/apache-tomcat-8.5.100/webapps/
部署基于JAVA的博客系统 JPress
准备java包
ln -s webapps/jpress-v4.0.7 webapps/jpress
安装数据库
yum install -y mysql-server
systemctl enable --now mysqld
图片上传位置
基于WEB的管理实现应用部署
实现WEB的管理Server status和Manager APP
在 /usr/local/apache-tomcat-8.5.100/conf/tomcat-users.xml下添加
<role rolename="manager-gui"/><user username="tomcat" password="123456" roles="manager-gui"/>
本机访问
实现外部访问
/usr/local/apache-tomcat-8.5.100/webapps/manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.148\.\d+" />添加ip “.”要进行转义,d+匹配全部
实现WEB的管理Host Manager
在 /usr/local/apache-tomcat-8.5.100/conf/tomcat-users.xml下添加
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="admin-gui"/>
本机访问
外部访问
在/usr/local/apache-tomcat-8.5.100/webapps/host-manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.148\.\d+" />
基于WEB应用程序管理器实现APP的部署
可以启动、停止、重加载、反部署、清理过期session
Deploy 可以热部署,也可以部署war文件
指定目录部署软件
Context Path (required): 指定通过浏览器访问的虚拟目录
WAR or Directory URL:指定真正存放文件的实际磁盘目录路径
mkdir /data/app
部署
查看
访问
部署war包文件
部署
查看
访问