1、apache(即http协议)
apache和httpd之间的关系,简单理解就是 apache2以上版本改称为httpd。
1.1 http相关概念
http 超文本传输协议
配置文件:vim /etc/httpd/conf/httpd.conf
互联网分为:局域网、城域网、广域网, 其中,因特网是最大的广域网。
1.2 访问浏览器的过程
在浏览器中输入www.baidu.com,会经过下面5个过程:
- 浏览器的职责
- DNS 域名解析
- TCP 连接:三次握手、四次挥手
- HTTP 请求
- 浏览器的渲染原理
1.3 http协议通信过程
客户端向服务端发出请求,需要192.168.91.100/a.jpg文件,实际浏览的文件夹是:
| 软件名 | 路径 |
|---|---|
| httpd | /var/www/html/a.jpg |
| nginx | /usr/share/nginx/html/a.jpg |
处理请求的顺序: 网卡 —> 内核 —> 程序
程序在用户空间,用户空间 和 内核空间 都在内存里面
小拓展:
1、客户打开网页,如何处理?
- 首先看状态码,状态码的信息比较直接
- 再查看日志,分析报错信息
2、/etc/mime.types 在里面的就是查看;里面没有的 就是下载
1.4 URL⭐⭐⭐
URL 与 URN,同属于URI(小i)统一资源标识。
-
URN 统一资源命名符
描述了资源的名字
-
URL 统一资源定位符⭐⭐⭐
用于描述某服务器某特定资源位置,资源的具体位置
1.4.1 URL完整格式:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
拆分:
scheme:方案,访问服务器以获取资源时要使用哪种协议⭐
user:用户,某些方案访问资源时需要的用户名
password:密码,用户对应的密码,中间用:分隔
Host:主机,资源宿主服务器的主机名或IP地址⭐
port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号⭐
path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔⭐
params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔
1.4.2 URL基本格式:⭐⭐⭐
协议://主机名:端口/路径
scheme host port path
1.5 网站访问量
- pv 访问量, 即Page View, 页面浏览量或点击量
- UV 独立访客
1.6 http的七个过程⭐⭐⭐
一次完整的http请求处理过程:
- 建立连接:三次握手
- 同意连接
- 处理请求:内核根据协议和端口号,找到相应的程序,程序根据自己的配置文件,分析处理客户的请求。
- 访问资源:分析出客户需要的资源后,再告诉内核,内核去找资源交给程序。
- 构建响应报文:程序拿到资源后,会构建响应报文。
- 发送响应报文:报文准备好后,会交给内核,内核交给网卡,网卡转发给客户端。
- 记录日志
小拓展:I/O结构是 input、output
1.7 http工作机制
1.7.1 串行和并行
- 串行:1对1 每次只处理一个问题,效率慢,基本不用。
- 并行:一起,对单个客户端,多次请求的优化,弊端是存在时延,如果第50个没有处理完,就不会开启第51个。
1.7.2 处理高并发的四个基本模型:
- 单线程I/O结构:串行,启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
- 多线程I/O结构:串行,并行启动多个进程,每个进程响应一个连接请求复用的I/O结构
- 复用I/O结构:启动一个进程,同时响应N个连接请求
- 复用的多线程I/O结构:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求
用的最多是第2个和第3个
1.7.3 提高HTTP连接性能:
- 并行连接:单个客户端多次请求,通过多条TCP连接发起并发的HTTP请求
- 持久连接:一次连接 多次下载,keep-alive,重用TCP连接,以消除连接和关闭的时延,以事务个数和时间来决定是否关闭连接
- 管道化连接:通过共享TCP连接,发起并发的HTTP请求
- 复用的连接:交替传送请求和响应报文
使用持久连接来进行优化,持久连接就是一次连接(三次握手)多次下载。持久连接 要比 并行效果好,处理效率更高。
小拓展:
1、结束持久连接的条件:
- 时间限制
- 下载资源个数的限制
2、一个进程里面最少要有一个线程。
3、改完配置文件为什么要重启?
因为修改是改在磁盘上的,内存并不知道进行了修改,重启是为了让磁盘和内存一致。
1.8 http协议的版本及区别⭐⭐⭐
http发明的初衷是共享文件
- http 0.9 :只支持下载,方法只有get(下载),不支持长连接
- http 1.0 :加入了多种方法,不止有get(下载)、post(上传)等,不支持长连接
- http 1.1:加入了长连接,(长连接也就是持久连接)
http1.1目前是市场主流
1.9 http 报文
报文主要分为 请求报文 和 回复报文
1.9.1 http请求报文
首部字段 主要是一些提示信息、注释
方法:
| 方法 | 含义 |
|---|---|
| GET | 获取资源 当前网络请求中,绝大部分使用的是 GET方法 |
| HEAD | 获取报文首部,主要用于确认 URL 的有效性以及资源更新的日期时间等 |
| POST | 传输实体主体 (比如传输 用户名密码) |
| PUT | 上传文件(比如写博客) |
| PATCH | 对资源进行部分修改 |
| DELETE | 删除文件 |
| OPTIONS | 查询支持的方法(查看服务端可以支持哪些方法) |
| CONNECT | 要求在与代理服务器通信时建立隧道(类似加密) |
| TRACE | 追踪路径 |
小实验:
实验目的:模拟http请求的过程
关闭防火墙
下载telnet
telnet 192.168.125.100 80 //访问80端口
get /index.html HTTP/1.1 //通过http1.1版本下载文件
//方法 URL 版本
HOST:1.1.1.1 //首部字段,随便设,自己定义
1.9.2 响应报文(回复报文)
[root@7-3 ~]# curl -I 192.168.125.130
HTTP/1.1 200 OK
//版本 状态码 短语
Date: Mon, 27 May 2024 12:03:14 GMT //下面这些都是首部字段
Server: Apache/2.4.6 (CentOS)
Last-Modified: Thu, 23 May 2024 15:28:25 GMT
ETag: "8-61920b3ba079e"
Accept-Ranges: bytes
Content-Length: 8
Content-Type: text/html; charset=UTF-8
1.10 http 状态码⭐⭐⭐⭐⭐
1xx(信息类):表示接收到请求并且继续处理
2xx(响应成功):表示动作被成功接收、理解和接受
3xx(重定向类):为了完成指定的动作,必须接受进一步处理
4xx(客户端错误类):请求包含错误语法或不能正确执行
5xx(服务端错误类):服务器不能正确执行一个正确的请求
http协议常用的状态码
200: 成功,请求数据通过响应报文的entity-body部分发送;OK
301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
302: 响应报文Location指明资源临时新位置 Moved Temporarily
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
307: 浏览器内部重定向
401: 需要输入账号和密码认证方能访问资源;Unauthorized
403: 请求被禁止;Forbidden
404: 服务器无法找到客户端请求的资源;Not Found
500: 服务器内部错误;Internal Server Error,比如:cgi程序没有执行权限
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
503: 服务不可用,临时服务器维护或过载,服务器无法处理请求,比如:php服务停止,无法处理php程序
504: 网关超时
2、httpd安装组成
http基于C/S架构:
服务名:apache
安装软件名:httpd
2.1 常见http服务器程序
- httpd apache,存在C10K(10K connections)问题
- nginx 解决C10K问题 httpd
- tomcat .jsp 应用程序服务器
国外用apache、中国用nginx
2.2 apache简介
2.2.1 apeche功能
-
提供web服务(提供网页服务)
-
多个虚拟主机,用一台物理服务器,搭建多个网站
-
CGI:Common Gateway interface,通用网关接口,支持动态程序。用CGI接口协议可以进行转发。
tomcat擅长处理 动态资源
nginx 擅长处理 静态资源
-
反向代理:客户端访问代理,代理将请求转发给服务端。
反向代理,代理的是 服务端;
正向代理,代理的是 客户端
-
负载均衡
2.2.2 apache特性⭐
- 高度模块化:core + modules
- DSO:Dynamic Shared Object 动态加载/卸载
- MPM:multi-processing module 多路处理模块
2.3 MPM 三个工作模式及特点⭐⭐⭐
MPM 多路复用技术,处理高并发(同一时间多个用户同时访问)
长连接:处理 单个用户多次访问。
2.3.1 prefork
prefork: 多进程I/O模型,每个进程响应一个请求
系统初始时,预生成多个空闲进程,等待请求。
进程+子进程:
- 优点:稳定,服务周到
- 缺点:慢,占用资源,不适用于高并发场景
2.3.2 worker
worker:复用的多进程I/O模型,多进程多线程,一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n
- 优点:相比prefork 占用的内存较少,可以同时处理更多的请求
- 缺点:占用资源,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。
基本不用!
2.3.3 event
事件驱动模型,进程+子进程+线程
修改配置:
vim 00-mpm.conf
//修改用prefork 还是用event
- 优点:单线程响应多请求,占据更少的内存,高并发下表现更优秀
- 缺点:没有线程安全控制 小拓展:怎么查看是哪种工作模式?
pstree -p |grep httpd
花括号代表 线程
2.4 httpd安装和相关文件
2.4.1 httpd相关文件
| 配置文件 | 路径 |
|---|---|
| 主配置文件 | /etc/httpd/conf/httpd.conf |
| 子配置文件 | /etc/httpd/conf.d/*.conf |
| 模块加载的配置文件 | /etc/httpd/conf.d/conf.modules.d/ |
2.4.2 编译安装
#编译安装
./configure --prefix=$install_dir --sysconfdir=/etc/httpd --enable-ssl
make -j`lscpu | grep "^CPU(s)" | awk '{print $NF}'` && make install
一定要分清楚,是编译安装 还是yum安装
3、http常见配置
注意: 修改配置文件前,要先备份⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
优化:
- 子配置文件
- 隐藏版本号
- 优化长连接
格式:
关键字(命令) 选项
<关键字>开始
</关键字>结束 //结束要加斜杠
3.1 主配置文件
使用yum安装的httpd,对应配置文件位置:/etc/httpd/conf/httpd.conf
统计多少行配置文件:
wc -l /etc/httpd/conf/httpd.conf
353 /etc/httpd/conf/httpd.conf
统计不包括注释的配置:
grep -v "^#" /etc/httpd/conf/httpd.conf
3.2 httpd -t 检查格式命令
apache 最有用的选项:
httpd -t //检查格式的命令
3.3 监听端口
通式:Listen [IP:]端口号 1、如果省略IP,则默认为本机所有IP 2、Listen指令至少一个,可重复出现多次
vim /etc/httpd/conf/httpd.conf
listen 80 //监听80端口
systemctl restart httpd //改完配置,重启服务!!!
#修改子配置文件
cd /etc/httpd/conf.d
vim test.conf
listen 9527
systemctl restart httpd
#其他配置文件
grep -i include /etc/httpd/conf/httpd.conf //建议用include
IncludeOptional conf.d/*.conf //建议放在最后
说明:
- Include和IncludeOptional功能相同,都可以包括其它配置文件
- 但是当无匹配文件时,include会报错,IncludeOptional会忽略错误
3.4 隐藏服务器的版本信息(真正的调优)
[root@7-3 ~]# curl -I 192.168.125.130
HTTP/1.1 200 OK
Date: Mon, 27 May 2024 15:29:19 GMT
Server: Apache/2.4.6 (CentOS) //版本号会显示出来
Last-Modified: Thu, 23 May 2024 15:28:25 GMT
ETag: "8-61920b3ba079e"
Accept-Ranges: bytes
Content-Length: 8
Content-Type: text/html; charset=UTF-8
[root@7-3 ~]# vim /etc/httpd/conf/httpd.conf //编辑配置文件
servertokens prod //最下面加上规则配置,为什么要在最后面加,因为谁写在最后谁生效
[root@7-3 ~]# systemctl restart httpd //重启服务
3.5 持久连接
断开条件:
- 时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级
- 请求数量: 请求数达到指定值,也会断开
KeepAlive On|Off //打开、关闭持久连接
KeepAliveTimeout 15 #时间,连接持续15s,可以以ms为单位,默认值为5s
MaxKeepAliveRequests 500 #数量,持久连接最大接收的请求数,默认值100
3.6 DSO
Dynamic Shared Object,加载动态模块配置,不需重启即生效。
动态模块所在路径: /usr/lib64/httpd/modules/
查看静态编译的模块: httpd -l
查看动态装载的模块: httpd -M
3.7 prefork模式相关的配置
StartServers 100 //一开始开启100个进程,默认开启是5个
MinSpareServers 50 //如果一直空闲需要最少预留 50个进程
MaxSpareServers 80 //如果空闲,最大预留80个
ServerLimit 2560 #最多进程数,最大值 20000
MaxRequestWorkers 2560 #最大的并发连接数,默认256
MaxConnectionsPerChild 4000 #子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个
请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)
MaxRequestsPerChild 4000 #从 httpd.2.3.9开始被MaxConnectionsPerChild代替
3.8 worker、event 模式相关的配置
ServerLimit 16 #最多worker进程数 Upper limit on configurable number of
processes
StartServers 10 #Number of child server processes created at startup
MaxRequestWorkers 150 #Maximum number of connections that will be processed
simultaneously
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25 #Number of threads created by each child process
3.9 修改主站点(实验一)⭐⭐
- 安装主目录
ServerRoot "/etc/httpd" //ServerRoot是主站点,作用是存放日志、配置文件、模块等
- 文档的主目录
DocumentRoot "/var/www/html"
//拆分:
DocumentRoot:主站点文件存放的路径
默认主页面:/var/www/html,可以自己定义!
小拓展:URL后面的根的位置,就是DocumentRoot 后设置的路径。
- 访问错误的托底设置
vim /etc/httpd/conf.d/welcome.conf
<LocationMatch "^/+$">
Options -Indexes
ErrorDocument 403 /.noindex.html //托底设置:该配置的意思是如果报错,就默认访问/.noindex.html文件,这样是为了减少输错网址造成客户的流失
</LocationMatch>
- 授权⭐⭐
\color{green}{想访问,先授权!}
实验一:修改主站点
`7-1:`
[root@7-1 ~]# vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80 //开启95行,不然会提示错误
# DocumentRoot "/var/www/html" //注释119行,做之前先备份
###########修改主站点##########
DocumentRoot "/opt" //将主站点 修改为/opt
###########修改完,再授权!##########
<Directory "/opt"> //给/opt文件夹授权
Require all granted //全部可以访问
</Directory>
[root@7-1 ~]# systemctl restart httpd
[root@7-1 ~]# httpd -t //检查
Syntax OK
[root@7-1 ~]# cd /opt
[root@7-1 opt]# echo "abc" > index.html //
`7-3:`
[root@7-3 ~]# curl 192.168.125.100
abc
3.10 别名alias(实验二)⭐⭐⭐
类似于置换,作用是:脱离主站点,重新指定路径。
别名格式:
alias /URL/ /PATH/
拆解:
url:路径
path:具体路径
例子:
`例1:`
alias /123 /opt/456 //访问192.168.125.100/123 实际上相当于访问192.168.125.100/opt/456
拆解:
/123:实际是192.168.125.100/123
/opt/456:第一个/是真正的根
注意:/123可以是虚拟的,可以不真实存在。
实验二:定义别名
`7-1:`
[root@7-1 ~]# vim /etc/httpd/conf/httpd.conf
#############定义别名##############
alias /admin /opt/study //访问192.168.125.100/admin,等于访问/opt/study目录下的文件
#############授权################
<Directory "/opt">
Require all granted
</Directory>
[root@7-1 ~]# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::f3ee:389d:866c:6d14. Set the 'ServerName' directive globally to suppress this message
Syntax OK //正常,开启95行,就不会提示该类错误
[root@7-1 ~]# systemctl restart httpd
[root@7-1 ~]# mkdir /opt/study
[root@7-1 ~]# cd /opt/study
[root@7-1 study]# echo "xyz" >index.html //这一步,我的理解是在路径下新建一个测试页面,只有页面里有内容,才能测试出来效果。
`7-3`
验证方法一:
[root@7-3 ~]# curl 192.168.125.100/admin/
xyz
验证方法二:
在浏览器中访问验证!!!
3.11 定义站点默认主页面文件 index.html
当我们访问服务器时 省略了最后的文件, 默认自动会加上 index.html,这个是可以修改的!!!
[root@7-3 ~]# grep "index.html" /etc/httpd/conf/httpd.conf
DirectoryIndex index.html //默认定义的文件名,也可以自定义。
如何自定义:
[root@localhost blogdir]# vim /etc/httpd/conf/httpd.conf
164行: DirectoryIndex index.php index.html //先访问index.php, 再访问index.html,如果都没有,就会报错。
[root@localhost blogdir]# systemctl restart httpd
小拓展:访问服务器的时候后面基本要加文件,因为你访问服务器,肯定是要访问服务器里的东西。
正常格式: 192.168.125.100/文件
#如果不加文件,那么默认访问的就是:
192.168.125.100/index.html //默认访问
3.12 虚拟主机⭐⭐⭐⭐⭐
用一台机器,搭建出多台机器的效果。只有一条机器,但是让用户认为我有多台机器。
网站的唯一标识:
- IP相同,但端口不同
- IP不同,但端口均为默认端口
- FQDN不同, IP和端口都相同
多虚拟主机有三种实现方案:
- 基于ip:为每个虚拟主机准备至少一个ip地址
- 基于port:为每个虚拟主机使用至少一个独立的port
- 基于FQDN:为每个虚拟主机使用至少一个FQDN,请求报文中首部 Host:www.kgc.com
小拓展:使用子配置文件:
vim /etc/httpd/conf.d/*.conf
3.12.1 基于端口
apache默认的监听端口是80
实验3-1:基于端口
cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/ //复制模板文件
mv /etc/httpd/conf.d/httpd-vhosts.conf /etc/httpd/conf.d/vhosts.conf //改名,名字太长了
vim /etc/httpd/conf.d/vhosts.conf //编辑,修改配置
<VirtualHost 192.168.125.100:80>
DocumentRoot "/opt/cxk"
ServerName www.cxk.com
ErrorLog "/opt/cxk/log/error-cxk.log"
CustomLog "/opt/cxk/log/access-cxk.log" common
</VirtualHost>
<VirtualHost 192.168.125.100:9527>
DocumentRoot "/opt/wyf"
ServerName www.wyf.com
ErrorLog "/opt/wyf/log/error-wyf.log"
CustomLog "/opt/wyf/log/access-wyf.log" common //最后的common一定不能少!!
</VirtualHost>
<Directory "/opt"> //设置主站点
Require all granted //授权
</Directory>
listen 9527 //监听端口,是为了后面开启与客户端的通信,因为这个实验是基于端口,下面两个小实验就可以不用加监听端口!
cd /opt
mkdir -p {cxk,wyf}/log //递归建立主站点,及主站点日志的文件夹
echo cxk > cxk/index.html
echo wyf > wyf/index.html
systemctl restart httpd
7-3:
curl 192.168.125.100
cxk
curl 192.168.125.100:9527
wyf
3.12.2 基于ip地址
实验3-2:基于ip地址
vim /etc/httpd/conf.d/vhosts.conf //编辑
<VirtualHost 192.168.125.100>
DocumentRoot "/opt/cxk"
ServerName www.cxk.com
ErrorLog "/opt/cxk/log/error-cxk.log"
CustomLog "/opt/cxk/log/access-cxk.log" common
</VirtualHost>
<VirtualHost 192.168.125.111> //新加一个ip地址
DocumentRoot "/opt/wyf"
ServerName www.wyf.com
ErrorLog "/opt/wyf/log/error-wyf.log"
CustomLog "/opt/wyf/log/access-wyf.log" common
</VirtualHost>
<Directory "/opt">
Require all granted //授权
</Directory>
listen 9527
ifconfig ens33:0 192.168.125.111/24 //因为新加了一个ip地址,所以也要加一块网卡。
systemctl restart httpd
7-3:
curl 192.168.125.100
cxk
curl 192.168.125.111
wyf
3.12.3 基于域名
实验3-3:基于域名
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 192.168.125.100>
DocumentRoot "/opt/cxk"
ServerName www.cxk.com //设置域名
ErrorLog "/opt/cxk/log/error-cxk.log"
CustomLog "/opt/cxk/log/access-cxk.log" common
</VirtualHost>
<VirtualHost 192.168.125.100>
DocumentRoot "/opt/wyf"
ServerName www.wyf.com //设置域名
ErrorLog "/opt/wyf/log/error-wyf.log"
CustomLog "/opt/wyf/log/access-wyf.log" common
</VirtualHost>
<Directory "/opt">
Require all granted
</Directory>
listen 9527
systemctl restart httpd
对面服务器设置:
vim /etc/hosts //DNS域名解析
192.168.125.100 www.cxk.com www.wyf.com //可以加在最后面
curl www.cxk.com
cxk
curl www.wyf.com
wyf
3.13 白名单和黑名单
apache 默认是黑名单
3.13.1 白名单
<Directory "/data">
<RequireAny>
Require all denied //拒绝所有
require ip 192.168.125.10 //但是允许192.168.125.10访问我
</RequireAny>
</Directory>
3.13.2 黑名单
<Directory "/data">
<RequireAll>
Require all granted //允许所有
require not ip 192.168.125.10 //但是,不允许192.168.125.10访问我
</RequireAll>
</Directory>
// 配置读取顺序是:先读里面的(局部),再读外面的,以外面的为主,所以外面的优先级高!当里外设置冲突时,以外面的为主。
3.14 访问日志
httpd 有两种日志类型
- 访问日志 access
- 错误日志 error
日志存放位置:/var/log/httpd/access_log
#########日志语法格式:###########
LogFormat "%h %l %u [%{%F %T}t] "%r" %>s %b "%{Referer}i" "%{User Agent}i"" testlog
拆解:
%h #客户端IP地址
%l #远程用户,启用mod_ident才有效,通常为减号"-”
%u #验证(basic,digest)远程用户,非登录访问时,为一个减号"-”
%t #服务器收到请求时的时间
%r #First line of request,即表示请求报文的首行;记录了此次请求的"方法”,"URL”以及协议版本
%>s #响应状态码
%b #响应报文的大小,单位是字节;不包括响应报文http首部
%{Referer}i #请求报文中首部"referer”的值;即从哪个页面中的超链接跳转至当前页面的
%{User-Agent}i #请求报文中首部"User-Agent”的值;即发出请求的应用程序
%{VARNAME}i #The contents of VARNAME: header line(s) in the request sent to the server
示例:
192.168.91.101 - - [28/May/2024:11:51:27 +0800] "GET / HTTP/1.1" 200 5 "_" "cur1/7.29.0" //注意:" " 反斜杠代表转义
分解:
%h 对应:192.168.91.101 //客户端ip 谁来访问了我
%l 对应:-
%u 对应:- //显示用户名密码,虚拟用户验证时使用
%t 对应:[28/May/2024:11:51:27 +0800] //时间
%r 对应:请求报文的第一行
%b 对应:报文的大小
%{Referer}i //从哪里过来的,比如:如果直接访问京东,显示的就是京东;如果是从百度跳转到京东,显示的就是百度。
%{User-Agent}i //浏览器版本号
3.15 基于用户的访问控制
访问的时候,需要输用户名和登录密码。
httpd-tools软件,是web网页呈现的客户端工具。
/usr/bin/ab 压力测试工具
/usr/bin/htpasswd 生成用户和密码,密码是加密的!
| htpasswd选项 | 含义 |
|---|---|
| -c | 新建,自动创建文件,仅应该在文件不存在时使用 |
| -b | 非交互方式创建用户,命令后面可以接密码 |
示例:
[root@7-1 data]# htpasswd -htpasswd -c /data/.httpuser wxj //新建用户wxj
New password:
Re-type new password:
Adding password for user wxj
[root@7-1 data]# cat .httpuser
wxj:$apr1$Whn26bjd$0NpV7OeOWDSCjp6DpvZZl1 //密码是加密的
3.16 状态页
可以看到服务器状态
[root@localhost data]#httpd -M |grep status
status_module (shared)
打开配置文件
##############修改配置文件#########
vim /etc/httpd/conf/httpd.conf
<location "/status">
sethandler server-status
</location>
systemctl restart httpd