httpd配置文件解析php
這裏我用的是系統自帶的RPM包安裝的httpd-2.2.15版本的,最新版本配置可能會有所不一樣
一、模型:
高度模塊化:DSO
MPM:Multipath Processing Module //多處理模塊
prefork: 一次一個進程響應一個請求
worker:一個進程生成多個線程,一個線程響應一個請求
event:基於事件驅動,一個進程響應多個請求
二、安裝
這裏就直接rpm包安裝了,光盤上就有軟件包
yum install httpd
三、httpd安裝完後的基本信息
/etc/rc.d/init.d/httpd //服務腳本
/etc/httpd/ //運行目錄
/etc/httpd/conf //配置文件
/etc/httpd/conf/httpd.conf //主配置文件
/etc/httpd/conf.d/*.conf //擴展配置
DocumentRoot:/var/www/html //站點根目錄
CGI:/var/www/cgi-bin/
默認主頁面文件:/var/www/html/index.html
四、主配置文件結構
全局配置:對主服務器或虛擬主機都有效,且有些功能是服務器自身工做屬性;
主服務器配置:主站屬性
虛擬服務器:虛擬主機及屬性定義
五、測試配置和查看的命令
service httpd configtest //測試配置文件有沒有語法錯誤
httpd -t //同上
httpd -l //當前服務器所使用的模型及開啓模塊
httpd -D DUMP_MODULES //當前服務器支持的模塊
service httpd reload //從新加載配置文件
service httpd restart //重啓httpd服務
注意:修改配置文件後要從新加載配置文件,修改服務器監聽端口後要重啓服務
2、基本配置
配置httpd的工做屬性時,指令不區分大小寫,但有約定俗成的習慣:單詞的首字母大寫,指令的值頗有可能區分大小寫,有些指令能夠重複使用屢次。
一、配置服務器支持keep-alived(持久鏈接)
KeepAlive {On|Off} //是否支持持久鏈接
KeepAliveTimeout 2 //持久鏈接超時時間
MaxKeepAliveRequests 50 //超時時間內容許請求的次數
二、配置所選用的MPM的屬性,安裝完默認使用prefork模型
StartServers 8 //服務開啓,默認啓動的進程數
MinSpareServers 5 //最小空閒進程數
MaxSpareServers 20 //最大空閒進程數
ServerLimit 256 //對於MaxClients而言容許開啓最多的子進程數
MaxClients 256 //每一個進程最多用戶連接數
MaxRequestsPerChild 4000 //長鏈接時每一個用戶最多請求數
worker模型:要支持worker模型須要配置/etc/sysconfig/httpd,開啓如下行:
StartServers 4 //服務開啓,默認啓動的進程數
MaxClients 300 //最多同時客戶鏈接數
MinSpareThreads 25 //最少空閒進程數
MaxSpareThreads 75 //最好空閒進程數
ThreadsPerChild 25 //每一個進程開啓的線程數
MaxRequestsPerChild 0
三、配置監聽的端口:
Listen [IP:]PORT
如:Listen 172.16.100.90:80
四、配置加載模塊
# LoadModule foo_module modules/mod_foo.so
#
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
五、配置網站根目錄
DocumentRoot "/var/www/html" //指定網站的主目錄
六、配置頁面文件的訪問屬性
Options
Indexes //當訪問的路徑下無默認的主頁面時,將全部資源以列表的形式呈現給用戶,慎用!建議關閉
FollowSymLinks //是否跟隨軟鏈接文件
SymLinksifOwnerMatch //跟隨符號連接,只容許訪問運行apache的用戶有屬主權限的文件
ExecCGI: //是否容許執行CGI腳本;
All
None
七、基於客戶端訪問控制
系統默認容許全部人訪問
Order //定義allow和deny那個爲默認法則;寫在後面的爲默認法則:寫在前面的指令沒有顯示定義的即受後面的指令控制:
Order allow,deny
Allow from all //容許全部人訪問
如要配置容許172.16.0.0/16訪問,但不容許172.16.100.89訪問
Order allow,deny
Deny from 172.16.100.89 //禁用一個IP訪問
Allow from 172.16.0.0/16 //容許一個網段訪問
八、userdir我的站點
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
#UserDir disabled //註釋此項
#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
九、定義默認主頁
DirectoryIndex index.php index.jsp index.html
十、配置日誌功能
日誌有兩類:訪問日誌(格式自定義)、錯誤日誌
錯誤日誌:
ErrorLog "/path/to/error_log_file"
錯誤日誌級別debug:任意詳細信息被記錄,info:常見信息,notice:須要引發注意的信息,
warn:警告信息,error:錯誤信息,crit:藍色信息,alert:橙色信息,emery:紅色信息。
訪問日誌:
CustomLog "/path/to/custom_log_file" logformat
日誌格式:{combined|common|agent}
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
%h //主機名
%l //遠程登錄名,一般爲-
%u //用戶名
%t //請求到達的時間
%r //請求報文的起始行,方法
%s //響應狀態
%b //響應報文的大小
%{HEADER_NAME}i //記錄指定首部對應的值
%{User-Agent}i #用戶代理
十一、支持的字符集
AddDefaultCharset UTF-8
十二、路徑別名,能夠隱藏網站的真實目錄,
Alias /test/ "/www/test/" #配置別名
能夠給別名目錄定義訪問權限
Options None
AllowOverride None
Order allow,deny
Allow from 172.16.0.0/16
1三、腳本路徑別名
調用服務器上的腳本程序,但不但願腳本放在網站的目錄下
ScriptAlias /cgi-bin/ "/www/cgi-bin/" //定義cgi腳本路徑別名
# vi /wwww/cgi-bin/test.sh //寫一個測試腳本
#!/bin/bash
#cat << EOF
Content-Type:text/html
The hostname is: `hostname`. //輸出當前系統的主機名。
EOF
測試:顯示的是腳本執行後的結果
1四、基於用戶訪問控制
當你的網站或者站點的某個路徑只想讓你受權的用戶訪問時,就可使用基於用戶的訪問控制
這裏使用htpasswd命令創建用戶賬號文件
htpasswd
-c //第一次使用-c建立新文件,不是第一次不須要使用此選項
-m //用戶密碼使用MD5加密後存放
-s //用戶密碼使用SHA加密後存放
-p //用戶密碼不加密
-d //禁用一個帳戶
-e //啓用一個帳戶
例如:
# htpasswd -c -m /etc/httpd/conf/.htpass tom
命令 選項 生成的用戶文件路徑及文件名 用戶名
# htpasswd -m /etc/httpd/conf/.htpass jerry
# 再次添加用戶時就不要使用-c選項了,不然會覆蓋以前內容先生成
1)創建用戶賬號文件
# htpasswd -c -m /etc/httpd/conf/.htpass tom
2)修改主配置文件
# vi /etc/httpd/conf/httpd.conf
DocumentRoot "/www/html" //此時網站根目錄就是/www/html
Optins Indexes
AllowOverride AuthConfig
AuthName "Oaly for employees." //登陸提示信息,可自定義
AuthType Basic //認證方式
AuthUserFile /etc/httpd/conf/.htpass //用戶賬號文件
Require valid-user //容許的用戶
Require 指定能夠訪問的用戶,能夠指定單個用戶,直接寫用戶名就能夠了,
用戶名能夠寫多個用空格分開,也能夠指定全部用戶就用 valid-user
1五、配置虛擬主機
1)註釋主服務器,添加虛擬主機
# DocumentRoot "/www/html" //註釋主服務器
NameVirtualHost 172.16.100.90:80 #開啓虛擬主機
DocumentRoot /www/web1 //虛擬主機的網站根目錄
ServerName web1.changyu.com //主機名
DocumentRoot /www/web2
ServerName web2.changyu.com
2)給虛擬主機提供測試文件
mkdir /www/web{1,2}
echo 'web1.changyu.com' > /www/web1/index.html
echo 'web2.changyu.com' > /www/web2/index.html
3)配置完後用 httpd -t 測試配置文件有沒有錯誤
4)重啓服務 service httpd restart
html