首页 > 编程语言 > tomcat 应用java8版本的

tomcat 应用java8版本的

时间:2023-02-11 18:04:26浏览次数:57  
标签:bin tomcat host manager usr 版本 local java8

jbk java development kit java开发工具包

理论:

tomcat原理图  

container 处理请求
server 8005 对服务的开启 管理服务
HTTP/1.1 服务和端口号 来自客户端的请求 8080
ajp/1.3 其他服务端的请求 8009
connector 建立连接

大概意思:
建立请求 HTTP/1.1 传给 engine 虚拟主机上主要弄web应用的 engine直接给小弟(host)他会进行选择先选择默认的localhost 看看那个域名对应上了 然后传给context 在进行目录的路径查找

准确意思:
客户端建立请求访问8080 HTTP/1.1直接传给engine,engine下面有host小弟,那么请求就直接给host hos在找到客户端访问的对应域名,如果没有直接用默认localhost,然后再传给context,context用path进行目录查找 查找完一看有这个域名,在回馈给客户端

tomcat index.jsp 动态信息


核心组件:
server层级最高 下面有一个 或多个service
service在包含多个Connector和只能包含一个Engine把他们包装起来 对外提供服务
Connector 从客户端接受请求(建立连接)
Engine 处理接受请求(他是service的请求处理组件)
如何处理请求
engine组件从一个或多个connector中接受请求,并完成响应后返回给connector,最后传给客户端
engine host context都是web容器 他们不平行,而是父子关系 engine是host父,
host是context的父

host:间接的理解为虚拟主机,运行多个web(一个context代表一个web)
注意:host不处理请求(他只是承载web应用的) 他让小弟context来处理
context:一个context代表一个web应用 他的大哥是host也就是虚拟主机



Connector 跟客户端建立连接请求 创建Request和Response对象,请求端交换数据,然后在分配给engine让他来处理请求,并把创建的两个对象同时发给engine
connector可以控制service的协议以及端口号

实验:

1. 安装java语言
tar -zxf jdk-8u201-linux-x64.tar.gz
mv jdk1.8.0_201/ /usr/local/java

声明全局变量
echo '
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin' >> /etc/profile


rm -rf /usr/bin/java 把原有的删掉 应用自己写入的

执行方式
source /etc/profile 设置系统环境变量的文件 就相当于 开机自启
java -version

2.安装tomcat
tar -zxf apache-tomcat-8.5.35.tar.gz
mv apache-tomcat-8.5.35 /usr/local/tomcat

启动服务
/usr/local/tomcat/bin/startup.sh
关闭服务
/usr/local/tomcat/bin/shutdown.sh

日志文件
/usr/local/tomcat/logs/catalina.out


3.tomcat多实例
tomcat默认监听端口 8080
cp -r /usr/local/{tomcat,1}
ls /usr/local/
vim /usr/local/tomcat/conf/server.xml

22行
<Server port="8006" shutdown="SHUTDOWN">

69和71行
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
116行
<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />

启动两个tomcat
/usr/local/tomcat/bin/startup.sh
/usr/local/1/bin/startup.sh

访问
firefox ://192.168.10.5:8081
firefox ://192.168.10.5:8080

简单部署一个web
进入配置文件 修改
<Host name="localhost" appBase="webapps"
域名 目录
unpackWARs="true" autoDeploy="true">
解压war的包 是否自动部署
<Context path="/hello" docBase="/usr/local/tomcat/webapps/hello"
访问路径 当前web应用的web目录
reloadable="false" crossContext="true"/>
当 class文件发生变化是否需要重启 false需要重启 如果是集群是否共享会话 true

mkdir /usr/local/tomcat/webapps/hello/
cd /usr/local/tomcat/webapps/hello/
echo "hello wored" > index.jsp

启动服务
访问


vim /usr/local/tomcat/conf/web.xml
112行
<param-name>listings</param-name>
<param-value>true</param-value>

mv index.jsp index1.jsp
echo '111111' > in.jsp

重启
访问


JVM内存监控

<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024; 最大内存
long fm = rtm.freeMemory()/1024/1024; 空闲内存
long tm = rtm.totalMemory()/1024/1024; 总内存 数值

out.println("JVM memory detailed info:<br>"); 把信息打印到屏幕上 但因JVM的详细信息
out.println("Max memory: "+mm+"MB"+"<br>"); 最大内存 数值 换行
out.println("Free memory: "+fm+"MB"+"<br>"); 空闲内存 数值 换行
out.println("Total memory: "+tm+"MB"+"<br>"); 总内存 数值 换行
out.println("Available memory: "+(mm+fm-tm)+"MB"+"<br>"); 剩余可用内存
%>

访问
firefox http://192.168.10.5:8080/hello/meminfo.jsp

远程监控
vim /usr/local/tomcat/bin/catalina.sh
308行
CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.10.5
远程调用的参数
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8080 监控端口
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sum.management.jmxremote.authenticate=true"是否用认证

cd /usr/local/java/jre/lib/management/
ls
cp jmxremote.password.template jmxremote.password
vim jmxremote.password
最后两行取消注释
nitorRole 12345678 两个密码
controlRole 12345678

重启

客户端
配置java环境
然后
jconsole


vim /usr/local/tomcat/bin/catalina.sh
删除
CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.10.5
远程调用的参数
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8080 监控端口
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sum.management.jmxremote.authenticate=true"是否用认证

app应用和管理
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
20行
allow="192.168.10.*" /> 自己的网段

