本篇博文為Linux網(wǎng)站架構(gòu)系列之a(chǎn)pache的第二篇,我將帶大家一起學(xué)習(xí)apache的編譯參數(shù),目錄結(jié)構(gòu)和配置文件等方面的知識(shí),實(shí)現(xiàn)對(duì)apache服務(wù)的進(jìn)一步掌握,并使之能更好的應(yīng)用到生產(chǎn)實(shí)戰(zhàn)中去。
10年的法庫網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整法庫建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“法庫網(wǎng)站設(shè)計(jì)”,“法庫網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。一、編譯參數(shù)
在上篇的apache部署中,我們用了大量的編譯參數(shù),其實(shí)apache的編譯參數(shù)并不止這些,這些只是我們生產(chǎn)環(huán)境中常用的。我們?cè)赼pache的源碼包目錄下,用以下命令可以將他們都輸出出來
[root@c64-web httpd-2.4.6]# ./configure --help
此命令的輸出這里就不貼出來了,一大堆呢,估計(jì)你也不看,有些參數(shù)一百年也用不到一次。如果想了解這些參數(shù),你可以百度一下。
這里我將詳細(xì)為大家說明一下我們常用的編譯參數(shù)的作用
--prefix=/usr/local/apache-2.4.6 #表示指定apache安裝路徑為/application/apache2.2.25。如果不指定安裝路徑,則默認(rèn)路徑為/usr/local/apache2 --with-apr=/usr/local/apr #指定apr安裝路徑,不然會(huì)報(bào)錯(cuò) --with-apr-util=/usr/local/apr-util #指定apr-util安裝路徑,不然會(huì)報(bào)錯(cuò) --with-pcre #支持perl的正則表達(dá)式,不然會(huì)報(bào)錯(cuò) --enable-so #激活apache服務(wù)的DSO(全稱Dynamic Shared Object,動(dòng)態(tài)共享對(duì)象)支持,即在以后可以以DSO的方式編譯安裝共享模塊,這個(gè)模塊本身不能以DSO方式編譯。 --enable-ssl #基于ssl加密傳輸 --enable-cgi #開啟CGI腳本 --enable-rewrite # 提供基于URL規(guī)則的重寫功能。即根據(jù)已知URL地址,轉(zhuǎn)換其它想要的URL地址。如前文講解的偽靜態(tài)功能就是這個(gè)模塊實(shí)現(xiàn)的。這是apache生產(chǎn)環(huán)境中必用的一個(gè)重要功能。 --with-zlib #支持壓縮 --enable-deflate # 提供對(duì)內(nèi)容的壓縮傳輸編碼支持,一般html,js,css等內(nèi)容的站點(diǎn),使用此參數(shù)功能會(huì)大大提高傳輸速度,提升訪問者訪問體驗(yàn)。在生產(chǎn)環(huán)境中,這是apache調(diào)優(yōu)的一個(gè)重要選項(xiàng)之一。 --enable-expires # 激活允許通過配置文件控制HTTP的“Expires:”和“Cache-Control:”頭內(nèi)容,即對(duì)網(wǎng)站圖片、js、css等內(nèi)容,提供在客戶端游覽器緩存的設(shè)置。這是apache調(diào)優(yōu)的一個(gè)重要選項(xiàng)之一。 --enable-headers #提供允許對(duì)HTTP請(qǐng)求頭的控制 --enable-modules=most #支持大多數(shù)模塊 --enable-mpms-shared=all #mpm模塊的動(dòng)態(tài)切換 --with-mpm=worker #選擇apache mpm的模式為worker模式。因worker模式原理是更多的使用線程來處理請(qǐng)求,所以可以處理更多的并發(fā)請(qǐng)求,而系統(tǒng)資源的開銷小于基于進(jìn)程的MPM prefork。如果不指定此參數(shù),默認(rèn)的模式是prefork進(jìn)程模式。這兩者的關(guān)系,在調(diào)優(yōu)篇里面我會(huì)詳細(xì)為大家講解。
二、apache目錄結(jié)構(gòu)介紹
熟悉apache的目錄結(jié)構(gòu),對(duì)我們對(duì)apache知識(shí)點(diǎn)的理解和掌握尤為重要,下面我將帶大家一起來對(duì)apache的目錄結(jié)構(gòu)進(jìn)行了解。
[root@c64-web /]# tree -L 3 /usr/local/apache/ #以下我對(duì)輸出做了精簡(jiǎn),僅保留常用的 ./ ├── bin #存放apache命令的目錄,如apache啟動(dòng)命令apachectl ├── ab #apache http服務(wù)器性能測(cè)試工具,簡(jiǎn)單、易用。同類軟件還有jmeter、loadrunner、webbench等 ├── apachectl #apache的啟動(dòng)程序,需重點(diǎn)掌握,apachectl是一個(gè)腳本 ├── apxs #apxs是一個(gè)為apache HTTP服務(wù)器編譯和安裝擴(kuò)展模塊的工具,在進(jìn)行DSO方式模塊編譯時(shí)會(huì)用到。后面在編譯php軟件時(shí)就用到了這個(gè)命令,如:--with-apxs2=/application/apache/bin/apxs ├── htcacheclean #這是清理磁盤緩沖區(qū)的命令,需要在編譯時(shí)指定相關(guān)參數(shù)才可使用,一般用的很少。 ├── htpasswd #建立和更新基本認(rèn)證文件,如:配置nagios等監(jiān)控服務(wù)時(shí)會(huì)用到。 ├── httpd #httpd為apache的控制命令程序,apachectl執(zhí)行時(shí)會(huì)調(diào)用httpd └── rotatelogs #apache自帶的日志輪詢工具,也還可以用,但在老師工作場(chǎng)景中習(xí)慣由cronolog替代之 ├── build ├── cgi-bin ├── conf #這是apache的所有的配置文件的目錄,極其重要 ├── extra #這是額外的apache配置文件目錄,這個(gè)目錄里的文件我們會(huì)經(jīng)常訪問修改 ├── httpd-dav.conf #dav支持配置 ├── httpd-default.conf #這個(gè)文件里配置的是apache的相關(guān)服務(wù)參數(shù):超時(shí)時(shí)間,保持連接時(shí)間等。 ├── httpd-languages.conf #語言支持配置 ├── httpd-mpm.conf #服務(wù)器池管理,也就是優(yōu)化apache的一個(gè)配置文件,如:選擇apache的模式及配置連接數(shù)等,常用的模式有worker模式和profork模式,默認(rèn)情況是profork模式。 ├── httpd-ssl.conf #這是apache SSL支持配置文件 └── httpd-vhosts.conf #這是虛擬主機(jī)的配置文件 └── httpd.conf #apache的主配置文件,這個(gè)文件我們會(huì)經(jīng)常訪問修改,其每一行的參數(shù)作用都應(yīng)弄清楚明白 ├── htdocs #這是編譯安裝時(shí)apache的默認(rèn)站點(diǎn)目錄,前面已說明。 └── index.html #默認(rèn)的首頁文件,在實(shí)際環(huán)境中,大家習(xí)慣用index.html、index.php、index.jsp來做首頁文件,首頁文件名字是在httpd.conf中事先定義好的。具體參數(shù):Directoryindex index.html ├── logs #存放apache默認(rèn)的日志路徑,包括錯(cuò)誤日志及訪日志問 ├── access_log #這是apache的默認(rèn)訪問日志文件。 ├── error_log #這是apache的錯(cuò)誤日志文件,如果apache出現(xiàn)啟動(dòng)故障等問題,一定要看看這個(gè)錯(cuò)誤日志。 └── httpd.pid #httpd的pid文件,httpd進(jìn)程啟動(dòng)后,會(huì)把所有進(jìn)程的ID號(hào)寫到此文件。 └── modules #apache的模塊目錄,比如php.memcache等模塊編譯后都在這里。
以上就是apache的目錄結(jié)構(gòu)說明了,大家了解一下知道做什么用就可以了。
三、apache主配置文件詳解
下面我將為大家詳細(xì)介紹apache的主配置文件,我們通過下面的命令將apache默認(rèn)開啟的行篩選出來
[root@c64-web /]# egrep -v "^$|#" /usr/local/apache/conf/httpd.conf|cat -n 1 ServerRoot "/usr/local/apache-2.4.6" #apache的根目錄,應(yīng)只能root訪問,一般不需要更改此配置 2 Listen 80 #apache監(jiān)聽的端口,默認(rèn)為80端口,如果同時(shí)監(jiān)聽81可以增加一行,如 Listen 81 3 LoadModule authn_file_module modules/mod_authn_file.so 4 LoadModule authn_core_module modules/mod_authn_core.so 5 LoadModule authz_host_module modules/mod_authz_host.so 6 LoadModule authz_groupfile_module modules/mod_authz_groupfile.so 7 LoadModule authz_user_module modules/mod_authz_user.so 8 LoadModule authz_core_module modules/mod_authz_core.so 9 LoadModule access_compat_module modules/mod_access_compat.so 10 LoadModule auth_basic_module modules/mod_auth_basic.so 11 LoadModule reqtimeout_module modules/mod_reqtimeout.so 12 LoadModule filter_module modules/mod_filter.so 13 LoadModule mime_module modules/mod_mime.so 14 LoadModule log_config_module modules/mod_log_config.so 15 LoadModule env_module modules/mod_env.so 16 LoadModule headers_module modules/mod_headers.so 17 LoadModule setenvif_module modules/mod_setenvif.so 18 LoadModule version_module modules/mod_version.so 19 LoadModule mpm_worker_module modules/mod_mpm_worker.so 20 LoadModule unixd_module modules/mod_unixd.so 21 LoadModule status_module modules/mod_status.so 22 LoadModule autoindex_module modules/mod_autoindex.so 23 LoadModule dir_module modules/mod_dir.so 24 LoadModule alias_module modules/mod_alias.so 25 <IfModule unixd_module> 26 User daemon #apache的用戶,默認(rèn)為daemon,建議修改為特定普通用戶,如sunsky 27 Group daemon #apache的用戶組,默認(rèn)為daemon,建議修改為特定普通用戶,如sunsky 28 </IfModule> 29 ServerAdmin you@example.com #系統(tǒng)管理員的郵箱 30 <Directory /> #這將禁止訪問文件系統(tǒng)所在的目錄,并添加你希望允許訪問的目錄塊 31 AllowOverride none #表示禁止用戶對(duì)目錄配置文件(.htaccess進(jìn)行修改)重載,普通站點(diǎn)目錄此項(xiàng)建議不開 32 Require all denied #拒絕所有請(qǐng)求 33 </Directory> 34 DocumentRoot "/usr/local/apache-2.4.6/htdocs" 35 <Directory "/usr/local/apache-2.4.6/htdocs"> 36 Options Indexes FollowSymLinks #允許目錄游覽和符號(hào)鏈接,生產(chǎn)環(huán)境默認(rèn)這里為None一項(xiàng)也不打開 37 AllowOverride None #表示禁止用戶對(duì)目錄配置文件(.htaccess進(jìn)行修改)重載,普通站點(diǎn)目錄此項(xiàng)建議不開 38 Require all granted #授權(quán)所有請(qǐng)求 39 </Directory> 40 <IfModule dir_module> 41 DirectoryIndex index.html #配置默認(rèn)的apache首頁文件,如虛擬主機(jī)沒有此配置,默認(rèn)應(yīng)用這里的配置。首頁文件可以有多個(gè),每個(gè)文件用空格分開,調(diào)用時(shí),前面優(yōu)先匹配。 42 </IfModule> 43 <Files ".ht*"> #防止.htaccess和.htpasswd等重要隱藏文件被web用戶查看 44 Require all denied 45 </Files> 46 ErrorLog "logs/error_log" #錯(cuò)誤日志路徑,logs為apache安裝目錄的相對(duì)路徑,遇到apache錯(cuò)誤要記得查看此文件 47 LogLevel warn 48 <IfModule log_config_module> 49 LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined #訪問日志格式 50 LogFormat "%h %l %u %t "%r" %>s %b" common #普通訪問日志格式 51 <IfModule logio_module> 52 LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio 53 </IfModule> 54 CustomLog "logs/access_log" common #默認(rèn)站點(diǎn)訪問日志配置 55 </IfModule> 56 <IfModule alias_module> 57 ScriptAlias /cgi-bin/ "/usr/local/apache-2.4.6/cgi-bin/" #配置cgi別名,ScriptAlias 方法可以學(xué)習(xí)。 58 </IfModule> 59 <IfModule cgid_module> 60 </IfModule> 61 <Directory "/usr/local/apache-2.4.6/cgi-bin"> #允許cgi-bin路徑訪問 62 AllowOverride None 63 Options None 64 Require all granted 65 </Directory> 66 <IfModule mime_module> 67 TypesConfig conf/mime.types 68 AddType application/x-compress .Z #AddEncoding允許你在信息傳送中使用(Mosaic/X 2.1+)解壓縮信息。不是所有游覽器的支持這個(gè)選項(xiàng)。 69 AddType application/x-gzip .gz .tgz 70 </IfModule> 71 <IfModule proxy_html_module> 72 Include conf/extra/proxy-html.conf 73 </IfModule> 74 <IfModule ssl_module> 75 SSLRandomSeed startup builtin 76 SSLRandomSeed connect builtin 77 </IfModule>
以上是我們編譯安裝完成apache后,apache的默認(rèn)主配置文件。其中有個(gè)別行暫時(shí)沒有解開注釋的,我會(huì)在用的時(shí)候給大家提到。
四、虛擬主機(jī)配置文件
生產(chǎn)環(huán)境中,我們通常都要用到apache的擴(kuò)展文件中的虛擬主機(jī)配置文件,它位于apache安裝目錄下的conf/extra/httpd-vhost.conf。注意,如果要讓該配置文件的內(nèi)容起作用,我們需要解鎖apache主配置文件httpd.conf中擴(kuò)展虛擬主機(jī)的配置行
[root@c64-web /]# grep httpd-vhost /usr/local/apache/conf/httpd.conf #Include conf/extra/httpd-vhosts.conf #將此行解鎖即可
此處我們可以用一鍵解鎖命令
[root@web apache]# sed -i \'s##Include conf/extra/httpd-vhosts.conf#Include conf/extra/httpd-vhosts.conf#g\' /usr/local/apache/conf/httpd.conf #使用sed命令一鍵替換 [root@web apache]# grep httpd-vhost /usr/local/apache/conf/httpd.conf #查看替換結(jié)果 Include conf/extra/httpd-vhosts.conf
現(xiàn)在開始為大家講解httpd-vhost.conf這個(gè)文件,我們依舊只顯示解開注釋的行
[root@c64-web apache]# egrep -v "^$|#" /usr/local/apache/conf/extra/httpd-vhosts.conf|cat -n 1 <VirtualHost *:80> #定義一個(gè)虛擬主機(jī),監(jiān)聽本機(jī)所有IP地址80端口上提供的http服務(wù)請(qǐng)求 2 ServerAdmin webmaster@dummy-host.example.com #這里可以配置管理員的郵箱 3 DocumentRoot "/usr/local/apache-2.4.6/docs/dummy-host.example.com" #提供服務(wù)的程序目錄,也稱站點(diǎn)目錄 4 ServerName dummy-host.example.com #這是配置提供服務(wù)的域名,如www.baidu.com,如果是生產(chǎn)環(huán)境需要把www.baidu.com解析到服務(wù)器上配置的外網(wǎng)VIP或IP上。如果僅為測(cè)試,可以直接在本機(jī)上做測(cè)試。 5 ServerAlias www.dummy-host.example.com #這是配置虛擬主機(jī)的別名,也就是可以配置多個(gè)域名訪問同一站點(diǎn),如此處配置baidu.com后,當(dāng)輸入baidu.com可以得到和www.baidu.com同樣的結(jié)果。此功能需要apache mod_alias模塊支持。 6 ErrorLog "logs/dummy-host.example.com-error_log" #這里可以配置apache錯(cuò)誤日志的路徑。錯(cuò)誤日志是調(diào)試apache的一個(gè)非常重要的日志。有什么錯(cuò)誤信息這里一般都會(huì)有記錄。 7 CustomLog "logs/dummy-host.example.com-access_log" common #訪問日志配置。在生產(chǎn)環(huán)境中,我們一般用combined格式替代common格式,以獲取更多的日志格式輸出。 8 </VirtualHost> #這是一個(gè)虛擬主機(jī)的結(jié)尾,如果需要添加新的虛擬主機(jī),則可以增加<VirtualHost></VirtualHost>即可 9 10 ServerAdmin webmaster@dummy-host2.example.com 11 DocumentRoot "/usr/local/apache-2.4.6/docs/dummy-host2.example.com" 12 ServerName dummy-host2.example.com 13 ErrorLog "logs/dummy-host2.example.com-error_log" 14 CustomLog "logs/dummy-host2.example.com-access_log" common 15 </VirtualHost>
默認(rèn)配置文件會(huì)準(zhǔn)備出來兩個(gè)虛擬主機(jī)模板,此處我們僅拿一個(gè)做講解,兩者內(nèi)容是相通的。
到這里本篇博文就結(jié)束了,相信對(duì)于編譯參數(shù),apache目錄結(jié)構(gòu),主配置文件和虛擬主機(jī)配置文件的內(nèi)容,大家已經(jīng)了然于心了。下一篇將是非常重要的針對(duì)生產(chǎn)環(huán)境的apache的調(diào)優(yōu)介紹了。希望能幫助到大家。
標(biāo)題名稱:Linux網(wǎng)站架構(gòu)系列之Apache----進(jìn)階篇
文章來源:http://www.rwnh.cn/article12/cpgsgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、自適應(yīng)網(wǎng)站、電子商務(wù)、搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)