1,进程和线程

进程类似于一个大工程项目,线程相当于大工程项目的每个小的任务单元,进程比较耗资源,线程消耗的资源要少得多,一个进程中可能有一个或者多个线程,根据工作需要的程度。

2. 一个进程中的多个线程之间由于是共享资源,所以可能会互相影响,可以采用复用的多进程I/O进程。

3. 建立请求,处理请求(单进程,多进程,复用进程,多进程复用)

4. tomcatapaceh下的一个软件,tomcat是一款开源的程序,通常用于动态页面的制作。

MPM(多路处理模块)工作模式

Pereork:一个进程响应一个用户的请求,但是它有一个主进程,这个主进程可以生成多个子进程,最多1024个,每个子进程响应一个用户的请求,相当于每一个子进程中只有一个线程

Worker:一个主进程生成若干子进程,子进程又可以分为多个线程

Eventcentos6中是测试版,不可用,7以后可用。

Httpd功能特性

虚拟主机:可以根据ipportFQDN的不同,创建不同的网站

CGI(通用网关接口):支持应用程序开发的接口,例如httpd本身只支持静态页面,但是要想支持动态页面,可以通过CGI使用php语言

正向代理:

58ec3523bc5aaf54f12e952fe9bf842b.png 

在叉出可以设置一个缓存区,这样当1号用户访问过mage后,2号用户再访问mage就可以通过缓存区直接获得,而不用浪费资源,再去互联网上寻找了,同时也可以在代理服务器上设置acl等,指定策略等,来定义指定的用户访问指定的资源

反向代理:

c410c8f67213fe9492692263da884fc7.png

在某个时间段内,互联网内的某个请求很大的时候,可以在反向代理服务器(调度器)这里将所有此请求的请求都指定到一个专门的web服务器上,这个被指定的web服务器只会处理这个请求量很大的请求,但是一般都不用apache作为反向代理服务器,市面上一般比较常见的是nigixhaproxylvs

路径别名:将网站主页指向一个别的地方,例如www.magedy.com/bbs访问的是本机的bbs目录

用户认证机制:就是用户名,密码

支持第三方模块:扩展apache的功能

Httpd-2.2

主配置文件格式(/etc/httpd/conf/httpd.conf),三大块部分

第一部分:全局环境

第二部分:主服务配置

第三部分:虚拟主机

这三部分的顺序对功能的实现没有影响,分为三部分主要是为了看起来美观。

Httpd-2.2配置

1)修改监听的IPPort

可以实现监听多个端口

8bb354aa0dbb1173eb2452f2e243e327.png 

106只能通过9527访问,106只能通过80访问

e16b5cd41cb50e4f0204341a2b7f3132.png 

https(是加密的http),端口号是443http(端口号是80),是不一样的

2)持久连接

a43543e0c8964435cc59641be321975e.png-wh_ 

链接后,不操作的情况下等多久自动断开连接

3)多路处理模块MPM

如:启用worker模块

 595e88333bc6bae030ea09d8dc8da489.png

 

4888af2b632324c8ff072011d7366354.png

e37719f6c5dd7f1a836b9362ba5f83d9.png

 

Startservers 开启的服务个数

Minspareservers 最小的空闲进程,预先准备5个空闲进程,也就是当用到第四个的时候,就会立马增加新的5个进程,始终保证系统有5个空闲进程

Maxspareservers 最大的空闲进程,就是最多20个空闲的时候,就会被关掉

Serverlimit 最多256个,也就是并发连接数最多256个进程

Maxclients 最多多少个线程

Maxrequestsperchild 达到4000了,就自动关闭,开启新的进程

f9cecd52f20b2b8b93273a6143a8b80f.png

服务个数是4,但是ps -aux查看的时候只能看到三个,这是因为,一个进程可以开25个线程,也就是说服务一开就会有100个线程,但是由于最大空闲数是75所以,会自动关掉一个进程,也就变成三个了

4)加载动态模块配置

主配置文件中,前面加#的模块不会被启用

490d51ecd32bb0e474ec3fe33bdc1db5.png 

5)主站点

主页面,可以更改,如

2c7dc37e27d65b6b951317f9c122f430.png

如果两行同时启用,会使用下面的根文件目录

创建网站目录,就在html下创建子目录就行

410982e946afc8b697931804d7fe5a2b.png

指定默认网站目录下访问的默认页面,也可以在访问的时候指定访问目录

8211dfd3a5a2d8127caad294e6ad72ba.png-wh_

6)站点访问控制常见机制

 8a0c565ae6b9e9a94927caa27b53ff71.png 

a4b4e8d34d282bc648116d8d7a74a329.png

/app/site1下的网页不允许使用软连接访问,默认支持软连接,不支持索引

Options none 全都不支持

Options  all 全都支持

主站点的子目录下想实现个性化的访问控制,可以在下面继续加

1c612689bc87a9183dcf862e4b298f7d.png 

7)orderdenyallow

7f31303c6cbd304a0d4a607b67dff2e1.png

Only的时候,只看only

Bothnone的时候,看denyallow哪个在后面

8)针对url控制访问

d1ffea77bb1a490453531f4c3feb8723.png

Site1下的文件,confsh结尾的都文件拒绝访问

b09e18223583dd0a56fb93760c91c8a2.png

主站点下的admin目录,只允许允许的主机访问,其他的都拒绝

10)日志的设定

错误日志:默认的是warn,也就是马上就要错了就记录日志

f8b04ff3ff8b939078b668ac8818a9ff.png

访问日志:

日志格式

586daff5578b297cb14d885858b24887.png-wh_

