⒈ 源碼包安裝httpd。
⑴、靜態默認安裝,命令如下:
完成後,先查詢安裝了那些模塊命令如下:
再看模塊是否激活,如下圖:
可見模塊沒有被激活,若想添加模塊了,可用如下命令加載:
接着可看到模塊被加載激活了,如下:
⑵、動態安裝且加載所有模塊,命令如下:
完成後可以看到模塊安裝加載情況如下:
通過對比,推薦安裝時採取動態完全安裝。
⒉ apache配置文件參數詳解。
這整個解釋都是針對系統Cent OS 5.0安裝時自帶的apache所進行的。
⑴、先了解一下apache的相對結構。
/etc/httpd/conf/httpd.conf:主配置文件,其主要設定以它爲主;
/etc/httpd/conf.d/*.conf:額外參數配置,如果你不想修改原始配置文件httpd.conf的話,可以將你自己的設置獨立出來,如創建爲/etc/httpd/conf.d/child.conf,apache啓動時就被載入;
/usr/lib/httpd/modules/:apache支持很多模塊,你所想要的模塊都放在其中;
/var/www/html/:默認‘首頁’所在目錄,當你輸入http://localhost時所顯示資料所在目錄;
/var/www/error/:配置錯誤或瀏覽器要求資料錯誤時,瀏覽器上出現的錯誤訊息以這個目錄預設爲主;
/var/www/icons/:它提供 Apache默認給予的一些小圖示,你可以隨意使用,當你輸入http://localhost/icons/時所顯示的資料所在;
/var/www/cgi-bin/:默認給一些可執行的CGI(網頁程序)程序放置的目錄;
/var/log/httpd/:默認的apache登錄信息都放在這裏,對流量較大的網站,這個目錄要小心設置;
/usr/sbin/apachectl:apache的主要啓動文件,其實是shell script;
/usr/sbin/httpd:apache的二進制啓動文件。
⑵、主配置文件httpd.conf詳解。
其基本設定格式如下,如例子對目錄/var/www/html/的設定:
①、httpd.conf設置分三部分,首先針對全局環境參數(Global Environment):
ServerTokens OS告知用戶端WWW服務器的版本與操作系統
ServerRoot "/etc/httpd"Apache安裝路徑
PidFile run/httpd.pid放置PID的目錄,方便軟件管理,是相對路徑
Timeout 120持續連接如果等待超過120秒則連接斷開
KeepAlive Off是否允許持續性的連接,預設爲否
MaxKeepAliveRequests 100保持的連接的人數,改成0就是說沒有人數的限制
KeepAliveTimeout 15在允許KeepAlive條件下,保持連接的超出時間
上面是兩組與服務器連接資源有關的設置,分爲worker與prefork,兩組的設定都是相似的,httpd啓動時只採用一組設定,/usr/sbin/httpd執行的是prefork組、/usr/sbin/httpd.worker執行的是worker組,預設爲prefork組,可在/etc/sysconfig/httpd中查詢使用那個組。
Listen 80監聽的端口號
LoadModule access_module modules/mod_access.so
……(下面省略)顯示載入的模塊組
Include conf.d/*.conf使得目錄/etc/httpd/conf.d/下的配置文件*.conf都會被讀入
User apache
Group apache由誰啓動Apache服務器
②、接着是針對“主”服務配置(’Main’ server configuration):
ServerAdmin root@localhost網頁出錯給誰發信通知
UseCanonicalName Off是否使用標準主機名稱,預設爲否
DocumentRoot "/var/www/html"網頁存放的路徑,文檔的根目錄
<Directory>是針對目錄權限的設定。上面前一組是針對httpd的預設環境而來的,是“/”的設定,設置很嚴格;後一組是針對根目錄/var/www/html的設定。幾個設置的解釋如下:
Options表示目錄內能進行的動作,設置有None、All或Indexes、FollowSymLinks、ExecCGI、Includes、MultiViews選項的任意組合。None表示只能瀏覽;All則可以做任何事,但不包括MultiViews;Indexes表示在無首頁檔案時,顯示整個目錄下的檔案名稱;FollowSymLinks讓此目錄下的鏈接文件可鏈接出此目錄外;ExecCGI讓次目錄具有執行CGI程序的權限;Includes讓一些Server-Side Include程序可以執行;MultiViews與語系資料(language priority)有關。
AllowOverride表示是否允許額外配置文件.htaccess的權限啓用,覆蓋httpd.conf相關的設置,設置有ALL、AuthConfig、Indexes、Limits、None。ALL表示完全啓用;AuthConfig僅有網頁認證時啓用;Indexes允許index方面的啓用;Limits允許使用者利用Allow、Deny與Order管理可瀏覽的權限;None表示文件.htaccess失效。
Order決定是否可被瀏覽的權限設定,分deny,allow與allow, deny,deny,allow以deny優先處理,無寫入規則時預設爲allow;allow, deny則相反。Allow from all則開放所有瀏覽權限。
這是配置個人用戶主目錄的設定,預設關閉
把所有以.ht開頭的文件做限制,阻止Web客戶查看
TypeConfig conf/mime.types定義在哪裏查詢mime.types文件
DefaultType text/plain定義當不能確定MIME類型時服務器提供的默認MIME類型,當服務主要包含text或HTML文檔,“text/plain”是一個好的選擇,如果大多是二進制文檔,諸如軟件或圖像,應使用 “application/octer-stream”
模塊mod_mime_magic允許服務器從自己定義類型的文件中使用不同的線索(hints),這個MIMEMagicFile指令定義hints定義所在的文件
HostnameLookups Off指定記錄用戶端是名字還是IP地址,默認值爲off,記錄IP地址
ErrorLog logs/error_log記錄錯誤的日誌文件位置
LogLevel warn控制記錄在錯誤日誌文件中的日誌信息數量,可能值有debug、info、notice、warn、error、crit、alert、emerg
定義日誌格式
CustomLog logs/access_log common指定接入日誌文件的定位和格式,如果沒有在<VirtualHost>內定義這個指令,傳輸信息將記錄在這裏,若定義了這個指令,則記錄在你指定的位置
ServerSignature On隨意的添加包含服務器版本和虛擬主機名字一行信息到server-generated輸出頁中
Alias /icons/ "/ var/www/icons/" 使用別名
設置目錄/var/www/icons權限
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 本質上與Aliases一樣,除了這裏的文檔在請求時做爲程序處理處理以外
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable控制server-generated目錄列表顯示特徵
AddIcon* 指令告訴服務器不同擴展名的圖象文件如何顯示,只適用於FancyIndexed指令
DefaultIcon /icons/unknown.gif爲那些沒有顯式定義圖標的文件提供處理
ReadmeName README.html指定服務器默認查找的README文件的名字,並添加到目錄列表中
HeaderName HEADER.html指定目錄列表前綴文件的文件名
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t指定目錄索引忽略的和不包含在列表中的文件名集合,支持shell類型的通配符
指定文檔的語言
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW以優先次序遞減的方式排列語言
ForceLanguagePriority Prefer Fallback在通訊的情況下或沒有可接受的語言匹配的情況下提供一個結果頁
AddDefaultCharset UTF-8爲發送出的所有頁指定默認的字符集
AddType允許你爲指定的文件類型添加或覆蓋mime.types文件中配置的MIME,AddHandler允許你映射確定的文件擴展名到“handlers”,與文件類型無關的行爲,這既能編譯到服務器中也可以添加到Action指令中。
AddHandler type-map var這是默認的設定以允許Apache的“It Worked”頁能多種語言分發
使得能在在服務器端分析包含(SSI)的.shtml文檔
這是一個國際化的出錯應答設置
更改標準的HTTP應答行爲以處理己知的瀏覽器問題
③、虛擬機配置(Virtual Hosts):
這是一個虛擬機設置實例配置,沒啓用。
3、apache的應用。
⑴、apache的啓動。
啓動httpd有兩種方式,如下圖所示,可以查詢日誌看到是否成功啓動:
啓動後,在瀏覽器中輸入本機地址顯示如圖:
這是一個apache的歡迎界面,因爲根目錄/var/www/html爲空,當我在根目錄裏創建一個html文件後,如下圖:
此時網頁內容變了,如下:
⑵、配置個人用戶主頁。
先修改配置文件找到配置改爲。
記得重啓,如圖:
接着創建個人用戶目錄,添加測試內容,注意權限修改(很重要),如圖:
連接測試,發現打不開,如圖:
原來SELinux沒開啓對httpd的支持,作如下改變:
此時測試成功,如圖:
由於首頁的Options內有FollowSymLinks參數,因此也可以直接使用鏈接文件連接到其他目錄,如圖所示:
測試如圖:
⑶、啓動某個目錄的CGI程序執行權限。
Apache默認目錄/var/www/cgi-bin放置要執行的CGI程序,其目錄權限配置如下:
將其改爲:,再找到#AddHandler cgi-script .cgi一行,修改爲:AddHandler cgi-script .cgi .pl,配置完成,重啓httpd。
接着創建測試CGI程序test.cgi且修改權限,如圖:
輸入地址成http://218.108.235.78/cgi-bin/test.cgi功測試如圖:
⑷、.htaccess與網頁認證設置。
Apache提供有認證功能,使得能輕鬆設定要保護的網頁。
①、先創建要保護的目錄及資料,如圖:
②、修改配置文件,確保存在如下配置:
這是把所有以.ht開頭的文件做限制,阻止Web客戶查看,然後添加配置如下:
③、接着在受保護目錄下建立.htaccess文件,如圖:
這些紅線參數解釋爲:AuthName顯示提示字樣;AuthType是認證類型,選擇默認的‘Basic’;AuthUserFile確定所要使用的賬號密碼文件;require接可用的賬號。
④、建立密碼文件apache.passwd,如圖:
注意文件名稱要與.htaccess文件裏的AuthUserFile一致。
⑤、測試,成功如圖:
⑸、設置虛擬主機
這裏的虛擬主機,指的是在一部主機上有多個‘主網頁’存在,實際這些網址都指向同一個IP。
①、先創建所需要的目錄,如圖:
②、配置虛擬主機,直接在目錄/etc/httpd/conf.d下建立單獨的配置文件virtual.conf,如圖:
注意,使用虛擬主機後,原本主機名稱也要寫入,圖上紅線標示的就是原本主機。記得重啓apache。
③、測試,修改C:\WINDOWS\system32\drivers\etc\hosts文件,添加內容如下:,
使得域名能解析成IP地址。配置成功如下: