CentOS 6:html
程序環境web
配置文件:數據庫
/etc/httpd/conf/httpd.confapache
/etc/httpd/conf.d/*.conf安全
服務腳本:bash
/etc/rc.d/init.d/httpd服務器
配置文件:/etc/sysconfig/httpd併發
主程序文件:ide
/usr/sbin/httpd測試
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日誌文件目錄:
/var/log/httpd
access_log:訪問日誌
error_log:錯誤日誌
站點文檔目錄:
/var/www/html
配置文件的組成:
~]# grep "Section" /etc/httpd/conf/httpd.conf
### Section 1:Golbal Environment
### Section 2:'Main' server configuration
### Section 3:Virtual Hosts
經常使用配置:
一、修改監聽的IP和Port
Listen [IP:]PORT
省略ip表示監聽本機全部IP;Listen可重複出現屢次;
二、持久鏈接
Persistent Connection:鏈接創建,每一個資源獲取完成後不會斷開鏈接,而是繼續等待其它的請求完成;
如何斷開?
數量限制:100
時間限制:可配置
反作用:對併發訪問量較大的服務器,持久鏈接功能會使用有些請求得不到響應;
折衷:使用較短的持久鏈接時間;
httpd-2.4 支持毫秒級持久時間;
非持久鏈接
KeepAlive On|Off
MaxKeepAliveRequests #
KeepAliveTimeout #
測試:
telnet HOST PORT
GET /URL HTTP/1.1
Host:HOSTNAME or IP
三、MPM
Multipath Process Module:多道處理模塊
prefork,worker,event
httpd-2.2不支持同時編譯多個模塊,因此只能編譯時選定一個;rpm安裝的包提供三個二進制程序文件,分別用於實現對不一樣MPM支持:確認方法:
# ps aux | grep httpd
默認爲/usr/sbin/httpd,其使用prefork
查看模塊列表:
查看靜態編譯的模塊
# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
查看靜態編譯及動態裝載的模塊
# httpd -M
更換使用的httpd程序:
/etc/sysconfig/httpd
HTTPD=
重啓服務生效:
prefork的配置:
worker的配置:
PV,UV
PV:Page View
UV:User View
獨立IP量:
300*86500=40W+
四、DSO
配置指令實現模塊加載
LoadModule <mod_name> <mod_path>
模塊路徑可以使用相對地址
相對於ServerRoot(/etc/httpd)指向的路徑而言;
/etc/httpd/modules/
五、定義'Main' server的文檔頁面路徑
DocumnetRoot
文檔路徑映射:
DocumentRoot指賂的路徑爲URL路徑的起始位置;
DocumentRoot "/var/www/html"
test/index.html --> http://HOST:PORT/test/index.html
六、站點訪問控制
可基於兩種類型的路徑指明對哪些資源進行訪問控制
文件系統路徑:
<Directory " "> </Directory>
<File " "> </File>
<FileMatch " " > </FileMatch>
URL路徑:
<Location " "> </Location>
...
訪問控制機制:
基於來源地址;
基於帳號;
七、Directory中」基於來源地址「實現訪問控制
(1) Options
全部可用特性:Indexes Includes FollowSymLinks SymLkinksifOwneratch ExecCGI MultiViews
None All
Indexes:索引;
FollowSymlinks:容許跟蹤符號連接文件;
(2) 基於來源地址的訪問控制機制
Order:檢查次序
Order allow,deny
Order deny,allow
Allow from
Deny from
八、定義默認主頁面
DirectoryIndex index.html index.html.var
九、日誌設置
錯誤日誌:
ErrorLog logs/error_log
LogLevel warn
debug, info, notice, warn, error, crit
訪問日誌:
CustomLog logs/access_log combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h:客戶端IP地址;
%l:Remote logname (from identd, if supplied),-表示爲空;
%u:Remote user (from auth; may be bogus if return status (%s
) is 401);
%t:Time the request was received (standard english format),服務器收到請求的時間;
%r:First line of request,請求報文的首行信息(method url version);
%>s:響應狀態碼;
%b:響應報文的大小,單位是字節,不包括響應報文首部;
%{Referer}i:請求報文當中「referer」首部的值;當前資源的訪問入口,即從哪一個頁面中的超連接跳轉而來;
%{User-agent}i:請求報文當中「User-agent」首部的值;即發出請求用到的應用程序;
詳情:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
十、路徑別名
DocumentRoot "/www/htdocs"
http://www.magedu.com/download/bash-4.4.2-3.e16.x86_64.rpm
--> /www/htdocs/download/bash-4.4.2-3.e16.x86_64.rpm
Alias /URL/ "/PATH/TO/SOMEDIR"
Alias /bbs/ "/forum/htdocs"
http://www.magedu.com/bbs/index.html
--> /forum/htdocs/bbs
十一、設定默認字符集
AddDefaultCharset UTF-U
GBK,GB2312,GB18030
十二、基於用戶的訪問控制
認證質詢:
WWW-Authenticate:響應碼爲401,拒絕客戶端請求,並說明要求客戶提供帳號和密碼;
認證:
Authorization:客戶端用戶填入帳號和密碼後再次發送請求報文;認證經過,則服務器發送響應的資源;
認證類型:
basic:明文
digest:消息摘要
安全域:須要用戶認證後方能訪問的路徑;
應該經過名稱對其進行標識,並用於告知用戶認證的緣由;
用戶的帳號和密碼存儲於何處?
虛擬帳號:僅用於訪問某服務時用到的認證標識;
存儲:
文本文件
SQL數據庫
ldap
nis
basic認證:
(1) 定義安全域
<Directory "/www/htdocs/admin">
Options None
AllowOverride None
AuthType Basic
AuthName "Administrator home"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
Require user tom jerry
</Directory>
容許帳號文件中的全部用戶登陸訪問;
Require valid-user
(2) 提供帳號和密碼存儲(文本文件)
使用htpasswd命令進行管理
htpasswd [options] passwordfile username
-c:自動建立passwordfile,所以,僅應該在添加第一用戶時使用;
-m:md5加密用戶密碼;
-s:sha1加密用戶密碼;
-D:刪除指定用戶
(3) 實現基於組進行認證
<Directory "/www/htdocs/admin">
Options None
AllowOverride None
AuthType Basic
AuthName "Administrator home"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
AuthGroupFile "/etc/httpd/conf.d/.htgroup"
Require group GROUP1 GROUP2 ...
</Directory>
要提供:用戶帳號文件和組文件;
組文件:每一行定義一個組
GRP_NAME:user1 user2 user3
1三、虛擬主機
有三種實現方案:
基於ip:
爲每一個虛擬主機準備至少一個ip地址;
基於port:
爲每一個虛擬主機準備至少 一個專用port;實踐中不多使用;
基於hostname:
爲每一個虛擬主機作準備至少 一個專用hostname;
可混合使用上述三種方式中任意方式;
注意:通常虛擬主機莫與中心主機混用,因此,要使用虛擬主機,先禁用中心主機;
禁用中心主機:註釋DocumnetRoot
每一個虛擬主機都有專用配置:
<VirtualHost IP:PORT> #這個IP和PORT即爲虛擬主機監聽的套接字,這個套接字在全局Listen也要被定義。
SeverName
DocumnetRoot " "
</VirtualHost>
SeverAlias:虛擬主機的別名;
ErrorLog
CustomLog
<Directory "">
</Directory>
示例1:基於ip
<VirtualHost 192.168.6.129:80>
DocumentRoot /vhost/web1/htdocs
ServerName web1.magedu.com
</VirtualHost>
<VirtualHost 192.168.6.130:80>
DocumentRoot /vhost/web2/htdocs
ServerName web2.magedu.com
</VirtualHost>
示例2:基本port
<VirtualHost 192.168.6.130:80>
DocumentRoot /vhost/web2/htdocs
ServerName web2.magedu.com
</VirtualHost>
<VirtualHost 192.168.6.130:8080>
DocumentRoot /vhost/web3/htdocs
ServerName web3.magedu.com
</VirtualHost>
示例3:基於hostname # 須要開啓NameVirtualHost 192.168.6.129:80
<VirtualHost 192.168.6.129:80>
DocumentRoot /vhost/web1/htdocs
ServerName web1.magedu.com
</VirtualHost>
<VirtualHost 192.168.6.129:80>
DocumentRoot /vhost/web2/htdocs
ServerName web2.magedu.com
</VirtualHost>
<VirtualHost 192.168.6.129:80>
DocumentRoot /vhost/web3/htdocs
ServerName web3.magedu.com
</VirtualHost>
1四、內置的status頁面
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 192.168
</Location>
實現:基於帳號實現訪問控制
檢查httpd的配置有沒有錯誤:httpd -t 或 service httpd configtest