Httpd介紹以及httpd 2.4新特性

2017年3月5日23:46:15 發表評論 4,955 ℃

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:m.maowutv.com

支持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

m.maowutv.com

.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: