Httpd介绍以及httpd 2.4新特性

2017年3月5日23:46:15 发表评论 3,558 ℃

apache

NCSA , httpd

A Patchy Server =apache

FSF:  GUN , GPL

ASF: Apache Software Foundation

web: httpd

tomcat

Hadoop

www.apache.org #官网网址

httpd版本:

Web     Server     Open source

2.2    ,  2.4   ,   2.0

httpd:

事先创建进程

按需维持适当的进程

模块设计,核心比较小,各种功能都模块添加(包括php)

支持运行配置,支持单独编译模块

支持多种方式的虚拟主机配置

socket  ip:port

虚拟主机:

基于IP的虚拟主机

基于端口的虚拟主机

基于域名的虚拟主机

protocol://HOST:POST/path/to/souce

Method URL version

header

body

GET /download/linux.tar.bz2 HTTP/1.0

Host:www.amd5.cn

支持https协议(mod_ssl)

支持用户认证

支持基于IP或主机名的ACL

支持每目录的访问控制

支持URL重写

安装方式:

rpm包:

源码编译:

httpd:SELinux(事先让其处于permssive,disable)

httpd:

/usr/sbin/httpd(MPM: prefork)

httpd: root , rot (master process)
httpd: apache ,apche (worker process)

/etc/rc.d/init.d/httpd
Port: ( 80/tcp ), (ssl : 443/tcp )
/etc/httpd: 工作根目录,相当于程序安装目录
/etc/httpd/conf:配置文件目录

