一,、Apache概述安裝1. 介紹Apache HTTP Server(簡(jiǎn)稱Apache)是Apache軟件基金會(huì)的一個(gè)開(kāi)源的網(wǎng)頁(yè)服務(wù)器,是世界使用排名第一的Web服務(wù)器軟件,。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上,,由于其跨平臺(tái)和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一,。 apache的服務(wù)名稱是httpd 2. 安裝 [root@compy ~]# yum -y install httpd
3. 快速入門3.1 apache基本管理 # apache狀態(tài)管理
3.2 站點(diǎn)根目錄apache默認(rèn)站點(diǎn)根目錄: 3.3 apache服務(wù)目錄介紹 # /etc/httpd/
3.4 apache用戶apache在安裝后會(huì)創(chuàng)建一個(gè)叫做apache的用戶,, apache的子進(jìn)程就是用這個(gè)用戶運(yùn)行的 [root@compy www]# tail -1 /etc/passwd
4.apache基本概念4.1 apache進(jìn)程
查看apache相關(guān)進(jìn)程: [root@compy html]# ps aux | grep httpd
其中root運(yùn)行的是主進(jìn)程,apache身份運(yùn)行的是子進(jìn)程,,主進(jìn)程的id保存在/etc/httpd/run/httpd.pid文件內(nèi),。真正用來(lái)處理web請(qǐng)求的是子進(jìn)程,主進(jìn)程用來(lái)管理子進(jìn)程,。 4.2 apache模塊
查看模塊 [root@compy html]# httpd -M
二、apache配置詳解及實(shí)踐1,、配置文件說(shuō)明
1.2 配置文件格式 #directive(指令) value(值)
2,、配置項(xiàng)詳解2.1 ServerRoot服務(wù)所在目錄的路徑,不需要做修改 ServerRoot "/etc/httpd"
2.2 Listen監(jiān)聽(tīng)端口 #Listen 0.0.0.0:80
配置語(yǔ)法
實(shí)踐 # 1. 修改端口號(hào)
2.3 Include導(dǎo)入配置文件 Include conf.modules.d/*.conf
2.4 IncludeOptional和include功能相同,,都是導(dǎo)入配置文件的,。區(qū)別是IncludeOptional導(dǎo)入的路徑有問(wèn)題時(shí)會(huì)被忽略。不會(huì)報(bào)錯(cuò),。 IncludeOptional conf.d/*.conf
2.5 User和Grouphttpd服務(wù)子進(jìn)程啟動(dòng)時(shí)的賬號(hào)和組,,這個(gè)不用修改 User apache
2.6 ServerAdmin服務(wù)運(yùn)行時(shí)的管理員郵箱地址 ServerAdmin root@localhost
2.7 DocumentRoot站點(diǎn)根目錄 DocumentRoot "/var/www/html"
語(yǔ)法
實(shí)踐 #DocumentRoot "/var/www/html"
2.8 Directory確定訪問(wèn)目錄位置,標(biāo)簽配置。標(biāo)簽內(nèi)是設(shè)置針對(duì)該目錄的訪問(wèn)權(quán)限 <Directory "/var/www/html">
實(shí)踐 # 1. 去掉Indexes查看效果,注意改完配置后要重啟http服務(wù)
2.9 IfModule以特定模塊存在與否為條件的處理指令 # 如果dir_module存在,,執(zhí)行DirectoryIndex
語(yǔ)法
默認(rèn) DirectoryIndex index.html 實(shí)踐 # 在站點(diǎn)根目錄下創(chuàng)建一個(gè)index.html
2.10 Files包含適用于匹配文件名的指令 <Files ".ht*">
2.11 ErrorLog錯(cuò)誤日志記錄位置 ErrorLog "logs/error_log"
2.12 LogLevel錯(cuò)誤日志記錄級(jí)別 LogLevel warn
錯(cuò)誤級(jí)別選項(xiàng)
2.13 IfModule log_config_module訪問(wèn)日志配置模塊 <IfModule log_config_module>
日志格式說(shuō)明
2.14 IfModule alias_module文檔映射 <IfModule alias_module>
Redirect 外部重定向 Alias 將url映射到文件系統(tǒng)個(gè)位置 ScriptAlias 將url映射到CGI腳本 2.15 AddDefaultCharset響應(yīng)內(nèi)容的編碼格式 AddDefaultCharset UTF-8
三,、虛擬主機(jī)配置虛擬主機(jī)指的是在單一機(jī)器上運(yùn)行多個(gè)網(wǎng)站. 虛擬主機(jī)可以“基于IP”,,即每個(gè) IP 一個(gè)站點(diǎn); 或者“基于域名”,, 即每個(gè) IP 多個(gè)站點(diǎn)。這些站點(diǎn)運(yùn)行在同一物理服務(wù)器上,。 虛擬機(jī)配置語(yǔ)法 <VirtualHost addr[:port] [addr[:port]] ...>
1,、基于域名 # 實(shí)踐1,配置文件:/etc/httpd/conf.d/iplinux1.conf
2,、基于ip # 實(shí)踐1,,配置文件:/etc/httpd/conf.d/iplinux1.conf
四,、rewrite重寫
1演示現(xiàn)象,,解決效果,,得出rewrite概念 2-1如何實(shí)現(xiàn)具體講解步驟,可以帶入原理 2-2實(shí)踐 3剖析實(shí)現(xiàn)原理,,提升知識(shí)面 4小結(jié) 1,、rewrite需求我們?cè)谑褂肁pache做為Web服務(wù)器時(shí),有時(shí)候出于SEO優(yōu)化或者是url路徑的簡(jiǎn)潔,,需要將輸入的url轉(zhuǎn)換成更為友好的url,,這時(shí)候就可以使用rewrite重寫功能。 使用rewrite功能首先需要開(kāi)啟mod_rewrite模塊,。yum安裝的apache默認(rèn)已經(jīng)開(kāi)啟,。 2、rewrite使用詳解rewrite規(guī)則可以在Directory指令中進(jìn)行配置 rewrite學(xué)習(xí)的三個(gè)核心是RewriteEngine,,RewriteCond,,RewriteRule 2.1 RewriteEnginerewrite功能的總開(kāi)關(guān),用來(lái)開(kāi)啟rewrite重寫功能 RewriteEngine on
2.2 RewriteCondRewriteCond定義規(guī)則條件,,當(dāng)請(qǐng)求滿足RewriteCond配置的條件時(shí),,執(zhí)行RewriteCond后面的RewriteRule語(yǔ)句 比如: RewriteEngine on
上面的規(guī)則表示:如果匹配到http請(qǐng)求中HTTP_USER_AGENT是Mozilla//5/.0.*開(kāi)頭的。訪問(wèn)index時(shí),,會(huì)自動(dòng)訪問(wèn)到index.html RewriteCond 和 RewriteRule 是上下對(duì)應(yīng)的關(guān)系,??梢杂?個(gè)或者好幾個(gè)RewriteCond來(lái)匹配一個(gè)RewriteRule **RewriteCond常見(jiàn)的HTTP請(qǐng)求匹配方式 RewriteCond %{HTTP_REFERER} (www.mytest.com)
HTTP_REFERER 判斷訪問(wèn)者的來(lái)源 案例: RewriteCond %{HTTP_REFERER} (www.mytest.com)
REQUEST_FILENAME 匹配當(dāng)前訪問(wèn)的文件 案例: RewriteCond %{REQUEST_FILENAME} !-f
2.3 RewriteRuleRewriteRule是配合RewriteCond一起使用的,,RewriteRule是RewriteCond成功匹配后的具體執(zhí)行過(guò)程
RewriteRule Pattern Substitution [flags]
五、apache日志切割1,、為什么要進(jìn)行日志切割隨著網(wǎng)站訪問(wèn)越來(lái)越大,,web服務(wù)產(chǎn)生的日志文件也會(huì)越來(lái)越大,這個(gè)時(shí)候日志文件不僅占用了大量的服務(wù)器空間,,而且日志分析也很麻煩 2,、日志分割兩種方式2.1 rotatelogsrotatelogs是apache自帶的日志切割工具 案例:使用rotatelogs每天記錄一個(gè)日志文件 # 編輯httpd主配置文件 /etc/httpd/conf/httpd.conf
說(shuō)明: 86400為輪轉(zhuǎn)的時(shí)間,單位為秒 2.2 cronologCronolog是一款日志輪循(rotation)工具,可以用它來(lái)把Apache,、Tomcat等Web服務(wù)器上輸出的日志切分成按日或月保存的文件,。 cronolog安裝 [root@ ~]# tar zxf cronolog-1.6.2.tar.gz
案例:使用cronologs每天記錄一個(gè)日志文件 ErrorLog "|/usr/local/sbin/cronolog logs/error-%Y%m%d.log"
擴(kuò)展:按小時(shí)輪詢生成日志 CustomLog "|/usr/local/sbin/cronolog logs /access_%Y%m%d%H.log" combined
3 總結(jié)推薦使用cronolog,因?yàn)閏ronolog穩(wěn)定高配置簡(jiǎn)單,。 六,、apache防盜鏈防盜鏈就是防止別人網(wǎng)站代碼里調(diào)用我們服務(wù)器的圖片、文件,、視頻等資源,。如果別人盜用我們的資源,會(huì)增加服務(wù)器的貸款壓力,。 通過(guò)防盜鏈的方式,,可以設(shè)置限制第三方的站點(diǎn)通過(guò)引用的方式獲取服務(wù)器上的圖片,如果想要獲取本站點(diǎn)的圖片數(shù)據(jù),,只能通過(guò)本站點(diǎn)訪問(wèn)獲取,,這樣也有效的減少了服務(wù)器的資源。 1,、rewrite實(shí)現(xiàn)防盜鏈 1. RewriteEngine On
說(shuō)明: 第1條:開(kāi)啟rewrite重寫 第2~5條:開(kāi)啟授信任的站點(diǎn),,能夠訪問(wèn)站點(diǎn)的圖片資源 第6條:訪問(wèn)站點(diǎn)的gif|jpg|swf等類型資源時(shí),跳轉(zhuǎn)到 2,、SetEnvIfNoCase通過(guò)判斷瀏覽器頭信息來(lái)阻止盜鏈請(qǐng)求 SetEnvIfNoCase Referer "^$" local_ref
說(shuō)明: SetEnvIfNoCase 當(dāng)滿足某個(gè)條件時(shí),,為變量賦值,,即根據(jù)客戶端請(qǐng)求屬性設(shè)置環(huán)境變量。 Referer :指明了請(qǐng)求當(dāng)前資源原始資源的URL
|
|