轉自:http://linuxnote.blog.51cto.com/9876511/1626161
Apache配置目錄解釋
bin:
是Apache執行文件所在的目錄。例如,Apache的主要執行文件apachectl,使用這個命令可以用來控制Apache服務器開啟或停止。還有Apache的密碼保護文件htpasswd,當用戶在某些網頁需要輸入賬號與密碼時,Apache本身提供一個最基本的密碼保護方式,該密碼的產生就是透過這個指令來完成的。
cgi-bin:
預設給一些可執行的CGI網頁程序存放的目錄,當用戶輸入http://localhost/cgi-bin/時所顯示的數據所存儲的目錄。
error:
默認錯誤應答文件目錄。如果因為服務器設置或者瀏覽器要求的數據錯誤時,在瀏覽器上出現的錯誤信息存放的位置。
icons:
這個目錄提供Apache預設給予的一些小圖示。
lib:
目錄中保存了Apache服務器運行所需的庫文件。
man:
Apache服務器配置文件的幫助手冊所在目錄。
modules:
Apache服務器所支持的動態加載模塊所在的位置。
build:
目錄是用於存放編譯后的文件的。
conf:
Apache的配置文件的目錄。
htdocs:
默認Web文檔根目錄,就是用戶存放網頁和存放默認首頁的位置。用戶通過瀏覽器中輸入地址訪問這個下面的文件,並將文件內容傳回給用戶瀏覽器,顯示成美妙的頁面供給用戶瀏覽。
Logs:
Apache日志文件存放的位置。
1.access_log(訪問日志):
記錄了所有對Web服務器的訪問活動,例如,記錄了客戶端的IP地址和在什么時間訪問了哪個頁面等信息。
2.error_log(錯誤日志文件):
記錄了所有對Web服務器的錯誤訪問活動。
manual:
目錄中保存了Apache服務器的幫助手冊文件,文件是網頁格式的,可以通過訪問Apache服務器中的/manual目錄閱讀該目錄下的幫助文件內容。
在配置Apache的時候打開conf目錄可以看到httpd.conf配置文件以及extra、original文件夾,大家會有疑問到底配置文件是哪個呢?original文件夾內也有個httpd.conf和extra文件夾。
用文件對比工具比較了兩個httpd.conf發現內容一樣,extra中的內容也一樣,再仔細觀察發現original目錄中的內容其實就是conf目錄中不含original文件夾的內容。
extra的意思是額外擴展,original的意思是源目錄文件。
最后總結:
original文件夾是配置文件的源文件備份,而真正要配置的是conf目錄下的httpd.conf文件以及extra目錄的額外擴展配置。
Apache服務器配置庫文件目錄
/usr/local/apache2/conf/httpd.conf Apache主配置文件
/usr/local/apache2/conf/extra/ 擴展及模塊配置文件目錄
httpd-autoindex.conf 配置目錄列表的輔配置文件
httpd-dav.conf 配置DAV的輔配置文件
httpd-default.conf 配置與Apache服務自身相關的輔配置文件
httpd-info.conf 配置用於服務器信息和狀態顯示的輔配置文件
httpd-languages.conf 配置語言支持的輔配置文件
httpd-manual.conf 配置提供Apache文檔訪問的輔配置文件
httpd-mpm.conf 配置多路處理模塊(MPM)的輔配置文件
httpd-multilang-errordoc.conf 配置多語言錯誤應答的輔配置文件
httpd-ssl.conf 配置SSL模塊的輔配置文件
httpd-userdir.conf 配置用戶主目錄的輔配置文件
httpd-vhosts.conf 配置虛擬主機的配置文件
httpd.conf主配置文件內參數詳解:
ServerRoot"/usr/local/apache2"
服務器配置文件的目錄,編譯安裝的時候—prefix指定的目錄
Listen 80
服務所監聽的端口,默認是80
User daemon
實際服務於請求的子進程運行時的用戶
Group daemon
請求提供服務的Apache子進程運行時的用戶組
ServerAdmin you@example.com
設置在所有返回給客戶端的錯誤信息中包含的管理員郵件地址
ServerName localhost:80
設置服務器用於辨識自己的主機名和端口號
DocumentRoot"/usr/local/apache2/htdocs"
設置Web文檔根目錄
<Directory />
Options FollowSymLinks //配置在特定目錄中可以使用哪些特性
AllowOverride None //確定運行已存在於.htaccess文件中的指令類型
Order deny,allow //設置訪問控制順序,這里參數表示先拒絕后允許
Deny from all//拒絕所有IP或主機訪問除了all外可以設置IP、網段、域名、通配符
</Directory>
對某個目錄或子目錄都有效。任何可以在”directory”作用域中使用的指令都可以使用。Directory-path可以是一個目錄的完整路徑,也可以說包含了Unix shell匹配語法的通配符字符串。在通配符字符串中,”?”匹配單個字符,”*”匹配任何字符序列。也可以使用”[]”來確定字符范圍。以上通配符都不能匹配”/”字符。以</Directory>指令結束。
<IfModuledir_module>
DirectoryIndex index.html //Apahce自動運行index.html文檔
</IfModule>
封裝根據指定的模塊是否啟用而決定是否生效的指令。
語法:<IfModule [!]module-file|module-identifier> ...</IfModule>
module-file是指編譯模塊時的文件名,比如mod_rewrite.c 。
module-identifier是指模塊的標識符,比如mod_rewrite 。
在<IfModule>配置段中的指令僅當測試結果為真的時候才進行處理,否則所有其間的指令都將被忽略。
DefaultType text/plain
設定默認MIME內容類型
ErrorLog"logs/error_log"
錯誤日志存放位置
CustomLog logs/access_logcombined
指定訪問日志及使用的格式
</IfModule>
ScriptAlias /cgi-bin/"/usr/local/apache-2.2.6/cgi-bin/"
設定默認CGI腳本目錄及別名
<IfModulecgid_module>
Scriptsock logs/cgisock
在以線程式MPM(worker)運行的Apache中設置用來與CGI守護進程通信的套接字文件名前綴
</IfModule>
<Directory"/usr/local/apache-2.2.6/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
設定默認CGI腳本目錄的屬性
DefaultType text/plain
設定默認MIME內容類型
<IfModulemime_module>
TypesConfig conf/mime.types
指定MIME類型映射文件
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
增加.Z .tgz的類型映射
</IfModule>
EnableMMAP on
啟用內存映射
EnableSendfile on
使用操作系統內核的sendfile支持來將文件發送到客戶端
Includeconf/extra/httpd-mpm.conf
指定多路處理模塊(MPM)配置文件並將其附加到主配置文件
Includeconf/extra/httpd-multilang-errordoc.conf
指定多語言錯誤應答配置文件並將其附加到主配置文件
Include conf/extra/httpd-autoindex.conf
指定目錄列表配置文件並將其附加到主配置文件
Includeconf/extra/httpd-languages.conf
指定語言配置文件並將其附加到主配置文件
Includeconf/extra/httpd-userdir.conf
指定用戶主目錄配置文件並將其附加到主配置文件
#Includeconf/extra/httpd-info.conf
指定用於服務器信息和狀態顯示的配置文件並將其附加到主配置文件
#Include conf/extra/httpd-manual.conf
指定提供Apache文檔訪問的配置文件並將其附加到配置文件
#Includeconf/extra/httpd-dav.conf
指定DAV配置文件並將其附加到主配置文件
Includeconf/extra/httpd-default.conf
指定與Apache服務自身相關的配置文件並將其附加到主配置文件
Includeconf/extra/httpd-deflate.conf
指定mod_deflate壓縮模塊配置文件並將其附加到主配置文件
Includeconf/extra/httpd-expires.conf
指定mod_expires模塊配置文件並將其附加到主配置文件
#Includeconf/extra/httpd-vhosts.conf
指定虛擬主機配置文件並將其附加到主配置文件
Includeconf/extra/httpd-ssl.conf
指定SSL配置文件並將其附加到主配置文件
<IfModulessl_module>
SSLRandomSeed startupbuiltin
SSLRandomSeed connect builtin
</IfModule>
SSL默認配置
httpd-autoindex.conf 配置目錄列表的輔配置文件
IndexOptions FancyIndexing HTMLTable VersionSort
與目錄索引有關的設置項目
Alias /icons/"/usr/local/apache2/icons/"
使用別名“/icons/”來表示FancyIndexed目錄列表,如果你不使用、
AddIcon*
指令告訴服務器不同擴展名的圖象文件如何顯示,只適用於FancyIndexed指令
DefaultIcon/icons/unknown.gif
為那些沒有顯式定義圖標的文件提供處理
ReadmeNameREADME.html
指定服務器默認查找的README文件的名字,並添加到目錄列表中
HeaderNameHEADER.html
指定目錄列表前綴文件的文件名
IndexIgnore.??* *~ *# HEADER* README* RCS CVS *,v *,t
指定目錄索引忽略並且不包含在列表中的文件名集合,支持shell類型的通配符。
httpd-dav.conf 配置DAV的輔配置文件
DavLockDB"/usr/local/apache2/var/DavLock"
用戶驗證需要,不可缺少,且需要為運行apache的用戶可執行權限。
Alias /uploads"/usr/local/apache2/uploads"
設置一個別名(虛擬目錄),當用戶訪問http://IP/uploads網址時,實際上是指向服務器的/usr/local/apache2/uploads 類似創建一個快捷方式
BrowserMatch *
設置瀏覽器匹配
httpd-default.conf 配置與Apache服務自身相關的輔配置文件
Timeout 300
超時時間為300秒,服務器在斷定請求失敗前等待的秒數
KeepAlive On
提供長效的HTTP會話,用以在同一個TCP連接中進行多次請求
MaxKeepAliveRequests 100
限制了當前啟用Keepalive時每個連接允許的請求數量
KeepAliveTimeout 5
Apache在關閉持久連接前等待下一個請求的秒數
UseCanonicalName Off
會將ServerName設置的域名用於所有的自引用URL、SERVER_NAME、CGI中的SERVER_PORT AccessFileName .htaccess URL重寫、自定義錯誤頁面、MIME類型配置以及訪問權限控制等
ServerTokensFull
應答頭是否包含關於服務器操作系統類型和編譯進的模塊的描述信息
ServerSignature On
用來配置服務器端生成文檔的頁腳(錯誤信息、mod_proxy的FTP目錄列表、mod_info的輸出)。使用該指令來啟用這個頁腳主要在於處於一個代理服務器鏈中的時候,用戶基本無法辨識出究竟是鏈中的哪個服務器真正產生了返回的錯誤信息。
HostnameLookups Off
該選項指定是否記錄與Apache服務器連接的客戶端名稱
httpd-info.conf 配置用於服務器信息和狀態顯示的輔配置文件
<Location URL路徑|URL>
//選項權限等設置
</Location>
提供基於URL的訪問控制,配置完全獨立文件系統之外的操作,這樣會導致服務器受攻擊。它不能用於針對文件系統的訪問控制,因為可能會有幾個不同的URL指向文件系統中的同一個文件,所以這樣的控制常常會被容易的繞過,一般拒絕多有客戶訪問。
httpd-languages.conf 配置語言支持的輔配置文件
AddLanguage *
為主機設置不同的語言
LanguagePriority *
語言優先級
ForceLanguagePriority Prefer Fallback
首先取一個可用的語言類型,若找不到,則機器試圖使用最接近的語言
AddCharset *
通常情況下使用文件擴展名來判斷字符設置
httpd-manual.conf 配置提供Apache文檔訪問的輔配置文件
在服務器上提供文件訪問
httpd-mpm.conf 配置多路處理模塊(MPM) 的輔配置文件
<IfModule 模塊>
//參數,選項
</IfModule>
其中的指令只有當服務器中存在特定的模塊時才有效,或是被靜態地編譯到了服務器,或是被動態地載進服務器。
httpd-multilang-errordoc.conf 配置多語言錯誤應答的輔配置文件
多語言錯誤文檔設定
httpd-ssl.conf 配置SSL模塊的輔配置文件
Listen 443
SSL監聽端口
AddTypeapplication/x-x509-ca-cert .crt
AddTypeapplication/x-pkcs7-crl .crl
證書和CRLs的MIME類型設定
SSLPassPhraseDialog builtin
密碼對話框:配置密碼對話框的輸入程序。篩選對話框程序必須在標准輸出上提供密碼短語。builtin是內建的終端對話框
SSLSessionCache "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
進程間的會話緩存:一是會話緩存機制,二是超時時間。
SSLMutex "file:/usr/local/apache2/logs/ssl_mutex"
配置內部進程同步所使用的SSL引擎互斥信號的路徑
SSLEngine on
SSL Engine Switch:SSL是否啟用
SSLCertificateFile"/usr/local/apache2/conf/server.crt"
在一個PEM編碼的證書中指出SSL證書文件。如果證書被加密,那么需要你需要被提示密碼短語。注意殺掉-HUP后將再次提示。記得如果同時用RSA和DSA證書,你要在並行配置兩個(也允許使用DSA密碼等)
SSLCertificateKeyFile"/usr/local/apache2/conf/server.key"
服務器私鑰。如果key不能和證書結合,使用下面指令指定一個key文件。記得如果同時用RSA和DSA證書,你要在並行配置兩個(也允許使用DSA密碼等)
httpd-userdir.conf 配置用戶主目錄的輔配置文件
UserDir public_html
用戶主目錄設置:目錄名是當一個請求到達時追加到用戶的家目錄。注意你必須為這些目錄設置默認的訪問控制
httpd-vhosts.conf 配置虛擬主機的配置文件
如果要保留多個域名/主機在你的服務器上,你可以為它們設置虛擬主機。大部分的配置使用基於域名的虛擬主機,所以不需要擔心IP地址問題,這一點可以在下面通過星號來表示。
提供了虛擬主機實例
Apache中prefork和worker兩種工作模式的區別
worker模塊占用的內存較小,對於流量大的網站來說,是一個比較好的選擇。
prefork雖然占用比較大的內存,不過速度和worker差異並不大,而且prefork
內存使用設計較為優秀,可以在很多無法提供debug的平台上面進行自我排錯,
所以默認的模塊就是用的prefork這個。
簡單的說,worker是基於線程的工作模式,prefork是基於進程的工作模式
worker會派生出一些進程,每個進程下啟動多個線程來提供服務,
worker的進程不會提供服務,他是專門用來管理進程的,網絡上有的文檔中說到
基於worker模式下的Apache如果某一個進程下的某一個線程崩潰,那么這個進程
下面所有的線程將全部崩潰掉,然后由管理進程來重啟線程。工作在worker模式下的
Apache可以大大的提高並發能力。但是線程安全性較差,如果使用worker模式的Apache
不如選擇使用同樣工作在線程下的Nginx來替代。
prefork並不支持很大的並發處理能力
配置虛擬主機注意事項:
注意1:
NameVirtualHost 指定虛擬主機所使用的IP地址或域名,但是最好是IP地址。使用基於域名的虛擬主機時,NameVirtualHost是必要的指令。NameVirtualHost可以定義多個。
注意2:
所有符合NameVirtualHost或<VirtualHost>標簽定義的請求,都會被作為虛擬主機處理,而主服務器將不理會。NameVirtualHost定義了而<VirtualHost>標簽沒有定義的的請求,服務器會找不到相應的虛擬主機而將無法處理。所以每個NameVirtualHost定義的參數至少要有一個<VirtualHost>相匹配。注意3:
如果設置NameVirtualHost 或<VirtualHost>為*:80的話,所有針對80端口的請求,都會被虛擬主機處理,請求會根據域名指向某個虛擬主機。如果有來自80端口的請求,而所請求的域名沒有被配置為虛擬主機,那將指向第一個虛擬主機。這樣主服務器將無法收到來自80端口的任何請求。為此也要為主服務器配置一個虛擬主機。
DocumentRoot 網站目錄(注意:如果網站目錄中的路徑有空格,請在路徑兩端加上雙引號)ServerName 要綁定的域名(必填)
ServerAlias 要綁定的虛擬主機的別名。(可選,如果多個域名,中間以空格分隔,如果沒有,則去掉該行)支持*,?兩種通配符,比如*.abc.com,表示任意一個abc.com的二級域名都可訪問。CustomLog 用戶日志文件(可選,如果不需要,則去掉該行)ErrorLog 錯誤日志(可選,如果不需要,則去掉該行)
注意4
虛擬主機中一定要添加
<Directory 目錄>
Order allow,deny
Allow from all
</Directory>
因為默認是拒絕所有,如不添加,客戶端將無權限訪問。