主配置文件:httpd.conf
/etc/httpd/conf.d/*conf

/etc/httpd/modules:模块目录
/etc/httpd/logs --> /var/log/httpd:日志目录

日志文件有两类:访问日志access_log,错误日志err_log

/var/www/

html
cgi-bin

cgi:Common Geteway Interface

Client --> httpd (index.cgi) --> Spawn Process (index.cgi) --> httpd --> Client

perl, python ,java ,(servlet,jsp),php

fastcgi:

程序:指令和数据

数据,数据库服务

httpd安装:yum install -y httpd

directive value

指令不区分字符大小写

value 则根据需要有可能区分大小写

loadRunner 模拟真实测试软件

MPM:Multi Path Modules

mpm_winnt #windows服务器

prefork #(一个请求用一个进程响应)预先生成进程(prefork,多进程模式,1个进程服务于1个用户请求,成本比较高。但是,稳定性最高,不需要支持线程安全。)

<IfModule prefork.c>
StartServers       8  # 服务启动,启动多少个空闲进程
MinSpareServers    5 #最少多少个空闲进程
MaxSpareServers   20  #最大空闲进程
ServerLimit      256   #最大进程数
MaxClients       256  # 最多多少个进程同时访问
MaxRequestsPerChild  4000  #一个子进程最多响应多少请求
</IfModule>

worker #(一个请求用一个线程响应(启动多个进程,每个进程生成多个线程))(多线程(worker,多进程多线程模式,1个进程含有多个worker线程,1个worker线程服务于1个用户请求,因为线程更轻量,成本比较低。但是,在KeepAlive场景下,worker资源会被client占据,无法响应其他请求(空等待)

<IfModule worker.c>
StartServers         4 #  服务启动以后启动进程数
MaxClients         300  # 最多同时运行多少个请求
MinSpareThreads     25  # 最小空闲线程
MaxSpareThreads     75  #最大空闲线程
ThreadsPerChild     25  #每个进程生成多少个线程
MaxRequestsPerChild  0  #每个子进程运行最大连接数
</IfModule>

event # (一个进程处理多个请求)

<IfModule mpm_event_module>
    StartServers             3   #服务启动以后启动的进程数
    MinSpareThreads         75  #最小空闲线程
    MaxSpareThreads        250 #最大空闲线程
    ThreadsPerChild         25 #每个进程生成多少个线程
    MaxRequestWorkers      400  #最大请求数
    MaxConnectionsPerChild   0 #每个子进程运行最大连接数,
</IfModule>

httpd命令:

-l:查看支持的模块

-M : 查看支持额外的模块

-t:查看配置文件语法错误

URL路径跟本地文件系统路径不是一码事儿,URL是相对于DocumentRoot

Options

none:不支持任何选项

Indexes:运行索引目录

FollowSynlinks:允许访问符号链接指向的原文件

Includes:允许执行服务端包含(SSI)

ExcCGI:允许运行CGI脚本

MultiViews:根据来自地域,显示不同语言的页面

ALL :执行所有选项

Order :用于定义基于主机的访问功能,IP,网络地址或主机定义访问控制机制(Apache2.4不支持allow,deny机制)

Order allow,deny #后面是默认选项
Allow from 

deny from

地址的表示方式:

IP

network/netmask

HOSTNAME:www.a.com

DOMAINAME: test.com

Partial IP: 172.16或者 172.16.0.0/16

#禁止172.16.100.2, 192.168.1.100访问

Order deny,allow 

deny from 172.16.100.2, 192.168.1.100

AllowOverride:认证访问

AllowOverride AuthConfig(AuthConfig基于文件中的用户名密码认证访问)

AuthType Basic  #(Basic基本认证类型)

AuthName "Restricted Files"  #提示信息

AuthUserFile "/usr/local/apache/passwd/passwords"  #认证用户文件

htpasswd命令:

-c :首次创建

-m:md5加密

-D:删除用户

htpasswd -c -m /etc/httpd/conf/htpaswwd tom

AuthGroupFile "/usr/httpd/conf/htgroup" #认证组文件

Require user tom  #允许tom 用户登录(Require valid-user 允许文件中所有用户登录)

Require group myusers # 允许myusers组访问,(此时Require user可以省略

#vim htgroup

  myusers: tom hadoop

Alias:路径别名

Alias /luntan/ "/www/bbs/" #http://www.test.com/luntan  即可访问/www/bbs/里面的内容

虚拟主机

HTTPS

PHP+MySQL

apache虚拟主机:

apache: 服务器,Host, 物理主机

虚拟主机:

apache服务:

服务于多个不同的站点:

 apache:

中心主机

虚拟主机

基于IP

IP1:80

IP2:80

基于端口

IP:80

IP:8080

基于域名

IP:80

主机名不同

www.test.com

www.abc.org

www2.a.org

www.b.net

apache 2.2

NameVirtualHost 

apache 2.4 

ServerName

ServerAlias

DocumentRoot /www/a.org/ 

<Directory "/www/a.org">

    Option

    AllowOverride

     

</Directory>

Alias #定义别名

ErrorLog  #定义错误日志

CustomLog  #定义访问日志

<Location "/images">  #定义images目录的使用方法

</Location>

ScriptAlias  #使Apache允许执行一个特定目录中的CGI程序

CGI: Common Gateway Interface

得先取消中心主机,注释中心主机的DocumentRoot即可。

虚拟主机的定义:

<VirtualHost HOST>

 

</VirtualHost>

 

基于IP,HOST的写法

HOST

IP1:80

IP2:80

基于端口:

HOST    

    IP:80

    IP:8080

     

基于域名:

*:80

ServerName 不同

设定默认虚拟主机

<VirtualHost _default_:80>

DocumentRoot /www/default80

# ...

</VirtualHost>

 

<VirtualHost _default_:*>

DocumentRoot /www/default

# ...

</VirtualHost>

 

<Location /server-status >

    SetHandler server-status  # 服务器状态 http://www.test.com/server-status 查看 

    Order Deny,Allow

    Deny from all

    Allow from .foo.com    #拒绝所有,只有foo.com主机可以访问

</Location>

PHP:脚本编程语言,php解释器

webapp: 面向对象的特性

zend:

第一段:词法分析、语法分析、编译为Opcode;

opcode放置于内存中

第二段:执行opcode

php缓存器:

APC

eAccelerator

Xcache

PHP解释器-->mysql

httpd+php:

CGI

Module

FastCGI/fpm

编译安装LAMP环境

httpd:2.4.23

mysql:5.6.33 (rpm,通用二进制,源码)

php:5.6.9

Xcache:3.2.0

httpd-->MySQL-->php -->XCache

httpd:

apr: Apache Portable Runtime #apache2.4需要高版本apr

apr-util

apr-iconv

rpm包:

/bin, /sbin /usr/bin , /usr/sbin

/lib , /usr/lib

/etc

/usr/share/{doc,man}

编译安装:

/usr/local

bin, sbin

lib

etc

share{doc,man}

/usr/local/apr

bin,shbin,lib,incldes ,etc ,share/man

httpd 2.4新特性:

1、MPM可于运行时装载;

    --enable-mpms-shared=all --with-mpm=event

2、Event MPM

3、异步读写

4、在每模块及每目录上指定日志级别;

5、每请求配置;<If>, <ElseIf>, <Else>;

6、增强的表达式分析器;

7、毫秒级的KeepAlive Timeout;

8、基于域名的虚拟主机不再需要NameVirtualHost指令;

9、降低了内存占用;

10、支持在配置文件中使用自定义变量;

 

--enable-modules=most

新增加的模块:

mod_proxy_fcgi

mod_proxy_scgi

mod_proxy_express

mod_remoteip

mod_session

mod_ratelimit

mod_request

等等;

对于基于IP的访问控制

Order allow,deny

allow from all

2.4中不再支持此方法,2.4使用Require user

Require user USERNAME

Require group GRPNAME

Require ip IPADDR #允许访问

Require not ip IPADDR IP #不允许访问

NETWORK/NETMASK

NETWORK/LENGTH

NET

172.16.0.0/255.255.0.0 = 172.16.0.0/16 = 172.16

     

Require host HOSTNAME

HOSTNAME

DOMAIN

www.amd5.cn

.amd5.com

允许所有主机访问:

Require all granted

拒绝所有主机访问:

Require all deny

php支持扩展功能:

    xcache

垃圾回收器

压力测试工具:

ab

http_load

webbench

siege

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: