基于Apache实现linux平台web服务实战

1、Centos7系统下实现httpd-2.4的安装,并分别实现prefork、worker、event等几种工作方式。
编译安装

# yum  install -y httpd

程序环境配置文件

  • 主配置文件:/etc/httpd/conf/httpd.conf
    不想修改主配置文件,可通过新增/etc/httpd/conf.d/*.conf文件来完成配置
    symtemd的服务文件
  • /usr/lib/system/lsystemd/httpd.service
    主程序文件:
  • /usr/sbin/httpd httpd-2.4 支持的MPM的动态切换;
    日志文件:
  • /var/log/httpd;
  • access_log; 访问日志
  • error_log; 错误日志
    站点文档
  • /var/www/html ; 即帮助文件
    模块文件路径
  • /uar/lib64/httpd/modules

服务控制命令:

  • systemctl enable | disable httpd.service 是否自动启动
  • systemctl { start | stop | restart | status } httpd.service 服务是否 开启、停止、重启、状态

多处理模块(MPM)

prefork:多进程模型,一个进程响应一个请求;
worker:多进程多线程模型,一个线程响应一个请求;
event:事件驱动模型,一个进程响应n个请求;
分别启用prefork、worker、event工作方式

默认开启的状态是prefork,一旦启动/etc/sysconfig/httpd里的worker、event模式便自动切换.

1、开启prefork模式

[root@localhost ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf 
image.png

重启服务并且检查语法:


image.png

2、启动event模式
将LoadModule mpm_prefork_module modules/mod_mpm_prefork.so 禁用,并开启 LoadModulempm_event_modulemodules/mod_mpm_event.so,如图

image.png

重启服务并检查语法:


image.png

3、启动worker模式,方法类似

image.png

image.png

2、简述request报文请求方法和状态响应码

request报文请求方法:

  • GET:从服务器获取一个资源
  • POST:向服务器发送要处理的数据
  • HEAD:只从服务器获取文档的响应头部
  • DELETE:请求删除服务器的某个资源
  • PUT:把请求的主题存储在服务器上
  • TRACE:追踪请求过程中所经过的代理服务器
  • OPTION:返回服务器对指定资源所支持使用的请求方法

状态响应码

三位数字,如200,401,404,502等,标记请求处理当中发生的情况; 1xx:100-101,信息提示
2xx:200-206,成功
3xx:300-305,重定向
4xx:400-415,错误类信息,客户端错误
5xx:500-505,错误类信息,服务端错误
常用状态码:
200:成功,请求的所有数据通过响应报文的entity-body发送;OK
301:请求的URL指向的资源已经被删除;但在响应报文中通过Location指明资源的新位置,Moved Permanently
302:与301类似,但在响应报文通过Location指明的是资源所处的临时新位置
304:客户端发出了条件式请求,但服务器的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
401:需要输入账号和密码认证方能访问资源
403:请求被禁止;Forbbiden
404:请求的资源不存在;Not Found
500:服务器内部错误;Internal Server Error
502:代理服务器从后端服务器收到一条伪响应;Bad Gateway

3、详细描述httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例"

3.1虚拟主机

一个物理服务器可以服务于多个站点,每个站点可通过一个或者多个虚拟主机来实现;http三种类型的虚拟主机:基于ip、基于port、基于FQDN。
定义虚拟主机的方法:

<VirtualHost "IP:PORT">
ServerName
SeverAlias
DocumentRoot
</VirtualHost>

注意:大多数可用于全局或‘main’ server中的指令,都可以定义在VirtualHost中;
实例1:基于IP

<VirtualHost "192.168.1.103:80">
SerName www.ilinux.io
DocumentRoot "/data/web/ilinux"
</VirtualHost>
<VirtualHost "192.168.1.110:80">
SerName www.ilinux.io
DocumentRoot "/data/web/ilinux"
</VirtualHost>

注意:要在本机上配置上述两个地址,并能实现网络通信
实例2:基于Port

<VirtualHost "192.168.1.103:80">
SerName www.ilinux.io
DocumentRoot "/data/web/ilinux"
</VirtualHost>

Listen 10086
<VirtualHost "192.168.1.103:80">
SerName www.ilinux.io
DocumentRoot "/data/web/ilinux"
</VirtualHost>

注意:这里的所有端口都要被httpd监听
实例3:基于域名FQDN

<VirtualHost "192.168.1.103:80">
SerName www.ilinux.io
DocumentRoot "/data/web/ilinux"
</VirtualHost>

Listen 10086
<VirtualHost "192.168.1.103:80">
SerName www.ilinux.io
DocumentRoot "/data/web/ilinux"
</VirtualHost>

注意:额外经常用于每个虚拟主机的配置有

  • Errorlog
  • Customlog
  • <Directory>
  • <Location>
  • ServerAlias

3.2站点访问控制

访问控制机制:可以基于来源地址或者基于账号进行控制;定义的方式有两种:
文件系统路径:

<Directory"/PATH/TO/SOMEDIR>
...
</Directory>

URL路径:

<Location "URL">
 ...
</Location>

Directory中的访问控制定义

(1)Options :定义访问特性

Indexes:允许索引,指明的URL路径不存在或没有与主页面资源相匹配的文件时,返回给用户索引列表。
FollowSymLinks:允许跟踪符号链接文件所指向的源文件。
None:禁止访问
All:启用除了MultiViews所有选项
定义格式:

允许索引,允许跟踪符号链接文件

<Directory>
Options Indexes FollowSymLinks
</Directory>

禁止访问设置

<Directory>
Options None
</Directory>

(2)基于来源地址访问控制
order:检查次序
Oder Allow Deny:只有明确allow的地址,才允许访问,其他均为deny;
Allow from:允许访问的所有地址
Deny from:拒绝访问的来源地址
3.3基于用户的访问控制
生成用户密码文件:
使用htpasswd生成用户密码文件
格式为:htpasswd [-c][-m][-D]passwdfile username,分别生成tom,jerry,Obama用户。


image.png

编辑/etc/httpd/conf.d/admin.conf,内容如下:


image.png

编辑/etc/httpd/conf.d/.htgroup,写入如下内容
image.png

完成后,打开浏览器,输入ip+admin即可完成基于组的认证,用户认证省略定义组用户,相对简单,这里不做演示。

3.4持久链接相关配置

持久链接:链接建立后,每个资源获取结束后不会断开链接,而是继续
等待其他资源请求并完成传输;但是总归要断开的,如何断开呢?我们可以通过限制链接请求数量或者限制时间,超时即断开链接。

劣势:对并发访问量较大的服务器,开持久会使有些请求得不到服务;
改进:缩短时间,httpd-2.4支持毫秒级
非持久链接:每个资源都是单独通过专用的链接获取
持久链接相关参数:
KeepAlive Off|On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

可以通过Telnet命令来进行持久链接测试:

telnet Sever 80

GET /URL HTTP/1.1
Host:Server
在超过15秒后没用操作自动断开链接

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容