加入用户密码的认证
vim /usr/local/tomcat/conf/tomcat-users.xml

<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="manager-gui"/> 定义一个角色
<role rolename="manager-script"/>
应用角色
<user username="manager" password="123456" roles="manager-gui"/>
<user username="script" password="123456" roles="manager-script"/>
</tomcat-users>


"manager-gui"/> 允许访问html接口 访问路径 /manager/html
"manager-script"/>允许访问纯文本接口
路径 /manager/text
manager-jmxporxy 允许访问jmx代理接口 路径/manager/jmxproxy
manager-status 允许访问tomcat只读页面(状态页面 版本JVM ) 路径 /manager/status

前三个角色都可以直接访问tomcat状态页面

启动/usr/local/tomcat/bin/startup.s

firefox http://192.168.10.5:8080/manager/html/

应用的部署方式:1)app manager 2)手动
自动
cp bdqnweb.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
curl http://192.168.10.5:8080/bdqnweb/

手动
mkdir /usr/local/tomcat/webapps/bdqnweb/
unzip bdqnweb.war -d /usr/local/tomcat/webapps/bdqnweb/
curl http://192.168.10.5:8080/bdqnweb/


host manager 主机(host)管理
vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
20行
allow="^.*$" />

vim /usr/local/tomcat/conf/tomcat-users.xml
<role rolename="admin-gui"/>
<user username="admin" password="123456" roles="admin-gui"/>

重启
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

访问
firefox http://192.168.10.5:8080/host-manager/html/
用户 admin 密码123456


tomcat的优化
1.安全(tomcat的加固)
1)端口防护 8080 非 8080
2) 禁用目录游览
3) 禁用后台管理 app manager host-manager
rm -rf /usr/local/tomcat/webapps/{manager,host-manager}
4) 脚本权限收回
chmod 700 /usr/local/tomcat/bi*
5) 服务器信息隐藏 Apache Tomcat/8.5.35
思路:对于可能出现的错误代码,进行错误页面优化
vim /usr/local/tomcat/conf/web.xml
25行
<error-page>
<error-code>404</error-code> 报错404
<location>/notfound.jsp</location>输入报错信息的脚本
</error-page>
cd /usr/local/tomcat/webapps/hello/
ls
index.jsp meminf.jsp meminfo.jsp
echo "page no found" > notfound.jsp




2.tomcat的参数优化
1)内核参数优化
本地端口范围 正常开放的端口范围32768-65535
echo 'net.ipv4.ip_local_port_range = 2048 65535
net.ipv4.tcp_syn_retries= 2 发送两次syn包
net.ipv4.tcp_synack_retries = 2 发送两次synck包 超过两次 断开连接

net.ipv4.tcp_keepalive_time = 1500 毫秒
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 20000 syn队列的长度
网卡接收数据包的速度的速度 > 处理速度数据包的速度 对多可以积压多少数据包
net.core.netdev_max_backlog = 65535 ' >>/etc/sysctl.conf

2)JVM内存优化
操作东西很限制
扩大JVN内存
vim /usr/local/tomcat/bin/catalina.sh
307行 写入
CATALINA_OPTS="-server -Xms256m -Xmx512m"
-server 第一位 多核cpu性能达到最佳
-Xms256m 初始内存
-Xmx512m 向服务器需求的最大内存

3)模型优化
4)并发优化 tcp的连接

模型优化
拖进arp 1.7.0的软件包
yum -y install gcc-c++
tar -zxf apr-1.7.0.tar.gz
cd apr-1.7.0/
./configure --prefix=/usr/local/apr && make && make install

cd /usr/local/tomcat/bin/
ls
tar -zxf tomcat-native.tar.gz -C /usr/src/
cd /usr/src/tomcat-native-1.2.18-src/native/

./configure --prefix=/usr/local/apr --with-java-home=/usr/local/java && make && make install

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib' >> /etc/profile

source /etc/profile

三种工作模式
1 BIO blocking I/O 阻塞 I/O
2 NIO nonblocking I/O 非阻塞I/O
基于系统缓存区 可以提供非阻塞I/O操作 拥有比BIO更高的并发
3 APR Apache Portable Runtime Apache便携运行时
调用httpd的动态链接库来进行文件的读取和传输,提高Tomcat对静态文件的处理能力 时Tomcat高并发的首选模式

如何进行工作模式的切换
1.就是把前面的软件包安装好
2.更改配置文件进行模式的切换
vim /usr/local/tomcat/conf/server.xml
88行双引号里面的复制
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
去69行 双引号里面删除复制刚才复制的
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 把 Nio改成Apr
保存退出

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

netstat -anput | grep 8080

如果有结果 就对了
grep 'http-apr-8080' /usr/local/tomcat/logs/catalina.out



并发量实验:
vim /usr/local/tomcat/conf/server.xml
69行下开始写入并发量
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
maxThreads="1000" 设置并发量
minProcessors="100" 最小的线程数量
maxProcessors="1000" 最大线程数量
minSpareTherads="100" 最小空闲线程数量
maxSpareThreads="500" 最大空闲线程数量
acceptCount="1000" 请求的队列长队(等待处理的请求)
URIEncoding="utf8" 字符集
disableUploadTimeout="true" 禁用上传超时
enableLookups="false" 是否允许反向域名查询
redirectPort="8443" /> 重定向的端口

重新启动服务

标签:bin,tomcat,host,manager,usr,版本,local,java8
From: https://blog.51cto.com/u_15327680/6050914

相关文章