httpd服務學習筆記
1,進程和線程
進程類似於一個大工程項目,線程相當於大工程項目的每個小的任務單元,進程比較耗資源,線程消耗的資源要少得多,一個進程中可能有一個或者多個線程,根據工作需要的程度。
2. 一個進程中的多個線程之間由於是共享資源,所以可能會互相影響,可以采用復用的多進程I/O進程。
3. 建立請求,處理請求(單進程,多進程,復用進程,多進程復用)
4. tomcat是apaceh下的一個軟件,tomcat是一款開源的程序,通常用於動態頁面的制作。
MPM(多路處理模塊)工作模式
Pereork:一個進程響應一個用戶的請求,但是它有一個主進程,這個主進程可以生成多個子進程,最多1024個,每個子進程響應一個用戶的請求,相當於每一個子進程中只有一個線程
Worker:一個主進程生成若幹子進程,子進程又可以分為多個線程
Event:centos6中是測試版,不可用,7以後可用。
Httpd功能特性
虛擬主機:可以根據ip,port,FQDN的不同,創建不同的網站
CGI(通用網關接口):支持應用程序開發的接口,例如httpd本身只支持靜態頁面,但是要想支持動態頁面,可以通過CGI使用php語言
正向代理:
在叉出可以設置一個緩存區,這樣當1號用戶訪問過mage後,2號用戶再訪問mage就可以通過緩存區直接獲得,而不用浪費資源,再去互聯網上尋找了,同時也可以在代理服務器上設置acl等,指定策略等,來定義指定的用戶訪問指定的資源
反向代理:
在某個時間段內,互聯網內的某個請求很大的時候,可以在反向代理服務器(調度器)這裏將所有此請求的請求都指定到一個專門的
路徑別名:將網站主頁指向一個別的地方,例如www.magedy.com/bbs訪問的是本機的bbs目錄
用戶認證機制:就是用戶名,密碼
支持第三方模塊:擴展apache的功能
Httpd-2.2
主配置文件格式(/etc/httpd/conf/httpd.conf),三大塊部分
第一部分:全局環境
第二部分:主服務配置
第三部分:虛擬主機
這三部分的順序對功能的實現沒有影響,分為三部分主要是為了看起來美觀。
Httpd-2.2配置
1)修改監聽的IP和Port
可以實現監聽多個端口
106只能通過9527訪問,106只能通過80訪問
https(是加密的http),端口號是443和http(端口號是80),是不一樣的
2)持久連接
鏈接後,不操作的情況下等多久自動斷開連接
3)多路處理模塊MPM
如:啟用worker模塊
Startservers 開啟的服務個數
Minspareservers 最小的空閑進程,預先準備5個空閑進程,也就是當用到第四個的時候,就會立馬增加新的5個進程,始終保證系統有5個空閑進程
Maxspareservers 最大的空閑進程,就是最多20個空閑的時候,就會被關掉
Serverlimit 最多256個,也就是並發連接數最多256個進程
Maxclients 最多多少個線程
Maxrequestsperchild 達到4000了,就自動關閉,開啟新的進程
服務個數是4,但是ps -aux查看的時候只能看到三個,這是因為,一個進程可以開25個線程,也就是說服務一開就會有100個線程,但是由於最大空閑數是75所以,會自動關掉一個進程,也就變成三個了
4)加載動態模塊配置
主配置文件中,前面加#的模塊不會被啟用
5)主站點
主頁面,可以更改,如
如果兩行同時啟用,會使用下面的根文件目錄
創建網站目錄,就在html下創建子目錄就行
指定默認網站目錄下訪問的默認頁面,也可以在訪問的時候指定訪問目錄
6)站點訪問控制常見機制
/app/site1下的網頁不允許使用軟連接訪問,默認支持軟連接,不支持索引
Options none 全都不支持
Options all 全都支持
主站點的子目錄下想實現個性化的訪問控制,可以在下面繼續加
7)order和deny,allow
Only的時候,只看only 的
Both和none的時候,看deny和allow哪個在後面
8)針對url控制訪問
Site1下的文件,conf和sh結尾的都文件拒絕訪問
主站點下的admin目錄,只允許允許的主機訪問,其他的都拒絕
10)日誌的設定
錯誤日誌:默認的是warn,也就是馬上就要錯了就記錄日誌
訪問日誌:
日誌格式
默認的日誌目錄,和格式,即combined ,%是間隔
%h 遠程主機地址
%l 遠程登陸的用戶的用戶名
%u 遠程用戶身份驗證
%t 用戶發起請求的時間,而且默認標準是英語國家的時間
%r 第一行的請求
%>s 最後的響應碼,每一個響應都有一個對應的一個號碼
%b 相應報文的文件大小
Referer 從哪個地址跳轉到這裏的
可以自己制定日誌格式,然後在/conf.d/name.conf文件中使用自己定義的日誌格式,如基於FQDN的虛擬主機的定義的.conf文件中,如下,testlog就是自己定義的日誌格式
11)設定默認字符集,就是針對不同語言設計的不同的字符集,有些字符集不支持中文,有些全球通用,如utf-8
修改默認的字符集:
12)定義路徑別名
這樣訪問/bbs目錄的時候,會變成訪問/app/bbsdir下的文件,而且bbs這個目錄不管存在不存在,都不影響,它是個虛擬目錄
13)基於用戶的訪問控制
Basic基本驗證
針對目錄以及用戶的訪問控制,require 改為valid-user,
用戶以及用戶的密碼文件可通過htpasswd -c/s/m 添加 c只在文件不存在時使用,s,m代表不同的加密機制,sha,md5
require-vaild,即為允許所有用戶訪問
同時可以i將控制訪問的內容放到/secret/下的一個.htaccess文件下,這樣這個文件內的內容就會對secret的權限生效,另外,需要在/conf.d/test.conf文件中將allowoverride後加上 authconfig,即允許用驗證的權限通過 .htaaccess文件覆蓋。
13)基於組賬號進行認證
創建.htgroups文件,裏面定義組成員的信息,如下
然後修改.htaaccess文件,類似用戶訪問控制的格式
14)Status頁面,狀態頁面
這裏去掉#並修改配置後,可以訪問本機的狀態
虛擬主機(一個主機多個站點,一個站點代表一個虛擬主機)
通常對於訪問量不是很大的訪問,一個主機劃分多個虛擬主機進行訪問。
1)制作三個虛擬主機,建立三個站點的工作目錄
2)添加三個ip地址
3)三種實現方法
1. 為每個虛擬主機準備一個ip地址(基於ip)
訪問這些虛擬地址
2. 為每個虛擬主機使用至少一個的端口(基於port)
通關端口訪問
3. 為每個虛擬主機至少準備一個FQDN(基於FQDN)
NamevirtualHost *:80 是主配置文件裏的內容,如果不修改主配置文件,也可以寫在這裏,表示啟用基於FQDN的虛擬主機訪問
另外,虛擬主機配置的位置決定了誰先被訪問,如圖website3在第一個,那麽就會放任website3,如下
Cookie
重cookie:記錄用戶的各種數據,用戶數量一旦太多,對服務器壓力就很大,這種cookie就不太合適了,而且用戶換了登陸主機後,無法加載cookie中的用戶的數據
輕cookie:只會記錄每個用戶的一個uid,並在後臺通過用戶的uid為其訪問其對應的數據,而且當用戶換了主機登陸後,依然可以加載出來用戶的數據
常見狀態碼
使用火狐瀏覽器可以方便的查看響應碼
CURL命令(常用)
-A 設置用戶代理發送給服務器
-e 選擇來源的網址
日誌如下
-H 自定義首部信息
日誌如下
-i 額外顯示頁面內容
-I 只顯示響應報文的首部信息
-D將url的header信息存放在在指定文件中
-o
下載服務器中的文件,可以指定下載完後的文件名
-O
下載服務器中的文件,文件名默認和服務器上的一樣
下載的時候進行限速
-L
進行真的跳轉,不加的話,只是顯示要跳轉的內容,但是不會真的跳轉
Mod_deflate模塊實現
定義在/etc/httpd/conf.d/name.conf文件中,作用是通過壓縮傳輸的頁面,節約寬帶,減少額外消耗的cpu,但是有些老舊的瀏覽器可能不支持,而且只能壓縮適用於壓縮的數據
Deflatecompressionlevel 默認是9,不寫這一行也是9,這裏寫的1,即1:1壓縮,也就是不壓縮
AddOutputFilterByType DEFLATE text/* 可以選擇需要壓縮的數據類型
本文出自 “11083860” 博客,請務必保留此出處http://11093860.blog.51cto.com/11083860/1974897
httpd服務學習筆記