Linux的中间件

我们先补充点关于awk的内容

awk的用法其实很广。 $0 表示整条记录

变量:

NF 一行中有多少个字段(表示字段数)

NR : 代表当前记录的序号,从1开始计数。每读取一条记录,NR的值就会自动增加1。(一行就是一条记录)

FS:代表输入字段分隔符(Field Separator),用于指定输入数据的字段之间的分隔符。默认情况下,FS的值是空白字符,包括空格和制表符。可以通过设置FS变量来改变字段分隔符,例如FS="|"表示使用竖线作为分隔符。

RS:代表记录分隔符(Record Separator),用于指定输入数据时记录之间的分隔符。默认情况下,RS的值是换行符 。

OFS :代表输出字段分隔符(Output Field Separator),用于指定输出数据时字段之间的分隔符。默认情况下,OFS的值是空格。

ORS:代表输出记录分隔符(Output Record Separator),用于指定输出数据时记录之间的分隔符。默认情况下,ORS的值是换行符 。

$1~/正则表达式/ 第一段

[ ] 里面中的任意一个

awk 模块 BEGIN END

BEGIN 在读取文件之前,定义动作,定义变量

END:在读取文件且处理完成之后,输出一个结束

案例:

awk '{addr[$1]+=1}END{for(var in addr) print "地址",var,"次数是",addr[var]}' log1 //统计IP登录了几次 (/var/log/httpd)

awk -F "(from )|( port)" '/from.*port/{addr[$2]+=1}END{for(var in addr) print "地址",var,"次.是",addr[var]}' slog 统计IP登录了几次 (secure)

awk -F "[: ]" '$5>=16&&$5<=23{addr[$1]+=1}END{for(var in addr) print "地址",var,"出现次数",addr[var]}' log1 //统计规定时间段内登陆了几次
案例:服务器巡检

#!/bin/bash

check_mem()

{

left_mem=`free -m |awk -F "[ ]+" 'NR==2{print $NF}'`

total_mem=`free -m | awk -F "[ ]+" 'NR==2{print $2}'`

percent_left=`echo "scale=2; left_mem/total_mem*100" | bc`

echo "$percent_left%"

}

check_mem

check_disk()

{

avail_disk=`df -h | awk -F "[ ]+" '/centos-root/{print $4}'`

percent_disk=`df -h | awk -F "[ ]+" '/centos-root/{print $5}'`

pos_disk=`df -h | awk -F "[ ]+" '/centos-root/{print $6}'`

echo "磁盘位置:$pos_disk"

echo "可用空间大小:$avail_disk"

echo "磁盘空闲率:$percent_disk"

}

check_disk

check_cpu()

{

cpu_load=`top -n1 | awk -F "load average: " 'NR==1{print $2}'`

echo "CPU负载是: $cpu_load"

}

check_cpu

一、中间件

Web中间件是一类位于Web浏览器和Web服务器之间的软件,它们用于处理Web应用程序中的请求和响应

1、web的功能和特色

1、请求处理:web中间件负责接收来自用户的请求,并根据请求的类型和内容,将其转发到适当的服务器或应用程序进行处理

2、响应管理:响应管理:处理后的响应也会通过Web中间件返回给用户,中间件在此过程中可能会对响应数据进行加工或优化,以提高性能或增加安全性。

3、功能扩展:Web中间件可以提供额外的功能,如会话管理、安全验证、负载均衡、缓存等,这些功能对于提升Web应用的性能和用户体验至关重要。

4、解耦作用:它有助于将具体的业务逻辑与底层的技术细节分离,使得开发人员可以专注于业务逻辑的实现,而不必关心底层的网络通信、数据存储等细节。

5、系统集成:中间件提供了一种机制,使得不同来源、不同类型的应用程序可以相互通信和集成,共享资源和服务。

6、分布式系统支持:在分布式系统中,中间件起到了关键的作用,它帮助各个分布在不同地点的服务和应用协同工作,实现数据的一致性和系统的高可用性。

7、常见的web中间件:包括代理服务器、负载均衡器、缓存服务器等,而像Tomcat、Weblogic、Jboss等也都属于Web中间件的范畴。(apache/ngingx/iis 是windows专用)
http协议:超文本传输协议

作用:让用户通过浏览器请求到服务器并接受客户端返回的数据,最后在浏览器中显示出来

2、http请求报文格式

第一行:请求行

请求方法(GET POST PUT等) 请求url 清秀协议版本号使用的http协议(0.9、1.0、1.1)

第二行:请求头

HOST 主机头(指定网站域名或IP) Connection:close 当前客户端的连接状态 User-Agent :UA头,客户端访问网站时候使用的浏览器类型 Referer :表示当前这个请求是直接访问还是从其他界面跳转来的

第三行:空白行开始)请求体

3、http响应报文格式

第一行:响应行 响应http版本号 http状态码 状态码对应的消息短语

第二行:响应头

