目录
一 、WEB技术简介
HTTP协议
基本介绍:
• HTTP:超文本传输协议,是从万维网服务器传输超文本到本地浏览器的传送协议
• HTTP是一种应用层协议,是基于TCP/IP通信协议来传送数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
• 协议:为了是数据在网络源头到达目的,网络通信的参与方必须遵守相同的规则,这套规则曾为协议,他的最终体现为在网络上传输的数据报的格式 ,通俗的来讲协议就是要保证网络通信的双方,能够互相对接,互相联系的暗号。
工作过程:
当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个HTTP请求,对应的服务器收到这个请求之后,经过计算就会返回一个HTTP响应,并且当我们访问一个网站的时候,可能涉及到不止一次的HTTP请求和相应的交互过程。
HTTP协议的特点:一发一收,一问一答。
B/S 结构
B/S架构,即浏览器/服务器架构,是一种网络架构模式,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户端只需要安装一个浏览器,通过Web服务器与数据库服务器进行数据交互。B/S架构利用了Web浏览器技术和Internet协议,实现了异构系统的连接和信息的共享。
B/S架构的分层:
第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。
第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。
第三层数据层:主要是接受客户端请求后独立进行各种运算。
前端三大核心技术简介
HTML
HTML(全称为“超文本标记语言”)是一种用于创建Web页面的标记语言。它是Web开发的基础,允许开发者定义页面的结构、内容和样式。HTML使用一些标记或“标签”来描述文本和媒体内容的结构和格式,这些标签可以指示网页浏览器如何显示内容,包括标题、段落、列表、超链接、图像、音频、视频等等。HTML还可以与其他Web技术(如CSS和JavaScript)结合使用,以实现更复杂和交互性的Web应用程序。
CSS
CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。
CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式。
JavaScript
JavaScript是一门跨平台、面向对象的脚本语言(不需要编译,直接解释运行即可),来控制网页的行为,它能使网页可交互。
二 、WEB框架
web资源和访问
Web 资源的类型
- 静态资源
定义:指内容不随时间变化而变化的资源。 例子:HTML 文件、CSS 样式表、JavaScript 文件、图像文件(如 JPEG、PNG)、音频文件、视频文件等。
特点:一旦创建,在没有人为修改的情况下,每次访问都返回相同的内容。
- 动态资源
定义:其内容是根据特定的请求动态生成的资源。
例子:由服务器端脚本(如 PHP、Python、Java 等语言编写的服务器端程序)生成的网页内容。 特点:每次请求可能会得到不同的响应,因为资源的生成取决于请求的参数、用户身份、数据库状态等多种因素。
Web 资源的访问方式
- 通过浏览器访问 :这是最常见的方式。用户在浏览器的地址栏中输入 URL(统一资源定位符),浏览器向服务器发送请求,服务器返回相应的 Web 资源,浏览器解析并显示这些资源。 例如,当你在浏览器中输入一个网站的地址,如 “www.example.com”,浏览器会向该网站的服务器发送请求,获取 HTML、CSS、JavaScript 等资源,并将其渲染成用户可以看到的网页。
- 通过 API 访问 :许多 Web 应用程序提供 API(应用程序编程接口),允许其他程序以编程的方式访问其资源。 例如,一个天气应用程序可能提供一个 API,让其他开发者可以获取特定地区的天气信息。开发者可以使用编程语言(如 Python、Java、JavaScript 等)发送 HTTP 请求到该 API 的端点,获取以 JSON 或 XML 格式返回的天气数据。
- 命令行工具访问 有些工具可以通过命令行界面访问 Web 资源。例如,使用 “curl” 命令可以发送 HTTP 请求并获取资源的内容。 比如,在命令行中输入 “curl https://www.example.com”,会返回该网站的 HTML 内容。
影响 Web 资源访问的因素
- 网络连接: 稳定的网络连接是确保顺利访问 Web 资源的基础。如果网络速度慢或不稳定,可能会导致资源加载缓慢或失败。 例如,在网络拥堵的情况下,下载大文件或访问视频流可能会变得非常缓慢。
- 服务器性能 :服务器的处理能力、内存、存储等性能因素会影响对 Web 资源的响应速度。 如果服务器负载过高,可能会导致响应时间延长,甚至无法响应请求。
- 安全性设置 :防火墙、代理服务器、HTTPS 加密等安全设置可能会限制对某些 Web 资源的访问。 例如,一些公司的网络可能会设置防火墙,阻止员工访问特定类型的网站。
- 资源权限 :Web 资源可能具有不同的访问权限设置。例如,某些网页可能需要用户登录才能访问,或者某些 API 可能需要授权才能使用。 如果没有正确的权限,用户将无法访问相应的资源。
后台应用架构
单体架构
微服务
三、tomacat的介绍
四、tomcat的部署
常见部署方式
- standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。
- 反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat LNMT:Linux + Nginx + MySQL + Tomcat ;LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat
- 前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更 适合 LNMT:Linux + Nginx + MySQL + Tomcat
- 多级代理 LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat
安装tomcat
安装3个主机,分别为nginx、tomcat-node1、tomcat-node2
在两台tomcat主机上安装java环境
yum install java-1.8.0-openjdk.x86_64 -y
[root@tomcat-node1 ~]# ll /etc/alternatives//jre_openjdk/
总用量 184
-rw-r--r-- 1 root root 1522 8月 30 2022 ASSEMBLY_EXCEPTION
drwxr-xr-x 2 root root 188 8月 22 09:19 bin
drwxr-xr-x 9 root root 4096 8月 22 09:19 lib
-rw-r--r-- 1 root root 19274 8月 30 2022 LICENSE
-rw-r--r-- 1 root root 157063 8月 30 2022 THIRD_PARTY_README
在两台tomcat主机上安装软件包并启动tomcat
[root@tomcat-node1 ~]# tar zxf apache-tomcat-9.0.93.tar.gz -C /usr/local/
[root@tomcat-node1 ~]# cd /usr/local/
[root@tomcat-node1 local]# ls
apache-tomcat-9.0.93 etc include lib64 sbin src
bin games lib libexec share
[root@tomcat-node1 local]# ln -s apache-tomcat-9.0.93 tomcat
[root@tomcat-node1 local]# cd tomcat/
[root@tomcat-node1 tomcat]# ls
bin CONTRIBUTING.md logs RELEASE-NOTES webapps
BUILDING.txt lib NOTICE RUNNING.txt work
conf LICENSE README.md temp
[root@tomcat-node1 tomcat]# cd bin/
[root@tomcat-node1 bin]# ls
bootstrap.jar configtest.sh shutdown.sh
catalina.bat daemon.sh startup.bat
catalina.sh digest.bat startup.sh
catalina-tasks.xml digest.sh tomcat-juli.jar
ciphers.bat makebase.bat tomcat-native.tar.gz
ciphers.sh makebase.sh tool-wrapper.bat
commons-daemon.jar setclasspath.bat tool-wrapper.sh
commons-daemon-native.tar.gz setclasspath.sh version.bat
configtest.bat shutdown.bat version.sh
[root@tomcat-node1 bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
网页测试:
生成tomcat的启动文件
[root@tomcat-node1 conf]# vim tomcat.conf
[root@tomcat-node1 conf]# vim /lib/systemd/system/tomcat.service
使/usr/bin/tomcat具备可执行的权限
[root@tomcat-node1 conf]# vim /usr/bin/tomcat
[root@tomcat-node1 conf]# chmod +x /usr/bin/tomcat
[root@tomcat-node1 conf]# tomcat start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@tomcat-node1 conf]# vim /lib/systemd/system/tomcat.service
生成启动文件
[root@tomcat-node1 conf]# useradd -s /sbin/nologin -M tomcat
[root@tomcat-node1 conf]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat-node1 conf]# systemctl daemon-reload
[root@tomcat-node1 conf]# systemctl enable --now tomcat
Created symlink /etc/systemd/system/multi-user.target.wants/tomcat.service → /usr/lib/systemd/system/tomcat.service.
tomcat的反向代理
[root@tomcat-node1 ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.93.tar.gz test.jsp
[root@tomcat-node1 ~]# cp test.jsp /usr/local/tomcat/webapps/ROOT/
[root@tomcat-node1 ~]# scp test,jsp root@172.25.254.20:/usr/local/tomcat/webapps/ROOT/
nginx代理配置
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx-node1 ~]# nginx -s reload
tomcat的负载均衡
使用源地址哈希算法
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx-node1 ~]# nginx -s reload
测试:在不同的浏览器测试www.zf.org/test.jsp
memcached的安装与启动
[root@tomcat-node1 ~]# dnf install memcached -y
相关参数
set、add、replace、get、delete
#前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法:
command <key> <flags> <expiration time> <bytes>
<value>
#参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节数
value 存储的值(始终位于第二行)
#增加key,过期时间为秒,bytes为存储数据的字节数
add key flags exptime bytes
[root@tomcat-node1 ~]# vim /etc/sysconfig/memcached
[root@tomcat-node1 ~]# systemctl start memcached.service
[root@tomcat-node1 ~]# netstat -antlupe | grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 977 77335 33552/memcached
tcp6 0 0 ::1:11211 :::* LISTEN 977 77336 33552/memcached
使用telnet测试
[root@tomcat-node2 ~]# yum install telnet -y
[root@tomcat-node2 ~]# telnet 172.25.254.20 11211
Trying 172.25.254.20...
Connected to 172.25.254.20.
Escape character is '^]'.
add key1 0 20 2
ll
STOREO
get key1
VALUE key1 0 2
ll
END
tomcat的session会话保持
2台tomcat主机传输相关软件包
[root@tomcat-node1 ~]# cd jar/
[root@tomcat-node1 jar]# ls
asm-5.2.jar memcached-session-manager-2.3.2.jar msm-kryo-serializer-2.3.2.jar spymemcached-2.12.3.jar
kryo-3.0.3.jar memcached-session-manager-tc9-2.3.2.jar objenesis-2.6.jar
kryo-serializers-0.45.jar minlog-1.3.1.jar reflectasm-1.11.9.jar
将spymemcached.jar、memcached-session-manage等相关的jar文件都放到Tomcat的lib目录下
[root@tomcat-node1 jar]# cp *.jar /usr/local/tomcat/lib/
[root@tomcat-node1 jar]# cd /usr/local/tomcat/lib/
[root@tomcat-node1 lib]# ls
annotations-api.jar jasper.jar servlet-api.jar tomcat-i18n-ko.jar
asm-5.2.jar jaspic-api.jar spymemcached-2.12.3.jar tomcat-i18n-pt-BR.jar
catalina-ant.jar jsp-api.jar tomcat-api.jar tomcat-i18n-ru.jar
catalina-ha.jar kryo-3.0.3.jar tomcat-coyote-ffm.jar tomcat-i18n-zh-CN.jar
catalina.jar kryo-serializers-0.45.jar tomcat-coyote.jar tomcat-jdbc.jar
catalina-ssi.jar memcached-session-manager-2.3.2.jar tomcat-dbcp.jar tomcat-jni.jar
catalina-storeconfig.jar memcached-session-manager-tc9-2.3.2.jar tomcat-i18n-cs.jar tomcat-util.jar
catalina-tribes.jar minlog-1.3.1.jar tomcat-i18n-de.jar tomcat-util-scan.jar
ecj-4.20.jar msm-kryo-serializer-2.3.2.jar tomcat-i18n-es.jar tomcat-websocket.jar
el-api.jar objenesis-2.6.jar tomcat-i18n-fr.jar websocket-api.jar
jasper-el.jar reflectasm-1.11.9.jar tomcat-i18n-ja.jar
修改tomcat配置 ,其可内容参考官方网址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
[root@tomcat-node1 lib]# vim /usr/local/tomcat/conf/context.xml
[root@tomcat-node1 lib]# systemctl restart tomcat
[root@tomcat-node2 lib]# vim /usr/local/tomcat/conf/context.xml
[root@tomcat-node2 lib]# systemctl restart tomcat
修改nginx配置
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
测试:
关闭172.25.254.10 的tomcat服务