学习目标和内容
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat支持最新的Servlet和JSP规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
coyote是tomcat的Connector框架的名字,简单说就是coyote来处理底层的socket,并将http请求、响应等字节流层面的东西,包装成Request和Response两个类(这两个类是tomcat定义的,而非servlet中的ServletRequest和ServletResponse),供容器使用
3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。
5、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。
7、Context把执行完之后的HttpServletResponse对象返回给Host。
8、Host把HttpServletResponse对象返回给Engine。
9、Engine把HttpServletResponse对象返回Connector。
10、Connector把HttpServletResponse对象返回给客户Browser。
Tomcat同类型软件:
WebSphere IBM
Weblogic Oracle
Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。
①yum方式安装 加载epel源,版本目前为tomcat7.0
②二进制方式安装 直接下载,部署好java环境,即可运行(推荐)
③源码方式安装 需要下载Apache Ant进行编译安装
①上传获取软件
②部署java环境
shell > tar zxvf jdk-10.0.1_linux-x64_bin.tar.gz
shell > mkdir /usr/local/java
shell > mv jdk-10.0.1 /usr/local/java/jdk-10.0.1
shell > export JAVA_HOME=/usr/local/java/jdk-10.0.1 >> /etc/profile
shell > . /etc/profile
③部署tomcat
shell > tar xvf apache-tomcat-9.0.11.tar.gz
shelll > mv apache-tomcat-9.0.11 /usr/local/tomcat
软件部署之后的目录结构
bin 存放启动和关闭Tomcat的脚本文件
conf 存放Tomcat服务器的各种全局配置⽂文件,其中最重要的是server.xml和web.xml
lib 存放Tomcat服务器所需的各种JAR文件
logs 存放Tomcat执行时的日志文件 、
temp 此目录是tomcat存放的临时文件
webapps tomcat默认存放应用程序的目录,好比apache的默认网页存放路径是/var/www/html一样
work 用于存放JSP应用程序在部署时编译后产生的class文件
docs tomcat文档
examples tomcat自带的一个独立的web应用程序例子
host-manager tomcat的主机管理应用程序
manager tomcat的管理应用程序
ROOT 指tomcat的应用程序的根,如果应用程序部署在ROOT中,则
可直接通过http://ip:port 访问到
catalina.policy 配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限
catalina.properties 配置tomcat的classpath等
context.xml tomcat的默认context容器
logging.properties 配置tomcat的日志输出方式
server.xml tomcat的主配置文件
tomcat-users.xml tomcat的角色(授权用户)配置文件
web.xml tomcat的应用程序的部署描述符文件
tomcat的相关管理命令在$prefix/bin目录下
经常使用的命令:
catalina.sh
configtest.sh
shutdown.sh
startup.sh
version.sh
①测试启动tomcat
shell > /usr/local/tomcat/bin/startup.sh
shell > ps aux |grep tomcat
shell > netstat -lntp |grep 8080
②查看页面效果
③测试关闭tomcat
tomcat提供了方便的启动命令脚本,但是却没有提供服务器中经常管理使用的service脚本。可以自行编写服务管理脚本
根据编写的server脚本,通过chkconfig管理即可
自行编写的service脚本,使用chkconfig管理启动,需要加入chkconfig参数
①默认访问目录
②编写测试文件
③查看测试效果
tomcat单实例运行多个tomcat应用的案列
①建立项目目录并写入测试文件
②编辑配置文件
shell > /usr/local/tomcat/conf/server.xml
③检测配置并重启
④访问主机解析域名
⑤测试访问
默认访问报错
①去掉访问IP限制
②开启访问权限
③查看页面
①测试关闭
②访问测试
start之后即可重新访问正常显示
上面遇到的类似的错误
根据以上配置解决即可
LNMPA nginx 前端服务器返回静态资源 apache+phpmod解析php程序更加稳定
实际业务环境中,用户是直接通过域名访问。基于协议一般是http、https等。默认tomcat运行在8080端口。一般会通过前端服务器反向代理到后端tomcat的方式,来实现用户可以直接通过域名访问到tomcat的webapp
实现配置
出现的问题:
403权限问题:禁止访问了
①目录权限问题
②禁止了IP访问
解决方案:
在location jsp反向代理端加入:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
随着业务的发展,单实例服务已经不能够满足业务使用需要。
pv、qps、DAU
单实例无法满足,扩容为多实例
常见的业务运行方式
单实例单应用 一个tomcat一个webapps
单实例多应用 一个tomcat多个webapps host
多实例单应用 多个tomcat同一个webapps
多实例实现方式:①多台服务器一个运行一个实例(性能) ②单台服务器允许多个实 例(监听不同的端口,性价比高)
多实例多应用
业务流程图示
实现操作:
①创建多实例,复制一份tomcat
②配置tomcat1实例的启动参数 三个端口(服务端口,shutdown,ajo)
③检测配置分别启动服务
shell > /usr/local/tomcat1/bin/configtest.sh
shell > /usr/local/tomcat1/bin/configtest.sh
shell > /usr/local/tomcat/bin/starup.sh
shell > /usr/local/tomcat/bin/starup.sh
④在LB服务器Nginx进行配置负载均衡
⑤测试效果查看
为了能够实际查看到效果,可以修改其中一个tomcat示列中的代码以示区别
Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。
http://blog.51cto.com/caiyuanji/2115500
①获取软件包
shell >https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.11.0-x64.bin
②建立一个Mysql用户使用
shell > grant all privileges on confluence.* to 'confluenceuser'\@'127.0.0.1'
identified by '123456';
shell > flush privileges;
③项目代码解压安装
shell > chmod +x atlassian-confluence-6.11.0-x64.bin
shell > ./atlassian-confluence-6.11.0-x64.bin
Confluence监听8090端口,可以在 /opt/atlassian/confluence/conf目录下
的server.xml中更改
④配置数据库连接
shell > tar xvfmysql-connector-java-5.1.47.tar
shell > cd mysql-connector-java-5.1.47
shell > cp mysql-connector-java-5.1.47.jar /opt/atlassian/confluence/lib/
④web配置
直接第一个页面,选择第二项,自己在本地数据库进行创建使用
生成listen码
连接数据库时,需要选择mysql的jdbc模式
填写好对应的用户名称和密码和对应的数据库,即可进行安装
在实际项目部署中,还有一种情况,直接上传一个war的包,直接启动,会自动释放文件。可以直接使用了