2f6780722b4d35412ed7f8ef913322e9.png

默认的日志目录,和格式,即combined  ,%是间隔

%h 远程主机地址

%l  远程登陆的用户的用户名

%u 远程用户身份验证

%t 用户发起请求的时间,而且默认标准是英语国家的时间

%r 第一行的请求

%>s  最后的响应码,每一个响应都有一个对应的一个号码

%b 相应报文的文件大小

Referer 从哪个地址跳转到这里的

可以自己制定日志格式,然后在/conf.d/name.conf文件中使用自己定义的日志格式,如基于FQDN的虚拟主机的定义的.conf文件中,如下,testlog就是自己定义的日志格式

3975a52d73218a288df13c6a112d1d49.png

11)设定默认字符集,就是针对不同语言设计的不同的字符集,有些字符集不支持中文,有些全球通用,如utf-8

修改默认的字符集:

44496803beba966130d45c1dcfaa91cc.png

12)定义路径别名

f064e5a4c8788a09670ee3234a23d4d8.png

这样访问/bbs目录的时候,会变成访问/app/bbsdir下的文件,而且bbs这个目录不管存在不存在,都不影响,它是个虚拟目录

13)基于用户的访问控制

Basic基本验证

针对目录以及用户的访问控制,require 改为valid-user

用户以及用户的密码文件可通过htpasswd  -c/s/m 添加 c只在文件不存在时使用,sm代表不同的加密机制,shamd5

require-vaild,即为允许所有用户访问

793bdc3bd343f8a376a8cc6dcf1cd163.png

同时可以i将控制访问的内容放到/secret/下的一个.htaccess文件下,这样这个文件内的内容就会对secret的权限生效,另外,需要在/conf.d/test.conf文件中将allowoverride后加上 authconfig,即允许用验证的权限通过 .htaaccess文件覆盖。

13)基于组账号进行认证

创建.htgroups文件,里面定义组成员的信息,如下

212a1332098aab634abeca4591bb8688.png

然后修改.htaaccess文件,类似用户访问控制的格式

8c2b94c21d66891d88bf64357c15a4ec.png

14)Status页面,状态页面

43d6534da412cd91616a95a0053f4706.png-wh_

5fdd7d712136c8d09ae309f1a699d813.png

这里去掉#并修改配置后,可以访问本机的状态

虚拟主机(一个主机多个站点,一个站点代表一个虚拟主机)

通常对于访问量不是很大的访问,一个主机划分多个虚拟主机进行访问。

1)制作三个虚拟主机,建立三个站点的工作目录

 3a706608f9498f5f068e1c4c6c6d216a.png

2)添加三个ip地址

2f7c290629c0703858d88163dbe64aad.png

3)三种实现方法

1. 为每个虚拟主机准备一个ip地址(基于ip

 ec6dbd152241e9fd6cefee587041f45b.png

访问这些虚拟地址

 e39b1b0ef47fc00cc7daee8bd41533d4.png

2. 为每个虚拟主机使用至少一个的端口(基于port

df1c0ac9ded2e7496049f5f1d1193013.png

通关端口访问

c0692645031b855be91068e62e50ed14.png

3. 为每个虚拟主机至少准备一个FQDN(基于FQDN

NamevirtualHost *80 是主配置文件里的内容,如果不修改主配置文件,也可以写在这里,表示启用基于FQDN的虚拟主机访问

2e87d86330ec40fb96143cc802f66844.png 

另外,虚拟主机配置的位置决定了谁先被访问,如图website3在第一个,那么就会放任website3,如下

a680aaa83090cee0f61e17d7e229ee89.png 

Cookie

cookie:记录用户的各种数据,用户数量一旦太多,对服务器压力就很大,这种cookie就不太合适了,而且用户换了登陆主机后,无法加载cookie中的用户的数据

cookie:只会记录每个用户的一个uid,并在后台通过用户的uid为其访问其对应的数据,而且当用户换了主机登陆后,依然可以加载出来用户的数据

常见状态码

使用火狐浏览器可以方便的查看响应码

0a06a988c41ef33ff7bce6b1726006fc.png 

CURL命令(常用)

-A 设置用户代理发送给服务器

89f8ca638f4c247fffa835bcff107bec.png 

-e 选择来源的网址

a3cc66543a5ef305159a7da458352b94.png 

日志如下

ed0edc0dd4290a087bbe1caafbe426a3.png -H 自定义首部信息

 7081fa576c2231a3067b48a2a51cb066.png

日志如下

 48129df0ddd218698659239bc2823b66.png

-i 额外显示页面内容

-I 只显示响应报文的首部信息

-Durlheader信息存放在在指定文件中

01cf4376d8eafffa220580fcc3185836.png 

-o

下载服务器中的文件,可以指定下载完后的文件名

-O

下载服务器中的文件,文件名默认和服务器上的一样

下载的时候进行限速

ee65cfdad2f160e05b32d8fab435bc0a.png

-L

进行真的跳转,不加的话,只是显示要跳转的内容,但是不会真的跳转

39653c748245571b3fb1dc3c3c4662a7.png 

Mod_deflate模块实现

定义在/etc/httpd/conf.d/name.conf文件中,作用是通过压缩传输的页面,节约宽带,减少额外消耗的cpu,但是有些老旧的浏览器可能不支持,而且只能压缩适用于压缩的数据

883d30977a3702f6f30ed78dd894e921.png

Deflatecompressionlevel 默认是9,不写这一行也是9,这里写的1,即11压缩,也就是不压缩

AddOutputFilterByType DEFLATE text/* 可以选择需要压缩的数据类型