安裝httpdjavascript
yum -y install httpdphp
服務腳本:/etc/rc.d/init.d/httpdcss
腳本配置文件:/etc/sysconfig/httpdhtml
運行目錄:/etc/httpdjava
配置文件:web
主配置文件:/etc/httpd/conf/httpd.conf正則表達式
擴展配置:/etc/httpd/conf.d/*.conf算法
Socket:80/tcp,443/tcp數據庫
文檔根目錄:/var/www/htmlapache
CGI:/var/www/cgi-bin/
日誌滾動:
日誌切割
時間、空間
Docroot:文檔根目錄
配置文件:
/etc/httpd/conf/httpd.conf
配置參數 值
配置指令不區分字符大小寫
值有可能區分大小寫
有些指令能夠重複出現屢次
配置文件格式
全局配置
主機配置:用於僅提供一個站點時
虛擬主機配置:用於提供多個站點時
配置文件語法測試
serviice httpd configtest
httpd -t
絕大多數配置修改後,能夠用過service httpd reload 來生效,若是修改了監聽的地址或端口,必須重啓服務才能生效
1.監聽套接字
Listen [IP:]port
此指令能夠出現屢次,用於指定監聽多個不一樣的套接字
Listen 80
Listen 172.16.100.7:8080
2.配置使用Keepalive
KeepAlive {On|Off}
KeepAliveTimeout 2 超時時間
MaxKeepAliveRequests 50 最大鏈接
3.MPM
多道處理模塊
httpd -l 查看編譯進內核的模塊
想使用不一樣的機制,修改配置文件便可 /etc/syconfig/httpd文件
<IfModule preforck.c>判斷模塊是否存在
StartServers 8 默認啓動的工做進程數
MinSpareServers 5 最少空閒進程數
MaxSpareServers 20 最大空閒進程數
ServerLimit 256 最大活動進程數
MaxClients 256 最大併發鏈接數,最多容許發起的鏈接請求的個數
MaxRequestsPerChild 4000 每一個子進程在生命週期內最大容許服務的最多請求個數
</IfModule>
<IfModule worker.c>
StartServers 4 啓動的子進程的個數
MaxClients 300 最大併發鏈接數,最多容許發起的鏈接請求的個數
MinSpareThreads 25 最少空閒線程數
MaxSpareThreads 75 最大空閒線程數
ThreadsPerChild 25 每一個子進程生成的線程數
MaxRequestsPerChild 0 每一個子進程在聲明週期內最大容許服務的最多請求個數
</IfModule>
四、DSO模塊的加載方式
LoadModule module_name /path/to/module
若是使用相對路徑,則對於ServerRoot所定義的位置而言
LoadMoudule php5_module /usr/lib64/httpd/modules/php.so
讓服務重載配置文件方能生效
httpd -m 列出與加載到全部DSO模塊與非DOS模塊
取消 註釋掉便可
五、配置站點根目錄
DocumentRoot /path/to/somewhere
六、頁面訪問屬性
<Direcotry "/path/to/somewhere">
Options 選項
Indexes:缺乏指定的默認頁面時,容許將目錄中的全部文件已列表形式返回給用戶:危險:慎用
FollowsymLinks:容許跟隨符號連接所指向的原始文件
None:全部都不啓用
All:全部的都啓用
ExecCGI:容許使用mod_cgi模塊執行CGI腳本
Includes:容許使用mod_include模塊實現服務器端包含(SSI)
IncludesNOEXEC:容許包含但不容許執行腳本
MultiViews:容許使用mod_negotiation實現內容協商
SymLinksIfOwnerMatch:在連接文件屬主屬組與原始文件的屬主屬組相同時,容許跟隨符號鏈接所指向的原始文件
AllowOverride
</Direcotry>
可使用正則表達式,使用~
7.基於主機的訪問控制
<Direcotry "/path/to/somewhere">
Options
AllowOverride
None 不由用下面
order 次序,寫在後面的爲默認
allow,deny: 沒有容許的都拒絕
deny,allow:沒有拒絕的都容許
Allow from
Deny from
</Direcotry>
若是都匹配或都不匹配時以默認爲準
不然則以匹配到的爲準
Allow from
Deny from
IP,Network Address
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
基於用戶作訪問控制
8.定義默認主頁面
DirectoryIndex 依次查找
9.用戶目錄
若是指望讓每一個用戶均可以建立我的站點:http://Server_IP/~Username/
userdir disablied:禁止
userdir public_html:
public_html是用戶家目錄下的目錄名稱,全部位於此目錄中的文件都可經過前述的訪問路徑進行訪問
用戶的家目錄得賦予進行httpd進程的用戶擁有執行權限
setfacl -m u:apache:x ~Username
十、配置日誌功能
/var/log/http/
access.log:訪問日誌,其須要記錄的內容須要自定義
error.log
訪問日誌:
CustomLog "/path/to/log_file" LogFormat
LogFormat定義日誌格式
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
%h:客戶端地址
%l:遠程的登陸名,一般爲-
%u:認證時的遠程用戶名,一般爲-
%t:接收到的請求時的時間,爲標準英文格式時間+時區
\" :轉義,顯示""
%r:請求報文的起始行
%>s:響應狀態碼,
%b:以字節響應報文的長度,不包含http報文
%{Header_Name}i:記錄指定請求報文首部的內容(value)
%u:請求的URL
詳情請參考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
錯誤日誌:
ErrorLog
十一、路徑別名
Alias /alias/ "/path/to/somewhere"
意味着訪問http://Server_IP/alias時,其頁面文件來自於/path/to/somewhere中
十二、指定默認的字符集
AddDefaultCharset
13.腳本路徑別名(CGI接口)
URL-->FileSystem Directory
CGI:Common Gateway Interface(通用網關接口)使WEB能夠跟一個應用程序進行通訊,從通訊環境中得到結果。
CGI是不安全的
在第一行寫入
echo 「Content-Type:text/html:
mod_alias,mod_cgi
ScriptAlias /URL/ "/path/to/somewhere" somewhere下的文件能夠被執行
也能夠在目錄中實現
格式通常爲
cat << EOF
Content-Type:text/html
<pre>
The time is : `date`.
</pre>
EOF
14.基於用戶的訪問控制
虛擬用戶:不是系統用戶,只是爲了獲取某種資源類型的一種虛擬的用戶
文件/etc/httpd/conf/.htpasswd
SQL數據庫
dbm:
ldap:輕量級目錄訪問協議
認證類型(auth):
basic:基本認證,帳號和密碼明文發送
digest:摘要認證,hash編碼以後發送
認證提供者(authentication provider):帳號和密碼的存放位置
authn
受權機制(authorization):根據什麼進行受權
案例:基於文件,作基本認證根據用戶和組進行受權
一、編輯配置文件,爲須要認證的目錄配置認證機制
<Directory "/www/htdocs/fin">A
options None
AllowOverride AuthConfig 使用認證配置
AuthType Basic 使用基本認證
AuthName "Private Area" 質詢時標題
AuthUserFile /etc/http/conf/.htpasswd 密碼的存放位置
Require vaild-user 可訪問的用戶
</Directory>
二、使用htpsswdm命令使用生成認證庫
htpasswd
-c 建立密碼,建立第一個用戶時使用
htpasswd -c -m /etc/http/conf/.htpasswd tom
-m MD5格式存放
-b 批量模式
-D 刪除用戶
三、基於組認證
<Directory "/www/htdocs/fin">
options None
AllowOverride AuthConfig 使用認證配置
AuthType Basic 使用基本認證
AuthName "Private Area" 質詢時標題
AuthgroupFile /etc/http/conf/.htpasswd 密碼的存放位置
Require group GroupName 可訪問的用戶
</Directory>
先建立用戶,在建立組
組文件:
組名:用戶1 用戶2 用戶3
15.虛擬主機
一個物理服務器提供多個站點;使用虛擬主機得先取消中心主機
基於不一樣的IP實現不一樣的虛擬主機
變化IP
基於不一樣的port實現不一樣的虛擬主機
變化port
基於不一樣主機名實現不一樣的虛擬主機
變化ServerName的值
經過請求報文中的HOST來實現不一樣的虛擬主機訪問
<VirtualHost IP:port>
SeverName
DocumentRoot ""
<Directory "">
</Directory>
ServerAlias
ServerAdmin
</VirtualHost>
將全局中的DocumentRoot""註釋掉
虛擬主機的單獨配置
用戶認證
訪問日誌
錯誤日誌
別名
腳本別名
基於IP認證機制,基於用戶認證
http協議認證、表單認證
16.https協議
x509.3證書格式
證書格式的版本號
證書序列號
證書籤名算法
證書頒發者
有效期
持有者的名稱
持有者的公鑰
CA的ID
持有者的ID
其餘擴展信息
基本約束
證書策略
密鑰的使用限制
CA簽名
ssl握手要完成的工做
交換協議版本號
選擇一個雙方都支持的加密方式
對兩端實現身份驗證
密鑰交換
http:文本協議 80/tcp
https:二進制格式的協議 443/tcp
SSL會話基於IP地址進行:不支持在基於主機名的虛擬主機上實現
客戶端驗證服務器端證書時:
日期檢查:證書是否在有效期內
證書頒發者的可信度
證書的簽名檢測:
持有者的身份檢測
httpd:基於mod_ssl模塊實現對ssl的支持
能夠在/etc/pki/tls/certs
openssl s_client
-connet:驗證的地址:端口
-CAfile:CA證書的路徑
1)、準備好服務器的私鑰和證書
2)、安裝mod_ssl模塊
yum -y install mod_ssl
3)、配置/etc/httpd/conf.d/ssl.conf
配置實用ssl的虛擬主機
ServerName
DocunmentRoot
配置證書和私鑰
SSLCertificatFile 證書文件
SSLCertificatKeyFile 密鑰文件
4)、重啓httpd服務
5)、測試
openssl s_client -connet:驗證的地址:端口 -CAfile:CA證書的路徑
URL Rewrite:URL重寫
1七、服務器status頁面
內生的status信息,且此信息能夠經過web予以顯示
基於URL訪問屬性
<Location [~] "">
</Location >
基於單個文件的訪問屬性
<File [~] "">
</File>
也可使用<LocationMatch "">
</LocationMatch>來實現正則表達式的配置
若是要配置其屬性的URL能映射到某具體文件系統路徑,建議使用<Directory>
處理器:當文件被調用時,Apache內部表現形式:通常每種文件類型都有其隱式處理器;不然須要本身定義
顯式的定義使用的處理器:SetHandler
<Location /URL>
setHeandler server-status
</Location>
定義訪問控制機制
基於IP控制
基於用戶控制
示例:
<Location /server-status>
SetHandler sever-status
AuthType Basic
AuthName "Sever Status"
AuthUserFile "/etc/http/conf/.htpasswd"
Require valid-user
Order deny,allow
Allow from all
</Location>
1八、ab工具的初步使用
-c 模擬的併發數
-n 模擬的總請求數
通常併發數應該小於等於請求數
http_load webbench seige(只作參考)
tcp_copy
1九、使用mod_deflate模塊壓縮頁面優化傳輸速度,能夠寫爲一行,也能夠寫多行,默認爲gzip
SetOutputFilter DEFLATE
# mod_deflate configuration
<IfModule mod_deflate.c>
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
# Level of compression (Highest 9 - Lowest 1)默認爲6
DeflateCompressionLevel 9
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
</IfModule>
擴展功能
apachectl
Apache HTTP服務控制工具
ab
Apache HTTP服務器性能測試工具
apxs
Apache 擴展工具
configure
配置源代碼
dbmmanage
爲基本認證建立和更新DBM格式的用戶認證文件
htcacheclean
清理磁盤緩存
htdigest
爲摘要認證建立和更新用戶認證文件。
htdbm
操做 DBM 密碼數據庫。
htpasswd
爲基本認證建立和更新用戶認證文件。
httxt2dbm
爲 RewriteMap 建立 dbm 文件。
logresolve
將 Apache 日誌文件中的 IP 地址解析到主機名稱。
rotatelogs
不關閉 Apache 而切換日誌文件。
suexec
執行外部程序前切換用戶。
20.資源限定
軟限制:能夠超出的限制,但僅能超出必定時長
硬限制:絕對不能超出的限制
ulimit:只能修改軟限制
-n [N]:顯示或限制能打開的最大的文件句柄數,
-u [N]:所可以打開的最大進程數
若是修改硬限制
/etc/security/limits.conf,擴展配置etc/security/limits.d/*.conf
對誰進行限定 類型 要限定的選項 值