真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Apache-httpd

一、HTTPD特性

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、雅安服務器托管、營銷軟件、網(wǎng)站建設、梁河網(wǎng)站維護、網(wǎng)站推廣。

httpd:特性

1.事先創(chuàng)建進程:在請求來之前,創(chuàng)建進程監(jiān)聽,加快響應速度

2.按需維持適當?shù)倪M程

3.模塊設計,核心比較小,各個功能都可以按照模塊添加

4.支持多種方式的虛擬主機配置:

Socket IP:Port

1.基于IP的虛擬主機(如果一個server有多個ip,而在互聯(lián)網(wǎng)上,每個IP每年都需要一定的費用)

2.基于端口的虛擬主機(如果不是標準的80端口,那么別人無法知道到底使用的是啥端口)

3.基于域名的虛擬主機(比較好的選擇)

protocol://host:port/path/to/source

=================

Method URL version

header

body

=================

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

Host: www.harry.com

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

5.支持用戶認證

6.支持基于IP或主機名的ACL

7.支持每目錄的訪問控制

8.支持URL重寫

二、HTTPD安裝

1.rpm包

httpd:

/usr/sbin/httpd(MPM: prefork)

httpd: root,root(master process)

httpd: apache,apache(worker process)

/etc/rc.d/init.d/httpd (啟動腳本)

port:(http: 80/tcp)(https: 443/tcp)

/ec/httpd:工作根目錄,相當于程序安裝目錄

/etc/httpd/conf:配置文件目錄

httpd.conf主配置文件(以段文件分散到conf.d目錄下,以include引入)

