Httpd介紹以及httpd 2.4新特性

2017年3月5日23:46:15 發(fā)表評論 4,793 ℃

apache

NCSA , httpd

A Patchy Server =apache

FSF:  GUN , GPL

ASF: Apache Software Foundation

web: httpd

tomcat

Hadoop

www.apache.org #官網(wǎng)網(wǎng)址

httpd版本:

Web     Server     Open source

2.2    ,  2.4   ,   2.0

httpd:

事先創(chuàng)建進(jìn)程

按需維持適當(dāng)?shù)倪M(jìn)程

模塊設(shè)計(jì),核心比較小,各種功能都模塊添加(包括php)

支持運(yùn)行配置,支持單獨(dú)編譯模塊

支持多種方式的虛擬主機(jī)配置

socket  ip:port

虛擬主機(jī):

基于IP的虛擬主機(jī)

基于端口的虛擬主機(jī)

基于域名的虛擬主機(jī)

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

Method URL version

header

body

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

Host:www.zhongjima.net

支持https協(xié)議(mod_ssl)

支持用戶認(rèn)證

支持基于IP或主機(jī)名的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: 工作根目錄,相當(dāng)于程序安裝目錄
/etc/httpd/conf:配置文件目錄

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

/etc/httpd/modules:模塊目錄
/etc/httpd/logs --> /var/log/httpd:日志目錄

日志文件有兩類:訪問日志access_log,錯(cuò)誤日志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:

程序:指令和數(shù)據(jù)

數(shù)據(jù),數(shù)據(jù)庫服務(wù)

httpd安裝:yum install -y httpd

directive value

指令不區(qū)分字符大小寫

value 則根據(jù)需要有可能區(qū)分大小寫

loadRunner 模擬真實(shí)測試軟件

MPM:Multi Path Modules

mpm_winnt #windows服務(wù)器

prefork #(一個(gè)請求用一個(gè)進(jìn)程響應(yīng))預(yù)先生成進(jìn)程(prefork,多進(jìn)程模式,1個(gè)進(jìn)程服務(wù)于1個(gè)用戶請求,成本比較高。但是,穩(wěn)定性最高,不需要支持線程安全。)

<IfModule prefork.c>
StartServers       8  # 服務(wù)啟動(dòng),啟動(dòng)多少個(gè)空閑進(jìn)程
MinSpareServers    5 #最少多少個(gè)空閑進(jìn)程
MaxSpareServers   20  #最大空閑進(jìn)程
ServerLimit      256   #最大進(jìn)程數(shù)
MaxClients       256  # 最多多少個(gè)進(jìn)程同時(shí)訪問
MaxRequestsPerChild  4000  #一個(gè)子進(jìn)程最多響應(yīng)多少請求
</IfModule>

worker #(一個(gè)請求用一個(gè)線程響應(yīng)(啟動(dòng)多個(gè)進(jìn)程,每個(gè)進(jìn)程生成多個(gè)線程))(多線程(worker,多進(jìn)程多線程模式,1個(gè)進(jìn)程含有多個(gè)worker線程,1個(gè)worker線程服務(wù)于1個(gè)用戶請求,因?yàn)榫€程更輕量,成本比較低。但是,在KeepAlive場景下,worker資源會被client占據(jù),無法響應(yīng)其他請求(空等待)

<IfModule worker.c>
StartServers         4 #  服務(wù)啟動(dòng)以后啟動(dòng)進(jìn)程數(shù)
MaxClients         300  # 最多同時(shí)運(yùn)行多少個(gè)請求
MinSpareThreads     25  # 最小空閑線程
MaxSpareThreads     75  #最大空閑線程
ThreadsPerChild     25  #每個(gè)進(jìn)程生成多少個(gè)線程
MaxRequestsPerChild  0  #每個(gè)子進(jìn)程運(yùn)行最大連接數(shù)
</IfModule>

event # (一個(gè)進(jìn)程處理多個(gè)請求)

<IfModule mpm_event_module>
    StartServers             3   #服務(wù)啟動(dòng)以后啟動(dòng)的進(jìn)程數(shù)
    MinSpareThreads         75  #最小空閑線程
    MaxSpareThreads        250 #最大空閑線程
    ThreadsPerChild         25 #每個(gè)進(jìn)程生成多少個(gè)線程
    MaxRequestWorkers      400  #最大請求數(shù)
    MaxConnectionsPerChild   0 #每個(gè)子進(jìn)程運(yùn)行最大連接數(shù),
</IfModule>

httpd命令:

-l:查看支持的模塊

-M : 查看支持額外的模塊

-t:查看配置文件語法錯(cuò)誤

URL路徑跟本地文件系統(tǒng)路徑不是一碼事兒,URL是相對于DocumentRoot

Options

none:不支持任何選項(xiàng)

Indexes:運(yùn)行索引目錄

FollowSynlinks:允許訪問符號鏈接指向的原文件

Includes:允許執(zhí)行服務(wù)端包含(SSI)

ExcCGI:允許運(yùn)行CGI腳本

MultiViews:根據(jù)來自地域,顯示不同語言的頁面

ALL :執(zhí)行所有選項(xiàng)

Order :用于定義基于主機(jī)的訪問功能,IP,網(wǎng)絡(luò)地址或主機(jī)定義訪問控制機(jī)制(Apache2.4不支持allow,deny機(jī)制)

Order allow,deny #后面是默認(rèn)選項(xiàng)
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:認(rèn)證訪問

AllowOverride AuthConfig(AuthConfig基于文件中的用戶名密碼認(rèn)證訪問)

AuthType Basic  #(Basic基本認(rèn)證類型)

AuthName "Restricted Files"  #提示信息

AuthUserFile "/usr/local/apache/passwd/passwords"  #認(rèn)證用戶文件

htpasswd命令:

-c :首次創(chuàng)建

-m:md5加密

-D:刪除用戶

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

AuthGroupFile "/usr/httpd/conf/htgroup" #認(rèn)證組文件

Require user tom  #允許tom 用戶登錄(Require valid-user 允許文件中所有用戶登錄)

Require group myusers # 允許myusers組訪問,(此時(shí)Require user可以省略

#vim htgroup

  myusers: tom hadoop

Alias:路徑別名

Alias /luntan/ "/www/bbs/" #http://www.test.com/luntan  即可訪問/www/bbs/里面的內(nèi)容

虛擬主機(jī)

HTTPS

PHP+MySQL

apache虛擬主機(jī):

apache: 服務(wù)器,Host, 物理主機(jī)

虛擬主機(jī):

apache服務(wù):

服務(wù)于多個(gè)不同的站點(diǎn):

 apache:

中心主機(jī)

虛擬主機(jī)

基于IP

IP1:80

IP2:80

基于端口

IP:80

IP:8080

基于域名

IP:80

主機(jī)名不同

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  #定義錯(cuò)誤日志

CustomLog  #定義訪問日志

<Location "/images">  #定義images目錄的使用方法

</Location>

ScriptAlias  #使Apache允許執(zhí)行一個(gè)特定目錄中的CGI程序

CGI: Common Gateway Interface

得先取消中心主機(jī),注釋中心主機(jī)的DocumentRoot即可。

虛擬主機(jī)的定義:

<VirtualHost HOST>

 

</VirtualHost>

 

基于IP,HOST的寫法

HOST

IP1:80

IP2:80

基于端口:

HOST    

    IP:80

    IP:8080

     

基于域名:

*:80

ServerName 不同

設(shè)定默認(rèn)虛擬主機(jī)

<VirtualHost _default_:80>

DocumentRoot /www/default80

# ...

</VirtualHost>

 

<VirtualHost _default_:*>

DocumentRoot /www/default

# ...

</VirtualHost>

 

<Location /server-status >

    SetHandler server-status  # 服務(wù)器狀態(tài) http://www.test.com/server-status 查看 

    Order Deny,Allow

    Deny from all

    Allow from .foo.com    #拒絕所有,只有foo.com主機(jī)可以訪問

</Location>

PHP:腳本編程語言,php解釋器

webapp: 面向?qū)ο蟮奶匦?/span>

zend:

第一段:詞法分析、語法分析、編譯為Opcode;

opcode放置于內(nèi)存中

第二段:執(zhí)行opcode

php緩存器:

APC

eAccelerator

Xcache

PHP解釋器-->mysql

httpd+php:

CGI

Module

FastCGI/fpm

編譯安裝LAMP環(huán)境

httpd:2.4.23

mysql:5.6.33 (rpm,通用二進(jìn)制,源碼)

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可于運(yùn)行時(shí)裝載;

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

2、Event MPM

3、異步讀寫

4、在每模塊及每目錄上指定日志級別;

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

6、增強(qiáng)的表達(dá)式分析器;

7、毫秒級的KeepAlive Timeout;

8、基于域名的虛擬主機(jī)不再需要NameVirtualHost指令;

9、降低了內(nèi)存占用;

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.zhongjima.net

.amd5.com

允許所有主機(jī)訪問:

Require all granted

拒絕所有主機(jī)訪問:

Require all deny

php支持?jǐn)U展功能:

    xcache

垃圾回收器

壓力測試工具:

ab

http_load

webbench

siege

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評論

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