个人网站是什么意思,wordpress是主流cms系统,苏州工业园区gdp,线上推广的公司Tomcat 它是一个免费、开源的web应用服务器#xff1b;基于java代码开发的软件#xff1b;处理动态请求和基于Java代码的页面开发#xff1b; 可以在html当中写入Java代码#xff0c;Tomcat可以解析html页面当中的Java代码#xff0c;执行动态请求以及动态页面 缺点#…
Tomcat 它是一个免费、开源的web应用服务器基于java代码开发的软件处理动态请求和基于Java代码的页面开发 可以在html当中写入Java代码Tomcat可以解析html页面当中的Java代码执行动态请求以及动态页面 缺点机制有问题如果不对Tomcat运行资源进行优化会出现“假死”、停机Tomcat适用于小集群、小服务、小应用不适合大并发的场景 优点1.免费2.开源、可以二次封装魔改3.可配置性强可以根据需要进行自定义配置包括端口号、虚拟主机等4.安全性较强Tomcat自带安全机制可以配置用户认证、授权、加密传输5.部署应用非常快捷会自动部署和运行 Tomcat的核心组件
/usr/local/tomcat/webapps #配置文件的位置
1.web容器完成web服务器的功能web应用
流程
web——http(s)——访问页面——指向index.jsp文件
特点
在web容器中封装了一组文件在这一组文件中进行集中化管理管理web动态页面
2.servlet容器又叫catalina处理servlet代码
就是处理web请求http以及生成动态内容的Java类
处理http请求
3.jsp将jsp动态页面翻译成servlet代码用标准格式展示jsp的静态页面 servlet
1.处理http请求
2.生成动态内容后为了和数据库交互——用户发起请求jsp当中的
3.会话管理通过管理用户在不同请求之间的状态让用户在访问不同页面时保持用户状态
4.与数据库交互servlet可以连接到数据库执行查询和更新操作这就是servlet能够生成动态内容的原因
jspJava server pages
动态页面的开发技术使用jsp标签index.jsp在html页面中插入Java代码
通过jsp容器把html页面当中的Java代码翻译并执行然后展示结果
通常以 % 为开头以 % 为结尾
#
面向对象指的是一种编程范式/思想客观存在的实体和他们之间的关系映射到计算机的程序当中
计算机的程序会被组织成一组相互作用的对象每个对象都有数据属性和行为方法。类定义一组属性和方法类是用来创建对象实例
封装把对象的属性和方法捆绑在一起提供一个接口让其他对象使用
继承一个类可以继承另一个类分为父类和子类子类可以重用父类的代码而且还可以在不修改代码的情况下进行扩展
多态不同类的对象对相同的消息做出不同的响应
#
Tomcat的组件结构
Connector负责对外接收和响应请求是Tomcat与外界的交通枢纽监听端口也可以接受外界请求交给container处理
Container负责对内处理业务逻辑Engine引擎管理虚拟机service一个service可以包含多个虚拟主机可以管理多个但是一个service里面只能有一个EngineHost代表一个虚拟机也可以叫站点Context表示web应用可以包含多个servletwrapper封装器最底层容器每一个wrapper中都封装一个servlet负责对象实例的创建、执行和销毁
父子关系工作方式也是从上到下运行 Tomcat处理请求的过程 1.输入网址请求发送到8080端口被监听的connector获得
2.connector会把请求转发到container处理——先到Engine虚拟主机查需要访问的是哪个虚拟主机——然后到host主机站点包含请求页面的位置webapps——再到contex就是index.jsp里面的内容——再到wrapperservlet响应解析处理请求——最后到jsp翻译官——进行页面展示
vim /etc/profile.d/java.shexport JAVA_HOME/usr/java/jdk1.8.0_201-amd64#指定jdk的安装路径jdk解释器类似于shell的各种工具export CLASSPATH.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar#CLASSPATH 定义类的环境变量环境类的库export PATH$JAVA_HOME/bin:$PATH#可执行文件
bin 存放的启动和关闭Tomcat脚本文件
conf 主配置文件server.xmlcontex.html host的默认配置信息tomcat-user.xml认证用户密码的配置文件web.xml配置servlet的规范标准
lib tomcat运行库的jar包一般不动除非连接第三方——redis数据库
logs 日志文件
webapps web应用部署的默认目录
work tomcat的工作目录存放jsp编译之后的class文件清除tomcat缓存就是删除工作目录
JVM***
就是Java的虚拟机是Java应用程序在计算机上运行的核心组件jvm负责将编译后的Java字节码.class文件解释或者编译成本地的机器码让计算机能够执行它jvm还提供了内存管理、垃圾回收和线程管理确保Java程序在不同平台可以有一致性的功能
JVM优化
初始内存容量小容易假死、停机需要优化
配置文件为catalina.sh 就是servlet代码
PS Eden Space 堆内存用来存储新创建的对象
PS Old Gen 堆内存用来存储长时间存活的对象
PS Survuvor Space 堆内存存储创建之后生命周期较短的对象
Code Cache 非堆内存存储已编译的代码
Comoressed Class Space 非堆内存存储已压缩的类
Metaspace 非堆内存存储类的元数据
#堆内存用来工作的非堆内存缓存存储垃圾的
#适用于小项目使用东西多了容易出问题
优化命令
JAVA_OPTS$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads2 -XX:PermSize1024m -XX:MaxPermSize1024m -Djava.awt.headlesstrue -XX:DisableExplicitGC -server 第一个参数指定内存池一定要放在第一个-Xms2048m 初始Java堆的大小分配JVM的最小内存这个数值主要看cupcpu性能高的话可以设高一些-Xmx2048m Java堆最大能多大JVM的最大内存与硬件内存挂钩根据官方文档起始值和最大值保持一致XMS和XMS设为相同值内存可以设为物理内存的一半-Xmn768m 新生代的内存大小官方推荐为整个堆的3/8-XX:ParalleIGCThreads2 配置并行收集器的线程数表示同时可以有多少个线程进行垃圾回收-XX:PermSize 设置持久代内存的大小默认是物理内存的1/4-XX:MaixPermSize1024m 最大的非堆内存的大小默认是物理内存的1/4-XX:PermSize1024m-XX:MaxPermSize1024m非堆内存是不会被垃圾回收处理机制处理的-XX:PermSize持久代内存与最大非堆内存不能超出操作系统可用的内存设置成一样大可以减轻伸缩堆大小的压力-Djava.awt.headlesstrue 避免在linux环境下web不能正常打开以正常显示图片。-XX:DisableExplicitGC 避免jvm空间大起大落影响系统的响应时间。响应速度会很慢。
堆区当中会进一步区分新、中、老生代
每一个新建的对象占用的空间就是新生代
Java垃圾回收机制对堆区进行资源回收新生代中没有被回收的资源就是中生代
中生代没有被回收的就是老生代
整个JVM大小就是新生代中生代老生代永久代
永久代不包括在垃圾回收机制中
ajp-nio-8009
ajp-nio 连接器的类型ajp表示使用ajp协议nio表示进行异步非阻塞
8009 连接器正在监听的端口connect中的一种
AJP 将tomcat服务器与前端web服务器进行连接通信提供负载均衡和高效的请求转发
http-nio-8080
处理http请求是和客户端通信的端口
Tomcat部署虚拟主机配置
一台服务器上在一个Tomcat中会部署多个虚拟机服务器减少系统的资源消耗
hostname 主机名
appBase 存放web程序的目录
unpackWARs 优先对wae文件进行展开默认就是true
autoDeploy 只要
xmIValidation
xmlNamespaceAware
优化Tomcat的启动速度
第一次启动Tomcat时会发现启动速度非常慢
jdk参数
vim /etc/java/jdk1.8.0_201-amd64/jre/lib/security/java.securityfile:/dev/urandom#117行在random前加一个u表示打开异步非阻塞
自身配置文件的优化
server.xml 针对主配置文件的优化
redirectPot 如果某连接器支持的协议是http当接收客户端发来的请求是https就会启用此端口8443
maxthreads Tomcat使用线程来处理请求的可以创建的最大线程数也就是并发连接数默认是200
minsparethreads 最小空闲线程数开启tomcat时会有多少线程默认为10
maxsparethreads 最大备用线程一旦创建的线程超过这个值Tomcat会关闭不再需要的端口线程默认是-1也就是不限制一般不指定URIEncoding:URL的格式编码默认utf-8需要分别指定所以一般也不动
connectionTimeout 网络连接超时单位毫秒为0则永不超时一般设为20000毫秒
enablelookups 是否反向解析域名为了能够获取远程的主机名一般设置为false直接返回IP地址提高了处理能力
disableUpliadTimeout 上传超时时间设置为true
connectionUploadTimeout 因人而异看情况30秒到1分钟
acceptCount 所有可以使用的线程都被占用了可以传入连接请求的最大队列长度默认为100超过100直接丢掉不再处理compression 是否开启页面和响应数据的压缩off关on开force强制压缩默认为off建议on
compressionMinSize 压缩响应的最小值等于或者小于这个值就不在压缩了2048
compressableMimeType 可以被压缩MIME的类型
浏览器和其他互联网应用程序之间处理文件的协议和需要处理的文档的性质和格式
文本 text/html,text/plain
图像 image/jpg image/gif
音频 audio/wav audio/mp3
视频 video/mp4 video/avi
应用程序 application/pdf application/json实验
---------------------Tomcat 服务部署-------------------------
在部署 Tomcat 之前必须安装好 jdk因为 jdk 是 Tomcat 运行的必要环境。
1.关闭防火墙将安装 Tomcat 所需软件包传到/opt目录下
jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gzsystemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
3.设置JDK环境变量
vim /etc/profile.d/java.shexport JAVA_HOME/usr/java/jdk1.8.0_201-amd64
export CLASSPATH.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH$JAVA_HOME/bin:$PATHsource /etc/profile.d/java.sh
java -version
export JAVA_HOME/usr/java/jdk1.8.0_201-amd64: 这个命令设置了一个名为JAVA_HOME的环境变量它指向Java JDK的安装路径。 这对于告诉系统和其他应用程序Java的安装位置非常重要。你需要将路径替换为你实际安装Java的路径。
export CLASSPATH.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar: 这个命令设置了一个名为CLASSPATH的环境变量它用于指定Java类的搜索路径。 在这个命令中.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar 表示当前目录. 以及Java工具库tools.jar和Java远程调试库dt.jar的路径。这些库通常包含一些Java开发所需的类。
export PATH$JAVA_HOME/bin:$PATH: 这个命令将Java可执行文件的路径添加到系统的PATH环境变量中。 这使得你可以在终端中直接运行Java工具而不需要输入完整的路径。 这将Java的bin目录添加到了PATH中使得java、javac等命令可以直接运行。
----------------------------------------------------------------------------------------------------------
CLASSPATH编译、运行Java程序时JRE会去该变量指定的路径中搜索所需的类.class文件。 dt.jar是关于运行环境的类库主要是可视化的 swing 的包。 tools.jar主要是一些jdk工具的类库包括javac、java、javapjdk自带的一个反编译工具、javadoc等。 JDK (Java Development Kit)JDK是Java开发工具包它是用于开发Java应用程序的软件包。 JDK包括了编译器javac、调试器、各种工具、Java标准类库Java API、以及Java文档等。 JDK是开发者用来创建、编译和运行Java应用程序的重要组件。
JRE (Java Runtime Environment)JRE是Java运行时环境它是用于执行Java应用程序的部分。 JRE包括了Java虚拟机JVM以及Java类库Java API这使得用户能够在计算机上运行已编译的Java程序 而不需要进行开发。JRE是终端用户需要安装的部分以便能够运行Java应用程序。
JVM (Java Virtual Machine)JVM是Java虚拟机它是Java应用程序在计算机上运行的核心组件。 JVM负责将编译后的Java字节码.class文件解释或编译成本地机器码以便计算机能够执行它。 JVM提供了内存管理、垃圾回收、线程管理等功能以确保Java程序在不同平台上具有相似的行为。
----------------------------------------------------------------------------------------------------------
首先使用文本工具编写java源代码比如 Hello.java
在命令行中输入命令javac Hello.java对源代码进行编译生成 class 字节码文件 编译完成后如果没有报错信息输入命令java Hello运行 class 字节码文件由 JVM 对字节码进行解释和运行 打印 “Hello World”。
vim Hello.javapublic class Hello { public static void main(String[] args){System.out.println(Hello world!);}
}javac Hello.java
java Hello#public: 这是一个访问修饰符表示类是公共的可以从其他地方访问。
#class: 关键字用于定义一个类。
#Hello: 这是类的名称这里是一个叫做 Hello 的类。
public static void main(String[] args){ public: 访问修饰符表示这个方法是公共的可以从其他地方访问。 static: 静态修饰符表示这个方法属于类而不是实例可以通过类名直接调用。 void: 这是方法的返回类型void 表示方法没有返回值。 main: 这是方法的名称是程序的入口点当程序运行时会从这里开始执行。 (String[] args): 这是方法的参数列表args 是一个字符串数组可以在命令行传递参数给程序。
System.out.println(Hello world!); System.out: System 是一个类out 是这个类的一个静态成员它代表标准输出流。 println: 这是输出方法的名称它会在控制台输出一行内容。 Hello world!: 这是要输出的内容是一个字符串。
4.安装启动Tomcat
#解压tomcat移动并改名
cd /opt
tar -xf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat ##
cd /usr/local/tomcat/bin/
./shutdown.sh
./startup.sh netstat -natp | grep 8080浏览器访问Tomcat的默认主页 http://192.168.220.112:8080
5.优化tomcat启动速度
第一次启动tomcat可能会发现 Tomcat 启动很慢默认情况下可能会需要几十秒可以修改jdk参数进行改。
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security--117行--修改
securerandom.sourcefile:/dev/urandom
---------------------------------------------------------------------------------------------------------- /dev/urandom是/dev/random的非阻塞版本/dev/random的 random pool 依赖于系统中断因此在系统的中断数不足时 /dev/random 设备会一直封锁尝试读取的进程就会进入等待状态直到系统的中断数充分够用 /dev/random设备可以保证数据的随机性。 /dev/urandom不依赖系统的中断也就不会造成进程忙等待 但是数据的随机性也不高所以该随机数的安全性理论上不高。如果应用对安全性要求很高那么应该使用/dev/random。 ---------------------------------------------------------------------------------------------------------- /usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh ll /usr/local/tomcat/
------主要目录说明---------------------------------------------------------------------------------------------- ●bin:存放启动和关闭Tomcat的脚本文件比较常用的是 catalina.sh、startup.sh、shutdown.sh三个文件 ●conf存放Tomcat 服务器的各种配置文件比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。 ① server.xml: Tomcat的主配置文件包含ServiceConnectorEngineRealmValve,Hosts主组件的相关配置信息; ② context.xml:所有host的默认配置信息; ③ tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息Tomcat自带的manager默认情况下会用到此文件在Tomcat中添加/删除用户为用户指|定角色等将通过编辑此文件实现; ④ web.xml:遵循Servlet规范标准的配置文件用于配置servlet并为所有的web应用程序提供包括MIME映射等默认配置信息; ●lib存放Tomcat运行需要的库文件的jar 包一般不作任何改动除非连接第三方服务比如 redis那就需要添加相对应的jar 包 ●logs存放 Tomcat 执行时的日志 ●temp存放 Tomcat 运行时产生的文件 ●webapps存放 Tomcat 默认的 Web 应用部署目录 ●workTomcat工作日录存放jsp编译后产生的class文件一般清除Tomcat缓存的时候会使用到 ●src:存放Tomcat 的源代码 ●doc:存放Tomcat文档 ----------------------------------------------------------------------------------------------------------
查看manager文件
vim /usr/local/tomcat/webapps/manager/META-INF/context.xmlContext antiResourceLockingfalse privilegedtrue Valve classNameorg.apache.catalina.valves.RemoteAddrValveallow.* / #允许所有主机访问。
在conf/tomcat-users.xml中添加账户密码
vim /usr/local/tomcat/conf/tomcat-users.xml#在21行后插入两行内容
role rolenamemanager-gui/
user usernametomcat passwordtomcat rolesmanager-gui/
重启一下tomcat
cd /usr/local/tomcat/bin/
./shutdown.sh
./startup.sh回到网页刷新一下会弹出登录窗口输入用户名和密码登录
http://192.168.220.112:8080/manager/html JVM优化
优化内存池
cd /usr/local/tomcat/bin/
vim catalina.sh---119行---下面插入
JAVA_OPTS$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads2 -XX:PermSize1024m -XX:MaxPermSize1024m -Djava.awt.headlesstrue -XX:DisableExplicitGC重启服务
./shutdown.sh
./startup.sh回到网页刷新可以看到JVM的内存容量增大Tomcat部署主机配置
创建两个网页文件
cd /usr/local/tomcat/webapps/
#创建两个目录
mkdir kgc benetcd kgc/
vim index.jspThis is kgc \! #写入一些内容cd ../benet/
vim index.jspThis is benet \! #写入一些内容修改配置文件
cd /usr/local/tomcat/conf/
备份一下配置文件再进行修改
cp server.xml server.xml.2023.08.10.bakvim server.xml
在原有的Host.../Host下面添加两组新的HostHost namewww.kgc.com appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalseContext docBase/usr/local/tomcat/webapps/kgc path reloadabletrue /
/Host
Host namewww.benet.com appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalseContext docBase/usr/local/tomcat/webapps/benet path reloadabletrue /
/Host
重启tomcat
cd /usr/local/tomcat/bin/
./shutdown.sh
./startup.sh
重定向IP地址
echo 192.168.220.112 www.kgc.com www.benet.com /etc/hosts
来到linux虚拟机打开浏览器
访问
www.kgc.com:8080
和
www.benet.com:8080
优化tomcat启动速度
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
#来到117行在random前加上u表示打开异步非阻塞
securerandom.sourcefile:/dev/urandomTomcat 优化——http-nio-8080
cd /usr/local/tomcat/conf/
vim server.xml--71行-- /前插入
minSpareThreads50
enableLookupsfalse
disableUploadTimeouttrue
acceptCount300
maxThreads500
processorCache500
URIEncodingUTF-8
compressionon
compressionMinSize2048
compressableMimeTypetext/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png重启tomcat
cd /usr/local/tomcat/bin/
./shutdown.sh
./startup.sh
回到浏览器
http://192.168.220.112:8080/manager/status;
可以看到http-nio-8080的连接数扩展成功