conf.d/*.conf

/etc/httpd/modules:模塊路徑(都是連接)

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

日志文件有兩類:訪問日志access_log錯誤日志err_log

/var/www: 資源文件目錄

html :靜態(tài)文件路徑

cgi-bin:動態(tài)文件路徑

cgi: Common Gateway Interface httpd通過cgi和各個模塊進行通信

client --> httpd(index.cgi) --> spawn process(index.cgi) --> httpd --> client

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

cgi工作原理:

1.一個動態(tài)請求到Web Server,Web Server判斷cgi類型,創(chuàng)建對應的cgi進程來處理動態(tài)請求,并返回html給Web Server,Web Server響應client。動態(tài)cgi進程銷毀

2.fast-cgi:cgi進程池,由master-workers模式

一個動態(tài)請求Web Server,Web Server和master進程通信由master分配給worker進程,來處理

這樣Web Server與cgi可以部署在不同Server上

動靜分離:

----->|------- | |------------|

|Apache|| 應用服務器|

| 如果是靜態(tài)的,|

則直接返回

|

如果是動態(tài)的,

則請求應用服務器------>||

| -------- |

httpd是不處理動態(tài)文件的,而是通過調(diào)用模塊,處理,并返回靜態(tài)文件

2.源碼編譯

三、Global配置

[root@hfdb0001conf]#pwd /etc/httpd/conf [root@hfdb0001conf]#grep"Section*"httpd.conf=>可以看出配置主要有三段。 ###Section1:GlobalEnvironment=>全局配置項 ###Section2:\'Main\'serverconfiguration=>主Server配置 ###Section3:VirtualHosts=>虛擬主機配置(與主Server配置不能同時生效)

ServerTokens OS

http://httpd.apache.org/docs/2.2/zh-cn/mod/core.html#servertokens

ServerTokens Major|Minor|Min[imal]|Prod|[uctOnly]|OS|Full

#超時時間 TCP相關的,如TCP第一次握手后,就不在請求了。

Timeout 120

KeepAlive Off#如果服務器的訪問不大,則需要打開長連接

MaxKeepAliveRequests 100

KeepAliveTimeout 15

#是否使用長連接(tcp連接每次都需要3次握手,而長連接,則第一次三次握手后,一直保持連接狀態(tài)),如果是KeepAlive On,則需要定義MaxKeepAliveRequests 100(即該連接打開后,最多能請求的資源數(shù),不能無盡的請求)。這樣一個用戶請求都會最多能請求100個。 KeepAliveTimeout 15.當用戶擁有一個長連接,但是并不請求,15s后,即自我銷毀了。

#對于繁忙的Server可以降低KeepAliveTimeout的值,可以提高并發(fā)

#eg 當?shù)谝粋€請求到來,獲取一個長連接,他最多能請求100個,到了后,就會斷開連接,重新排隊。這樣下一個請求就能回的連接,請求資源,不然,第一個請求永遠擁有連接,除非自我斷開。

MPM:Multi-Processing Modules(可以切換,通過配置文件修改)

當并發(fā)請求時,Server是如何工作的

1.mpm_winnt

2.prefork(一個請求用一個進程響應)=>預先會生成多個進程,每個進程響應一個請求

3.worker (一個請求用一個線程響應)=>生成多個進程,進程不處理,每個進程生成多個線程,每個線程來處理請求

多線程共享。當同一個進程下的線程已經(jīng)打開了文件,其他線程和讀取,但是存在競爭。需要枷鎖。

4.event (一個進程處理多個請求)

[root@hfdb0001conf]#httpd-l=>查看所有的模塊,可以看到當前只支持prefork模型 Compiledinmodules: core.c prefork.c http_core.c mod_so.c [root@hfdb0001conf]#rpm-qlhttpd|grepbin /usr/sbin/apachectl /usr/sbin/htcacheclean /usr/sbin/httpd=>是默認的,prefork /usr/sbin/httpd.event /usr/sbin/httpd.worker=>可以看出Server是支持worker,event的。 /usr/sbin/httxt2dbm /usr/sbin/rotatelogs /usr/sbin/suexec [root@hfdb0001conf]#httpd.worker-l Compiledinmodules: core.c worker.c http_core.c mod_so.c 我們可以修改配置文件,使得http.worker是默認的 [root@hfdb0001conf]#cat/etc/sysconfig/httpd #Configurationfileforthehttpdservice. # #Thedefaultprocessingmodel(MPM)istheprocess-based #\'prefork\'model.Athread-basedmodel,\'worker\',isalso #available,butdoesnotworkwithsomemodules(suchasPHP). #Theservicemustbestoppedbeforechangingthisvariable. # #HTTPD=/usr/sbin/httpd.worker ....

prefork:

StartServers8=>service啟動后,會創(chuàng)建8個進程 MinSpareServers5=>最小空閑進程(當有4個請求后,會重新創(chuàng)建一個,保持最少5個) MaxSpareServers20=>空閑進程(當100個進程空閑后,會被kill,至20個,即最多20個) ServerLimit256=> MaxClients256=>最多可以處理256個請求,多余的請求排隊MaxClients一個進程最多能響應多少次請求(當一個進程響應請求后,空閑了,還沒有被kill,此時又有請求過來,并響應,那么該進程響應次數(shù)就加1,當達到4000后,無論如何都會被kill,再可能會生成新進程來響應) [root@hfdb0001conf]#psaux|grephttpd=>可以看到初始是8個httpd root131800.00.01757243712?Ss03:520:00/usr/sbin/httpd=>主進程,不處理請求 apache131820.00.01758603032?S03:520:00/usr/sbin/httpd apache131830.00.01758603036?S03:520:00/usr/sbin/httpd apache131840.00.01757242940?S03:520:00/usr/sbin/httpd apache131850.00.01757242940?S03:520:00/usr/sbin/httpd apache131860.00.01758602960?S03:520:00/usr/sbin/httpd apache131870.00.01758602964?S03:520:00/usr/sbin/httpd apache131880.00.01757242516?S03:520:00/usr/sbin/httpd apache131890.00.01757242516?S03:520:00/usr/sbin/httpd

worker:

StartServers4=>初始生成進程數(shù),到不夠是,會創(chuàng)建新的進程,并生成線程 MaxClients300 MinSpareThreads25=>最小空閑線程數(shù)(是所有的進程數(shù)的總和) MaxSpareThreads75=>空閑線程數(shù) ThreadsPerChild25=>每個進程最多能生成多少個線程 MaxRequestsPerChild0=>每個進程最多能響應多少個響應,由于是有線程響應的,則不做控制,即為0

Listen80 => 監(jiān)聽該Server上所有的80 端口

Listen 8080=>可以監(jiān)聽多個端口

Listten x.x.x.x:8181=> 可以指定IP:端口

Includeconf.d/*.conf=>加載conf.d目錄下所有conf文件(以段文件形式)

LoadModulepath/to/...so

Userapache

Groupapache=>所有的httpd進程,只有一個是root:root權限啟動的,其他的都是apache:apache權限

四、虛擬主機配置概述

Socket IP:Port

1.基于IP的虛擬主機(如果一個server有多個ip,而在互聯(lián)網(wǎng)上,每個IP每年都需要一定的費用)

IP1:80

IP2:80

....:80

2.基于端口的虛擬主機(如果不是標準的80端口,那么別人無法知道到底使用的是啥端口,互聯(lián)網(wǎng)上不好適用)

IP:80

IP:8080

3.基于域名的虛擬主機(比較好的選擇)

IP:80

主機名不同(不同的主機名會被解析到同一個IP和端口上)

www.harry1.com=>都會被解析到IP:80上

www.harry2.com=>都會被解析到IP:80上

通過HTTP協(xié)議的請求頭的host: 來判斷到底訪問的那臺主機

ServerName:www.harry1.com

ServerAlias:www.harry11.com=> 當想www.harry1.com和 www.harry11.com是同一個Server時

DocuemtRoot/www/harry1.com/

=> 本地文件系統(tǒng)的路徑

.....

.....

當訪問 http://www.harry1.com/images => 自然會解析到/www/harry1.com/這個目錄下的images

Alias=> 當想再訪問http://www.harry1.com/test/images 也要解析到 之前的images目錄,此時需要別名

ErrorLog

CustomLog

=> URL路徑,可以再訪問該路徑的時候,作限制

ScriptAlias

虛擬主機和中心主機是不能使用的,注釋中心主機的DocumentRoot即可

五、虛擬主機配置

1.基于IP

Host:

ip1:80

ip2:80

注釋httpd.conf的DocuemtRoot配置,即注釋中心主機配置 [root@hfdb0001conf]#pwd /etc/httpd/conf 在conf.d目錄下新建配置文件 [root@hfdb0001conf.d]#pwd /etc/httpd/conf.d [root@hfdb0001conf.d]#ll total12 -rw-r--r--1rootroot392Aug132013README -rw-------1rootroot227Oct3005:39virtual-ip.conf -rw-r--r--1rootroot299Aug22013welcome.conf [root@hfdb0001conf.d]#catvirtual-ip.conf=>前提是要有兩個ip ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" ServerNamewww.harry2.com DocumentRoot"/www/harry2.com" 創(chuàng)建根目錄注意目錄權限755 [root@hfdb0001conf.d]#mkdir-p/www/{harry1.com,harry2.com} 創(chuàng)建index.html 分別訪問10.224.243.1:80和10.224.243.2:80=>會被解析到不同的目錄下

2.基于端口

Host:

ip:80

ip:8080

在conf.d目錄下新建配置文件 [root@hfdb0001conf.d]#pwd /etc/httpd/conf.d [root@hfdb0001conf.d]#ll total12 -rw-r--r--1rootroot392Aug132013README -rw-------1rootroot227Oct3005:39virtual-ip.conf-bak -rw-------1rootroot227Oct3005:39virtual-port.conf -rw-r--r--1rootroot299Aug22013welcome.conf [root@hfdb0001conf.d]#catvirtual-port.conf ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" ServerNamewww.harry2.com DocumentRoot"/www/harry2.com" 修改主配置,listen8080 分別訪問10.224.243.1:80和10.224.243.1:8080也會被解析到不同的目錄下

3.基于域名

serverName不同即可

在conf.d目錄下新建配置文件 [root@hfdb0001conf.d]#pwd /etc/httpd/conf.d [root@hfdb0001conf.d]#ll total12 -rw-r--r--1rootroot392Aug132013README -rw-------1rootroot227Oct3005:39virtual-ip.conf-bak -rw-------1rootroot227Oct3005:39virtual-port.conf-bak -rw-r--r--1rootroot299Aug22013welcome.conf [root@hfdb0001conf.d]#catvirtual-domain.conf===>domain需要被解析到該主機上,可以修改hosts可以DNS NameVirutalHost10.224.243.1:80 ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" ServerNamewww.harry2.com DocumentRoot"/www/harry2.com" 分別訪問www.harry1.com和www.harry2.com也會被解析到不同的目錄下 注意:如果此時訪問的是10.224.243.1:80==>那么會被解析到第一個 每個虛擬主機可以定義自己的CustomLog,format,error等等

六、其他配置

1.目錄權限控制

針對某個IP不能訪問www.harry1.com [root@hfdb0001conf.d]#catvirtual-domain.conf===>domain需要被解析到該主機上,可以修改hosts可以DNS NameVirutalHost10.224.243.1:80 ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" Optionsnone AllowOverridenone Orderdeny,allow=>注意指定了Order為denyallow,那么就只排除 Denyfrom{ip} ServerNamewww.harry2.com DocumentRoot"/www/harry2.com"

2. 身份驗證 轉(zhuǎn)http://www.cnblogs.com/loveCloud/archive/2012/01/12/2320636.html

一、編輯虛擬目錄配置文件,設置認證方式 ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" Optionsnone AllowOverrideAuthConfig=>表明需要進行身份驗證(會再虛擬目錄下,查找.htaccess文件) Orderdeny,allow Denyfrom{ip} 注意:也可以把以下第二步的內(nèi)容嵌入到Directory節(jié)點下。 二、創(chuàng)建.htaccess文件,并配置 vim/var/www/harry1.com/.htaccess AuthName"test"=>僅僅是描述,但最好設置成虛擬目錄的名字,(會在彈出層有體現(xiàn)) AuthTypeBasic=>驗證類型 AuthUserFile/var/www/harry1.com/.htpasswd=>密碼文件路徑 Requirevalid-user=>表示驗證成功的用戶都可以訪問 注意:Apache默認系統(tǒng)對.ht開頭的文件默認是不允許外部訪問的。安全性較高。 注意:Requirevalid-user表示只要htpasswd文件驗證都給的任何一個均可以登陸 也可以僅僅允許htpasswd文件內(nèi)的個別用戶Requireuserusername1username2 也可以僅僅允許htpasswd文件內(nèi)的個別用戶組Requiregroupgroup1group2 注意文件權限: -rw-r--r--.htaccess -rwxr--r--.htpasswd 三、創(chuàng)建.htpasswd文件,并配置 htpasswd-c/var/www/harry1.com/.htpasswd{username}第一次創(chuàng)建用戶用-c,第二次則不用,會提示你輸入密碼的。密碼是加密的 htpasswd-m/var/www/harry1.com/.htpasswd{username}修改密碼 四、通過用戶組訪問

3.Location配置 相對于Directory是配置本地文件系統(tǒng)路徑的,而Location是針對URL路徑的

SetHandlerserver-status=>該Handler能查看當前系統(tǒng)的狀態(tài),如啟用了多少進程,即各個進程狀態(tài) OrderDeny,Allow Denyfromall Allowfrom{ip}


文章標題:Apache-httpd
鏈接分享:http://weahome.cn/article/cgcjdg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部