第三行:空白行开始下面)响应体

4、http状态码

1xx :提示信息

2xx :表示客户端请求成功

200

201

3xx: 客户端本次请求被重定向

301 永久重定向

302 临时重定向

304 表示访问到的页面来自浏览器的缓存

4xx:客户端访问失败(客户端原因)

404 not found 页面不存在

403 forbidden 表示无权访问 或者是默认首页不存在

5xx:客户端访问失败(服务器端原因)
在浏览器的开发者工具我们可以看到三种首部

请求头部 Request

响应头部 Response

通用首部 General
http协协议的格式:http://域名:端口号/路径/文件名

5、apache

linux中内置apache

6、安装apache

第一步:配置yum源

第二步:安装apache yum install httpd

第三步:启动apache systemctl start httpd systemctl enable httpd

第四步:检查apache的状态 systemctl status httod

第五步:访问apache

apache的作用就是开启一个端口,等待客户端通过浏览器访问

ip地址+默认端口80

7、测试之前,建议关闭防火墙和selinux

#关闭防火墙

systemctl disable firewalld

systemctl stop firewalld
排查故障

第一步:检查网络是否通常【ping】

第二步:检查服务是否开启【状态】

第三步:测试是否可以访问服务的端口【telnet】

第四步:用其他主机/ip测试是否可以访问

8、补充:检查哪个进程占用了80端口

lsof -i :80

ss -tunlp | grep 80

9、相关文件

配置文件:httpd.conf

日志文件:access.log 访问日志 error.log 错误日志
如果是yum安装的apache

日志文件的位置:/var/log/httpd

配置文件的位置:/etc/httpd/conf

如果用编译安装的apache

日志文件的位置:安装位置下/logs/

配置文件的位置:安装位置下/conf/

10、 配置文件中几个关键字段

ServerName:网站的域名

DocumentRoot:指定网站的根目录

Listen:指定监听的端口号

DirectoryIndex:默认首页

* 这些都可以修改,注意别改错了,修改完之后要重启httpd让配置生效

11、虚拟主机

虚拟机主机就是用一个apache发布多个网站

12、如何发布多个网站
第一步:进入到/etc/httpd/conf.d 目录
第二步:创建一个名为xxx.conf 的文件

vim vhost.conf

第三步:写入文件内容

<VirtualHost *:80> # 定义一个虚拟主机,监听80端口

ServerAdmin 1374902537@qq.com # 设置管理员邮箱

DocumentRoot "/var/www/html/web1" # 设置网站根目录

ServerName www.web1.com # 设置服务器名称

DirectoryIndex index.html aaa.html # 设置默认访问的文件名

<Directory "/var/www/html/web1"> # 设置目录配置

Options Indexes FollowSymLinks # 设置目录选项,允许索引和跟随符号链接

AllowOverride None # 禁止覆盖配置文件

Require all granted # 允许所有用户访问

</directory>

</VirtualHost>

<VirtualHost *:80>

ServerAdmin 1374902537@qq.com

DocumentRoot "/var/www/html/web2"

ServerName www.web2.com

DirectoryIndex index.html bbb.html

<Directory "/var/www/html/web2">

Options Indexes FollowSymLinks

AllowOverride None

Require all granted

</directory>

</VirtualHost>
第四步:重启apache服务

systemctl restart httpd

如果出现报错的话,很大可能就是你的配置文件没写对

像这样,你可以根据他的提示来判断你那里的配置文件写错了

第五步:切换目录到/var/www/html网站跟目录下

cd /va/www/html

第六步:创建刚才的网站目录

mkdir web{1..2}

然后在web1中写入默认首页的内容

echo "111" > index.html

在web2中写入默认首页的内容

echo "222" > index.html

第七步:找到你windows下的hosts文件 它在C:\Windows\System32\drivers\etc

在里面写入你linux的ip 域名

192.168.1.xxx www.web1.com

192.168.1.xxx www.web2.com

第八步:用域名访问一下验证是否成功
注意:当你配置了多个网站的话,我们去访问apache的网站根目录的默认首页时,它会显示我们配置的第一个网站的默认首页
相关推荐
Kika写代码7 分钟前
【微信小程序】页面跳转基础 | 我的咖啡店-综合实训
服务器·微信小程序·小程序
PieroPc8 分钟前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
Aileen_0v011 分钟前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
州周1 小时前
Ftp目录整个下载
linux·服务器·数据库
Jackey_Song_Odd1 小时前
Ubuntu 24.04.1 解决部分中文字符(门、径)显示错误的问题
linux·ubuntu
kaixin_learn_qt_ing1 小时前
Linux export命令
linux
余额不足121381 小时前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
冷曦_sole1 小时前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒1 小时前
Linux(二)_清理空间
linux·运维·服务器
花鱼白羊1 小时前
TCP Vegas拥塞控制算法——baseRtt 和 minRtt的区别
服务器·网络协议·tcp/ip