目录
一、Apache详解
1.1 简介
1.2 Apache功能
1.3 apache特点
1.4 三种工作模式
二、LAMP简介
2.1 LAMP平台概述
2.2 构建LAMP平台顺序
2.3 编译安装的优点
2.4 各组件的主要作用
三、wget命令
四、curl命令
五、压力测试工具
一、Apache详解
1.1 简介
- Apache 是一款免费开源的 Web 服务器软件,用来处理 HTTP 请求和相应的网页请求
- Apache 由 Apache 软件基金会开发和维护。
- 在互联网上,Apache 是最广泛使用的 Web 服务器软件之一。它支持 多种操作系统,并且可以与多种编程语言进行集成,例如 PHP、Python、Perl 等。
- 它不仅可以用于静态网站,还可以支持动态内容的生成,比如使用 CGI 脚本来动态生成网页内容。
- "Apache"并不是"A Patchy Server"的缩写。它实际上来自于它最初的名称:"A patchy server",但是这 个名称仅仅是为了表示它是一个由许多补丁和代码组合而成的服务器。后来,这个名称被简化 为"Apache",它被正式采用为Apache软件基金会的名称。"Apache"不再代表"A patchy server"。
- apache官网: www.apache.org
- 软件基金会 ASF:apache software foundation FSF:Free Software Foundation
1.2 Apache功能
- 提供http协议服务 web
- 多个虚拟主机:IP、Port、FQDN 用一台 物理服务器搭建多个网站 百度 jd 淘宝
- CGI:Common Gateway Interface,通用网关接口,支持动态程序
- 反向代理: 代理的是 服务端 正向代理: 代理的是客户端
- 负载均衡
- 路径别名
- 丰富的用户认证机制:basic,digest
- 支持第三方模块
1.3 apache特点
Apache 是一款开源 Web 服务器软件,其主要特点包括:
- 跨平台性:Apache 可以运行于 Linux、Windows、Mac OS 等多种操作系统环境中
- 可扩展性:Apache 支持插件式架构,能够方便地扩展新的功能模块
- 安全性:Apache 通过 access control、SSL/TLS 加密等多种手段保障服务器和数据的安全
- 稳定性:Apache 拥有强大的稳定性和健壮性,在高压力下表现良好
- 易用性:Apache 提供了简单易用的配置文件,允许管理员以文本方式编辑
- 速度快:Apache 优化了请求和响应处理机制,能够提高 Web 服务器的性能
1.4 三种工作模式
Worker模式:工作线程(Worker)模式适用于资源利用率高的场景
Apache在启动时会创建一组预定义数量的线程池。 每个线程都可以处理多个请求,线程之间共享服务器的内存和资源。 当一个请求到达服务器时,一个空闲的线程将被选择来处理该请求。 线程可能会处理多个请求,通过线程池重用来更高效地处理请求。 这种模式下需要注意线程安全的问题,以确保多个线程间的数据访问不会导致冲突。
Event模式:事件驱动(Event MPM)模式适用于高并发场景
在事件驱动模式下,Apache使用I/O多路复用(如epoll或kqueue)来监听多个连接。 当一个连接有数据到达时,Apache将发出事件通知,表示该连接有可读数据。 Apache将事件分发给一个空闲的工作线程来处理请求。 工作线程处理请求的过程通常是非阻塞的,通过事件驱动方式读取数据和发送响应。 这种模式下可以处理大量的并发请求,因为它不需要为每个请求创建一个新的进程或线程。
Pre-Fork模式:预产生(Pre-Fork)模式适用于稳定性要求高的场景
Apache在启动时会创建一组预定义数量的子进程(称为工作进程)。 每个工作进程都是独立的,有自己的内存空间和资源。 当一个请求到达服务器时,主进程选择一个空闲的工作进程来接受该请求。 选中的工作进程处理该请求,生成响应并将其发送回客户端。 这种模式下每个工作进程只能处理一个请求,处理完请求后会继续等待下一个请求。
二、LAMP简介
2.1 LAMP平台概述
- LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境
- LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或 perl,Python)网页编程语言
2.2 构建LAMP平台顺序
- 在构建LAMP平台时,各组件的安装顺序依次为Linux,Apache,MySQL,PHP
- 其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服 务器和数据库系统以协同工作
2.3 编译安装的优点
- 具有较大的自由度,功能可定制
- 可及时获得最新的软件版本
- 普遍适用于大多数Linux版本,便于一直使用
2.4 各组件的主要作用
- (平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提 供更好的稳定性,兼容性(AMP组件也支持Windows、UNIX等平台)
- (前台)Apache:作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器 直接面向用户提供网站访问,发送网页,图片等文件内容
- (后台)MySQL:作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系 统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息
- (中间连接)PHP/Perl/Python:作为三种开发动态网页的编程语言,负责解释动态网页文件,负责 沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。其中PHP是一 种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发
三、wget命令
格式:
wget [OPTION] [URL]
常用选项:
- -q 静默模式
- -c 断点续传
- -P /path 保存在指定目录
- -O filename 保存为指定文件名,filename 为 - 时,发送至标准输出
- --limit-rate= 指定传输速率,单位K,M等
示例:
wget --limit-rate 1M -P /data https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso
四、curl命令
简介:
- curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议
- curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上 传, kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证, 下载文件断点续传,上载 文件断点续传, http代理服务器管道( proxy tunneling),还支持IPv6,socks5代理服务器,通过http 代理服务器上传文件到FTP服务器等,功能十分强大
格式:
curl 【】 【】
模拟 一些 操作
选项:
-A:设置用户代理发送给服务器
-e:来源网址
--cacert:CA证书 (SSL)
-k:允许忽略证书进行 SSL 连接
--compressed:要求返回是压缩的格式
-H: "key:value” 自定义首部字段传递给服务器
-i:显示页面内容,包括报文首部信息
-I:只显示响应报文首部信息
-D:将url的header信息存放在指定文件中
--basic:使用HTTP基本认证
-u:设置服务器的用户和密码
-L:如果有3xx响应码,重新发请求到新位置
-O:使用URL中默认的文件名保存文件到本地
-o:将网络文件保存为指定的文件中
--limit-rate:设置传输速度
-0:数字0,使用HTTP 1.0
-v:更详细
-C:选项可对文件使用断点续传功能
-c:将url中cookie存放在指定文件中
-x:指定代理服务器地址
-X:向服务器发送指定请求方法
-U:代理服务器用户和密码
-T:选项可将指定的本地文件上传到FTP服务器上
--data:方式指定使用POST方式传递数据
-s --silent Silent mode
-b name=data:从服务器响应set-cookie得到值,返回给服务器
-w:显示相应的指定的报文信息,如:%{http_code},%{remote_ip}等-m:允许最大传输时间
示例:
注:
出现如下报错:
curl: (6) Could not resolve host: www.163.com; 未知的错误
解决方法:
[root@localhost ~]# vim /etc/resolv.conf
// 原先的DNS
# Generated by NetworkManager
nameserver 8.8.8.8
// 修改后的DNS
# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8
curl -s -I -m10 -o /dev/null -w %{http_code} http://www.baidu.com/ 提取状态码 curl -s -I -m10 -o /dev/null -w %{remote_ip} http://www.baidu.com/ #服务器 curl -s -I -m10 -o /dev/null -w %{local_ip} http://www.baidu.com/ #本机地址 curl -s -I -m10 -o /dev/null -w %{local_port} http://www.baidu.com/ #本地端口 随机的 curl -s -I -m10 -o /dev/null -w %{remote_port} http://www.baidu.com/ #80
五、压力测试工具
httpd的压力测试工具:
- ab,webbench,http_load,seige
- Jmeter 开源
- Loadrunner商业,有相关认证
- tcpcopy:网易,复制生产环境中的真实请求,并将之保存
注:如没有ab命令,则用yum install -y httpd-tools 下载
命令格式:
ab 【】 【】
选项:
-n:总请求数
-c:模拟的并发数
-k:以持久连接模式测试
示例: