Linux--服務(wù)器應(yīng)用--web服務(wù)器祥解
Posted on 2010-10-14 14:22 幻海藍(lán)夢 閱讀(233) 評論(0) 編輯 收藏 所屬分類: Linux 、版本管理1. 關(guān)于WWW和URL;
2. www主機系統(tǒng)的類型;
3. Apache 2 的配置;
3.1 apache2.conf;
3.2 conf.d ;
3.3 httpd.conf ;
3.4 magic ;
3.5 ports.conf ;
3.6 mods-available ;
3.7 sites-available ;
3.8 /var/www ;
4. Apache的管理;
5. 配置虛擬主機;
6. 配置Apache代理;
7. 關(guān)于本文;
8. 更新日志;
9. 參考文檔;
10. 相關(guān)文檔;
+++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++
如果您是一位Linux愛好者,您可能已經(jīng)掌握了基本的Linux的知識與操作,毫無疑問,您并不會去滿足這樣小小的成就;Linux為何如此的流行?其最大的特點莫過于功能強大,性能穩(wěn)定的服務(wù)器應(yīng)用了。像WWW,MAIL,FTP, DNS和SMB等;在本文中,我們從Web服務(wù)器的一些最基本的操作入手,從初學(xué)者使用的態(tài)度,讓大家正確充分的認(rèn)識Apache等服務(wù)器;
1. 關(guān)于WWW和URL;
WWW是World Wide Web的縮寫,翻譯過來就是全球廣域網(wǎng),它可以接合文字、圖形、影像及聲音等多媒體,并通過超文本(HyperText)的方式,將信息通過Internet傳遞到世界各處;
例如:在瀏覽器的地址欄上輸入“http://www.linuxsir.org”,就可以登錄的linuxsir的網(wǎng)站上瀏覽信息,其中“http://www.linuxsir.org”是URL(Uniform Resource Locator ,同一資源定位器),“www.linuxsir.org”是主機名稱,也就是DNS中的FQDN(Fully Qualified Domain Name,完全符合標(biāo)準(zhǔn)的域名),即主機名稱加上域名所得的一個獨一無二的Internet上面的名字。由于計算機僅識別網(wǎng)絡(luò)中的IP,所以,linuxsir站的真實IP就是通過DNS解析www.linuxsir.org而找到的,然后經(jīng)過www的協(xié)議將數(shù)據(jù)傳到你的眼前;
1.1 URL的格式;
<協(xié)議>://<主機地址>[:端口]/<目錄>
1.1.1 協(xié)議;
包括http,ftp,news,gopher和telnet幾種常見的協(xié)議。其中,http是利用“主機的http端口,通常為80端口”,ftp是利用“主機的ftp端口,通常為21端口”。注意:80和21都是主機所提供的服務(wù),而不是客戶端的端口。
1.1.2 主機地址;
當(dāng)輸入主機名(域名)時,必須要讓該主機名稱可以經(jīng)由翻譯器得到對應(yīng)的IP。翻譯器是/etc/hosts或者是/etc/resolv.conf里面的設(shè)置對外提供正常的www服務(wù)器時,主機名稱就必須要讓大家可以翻譯到IP,這就需要去申請一個合法的域名;
1.1.3 目錄;
也就是URI(Uniform Resource Indicator ,統(tǒng)一資源定位符),如果你要去的網(wǎng)站網(wǎng)頁在主頁所在目錄的下面,那么你直接輸入目錄與網(wǎng)頁的名稱,就可以直接取得那個網(wǎng)頁的數(shù)據(jù)。若只輸入目錄與網(wǎng)頁的名稱,并沒有輸入網(wǎng)頁名稱,則服務(wù)器端會自動地判斷(跟服務(wù)器自己的設(shè)置有關(guān)),該目錄下是否有設(shè)置為默認(rèn)的網(wǎng)頁名稱;
1.1.4 端口;
當(dāng)連接某個網(wǎng)站時,輸入 “http://that.host.name”就會主動地利用端口80來嘗試連接對方的主機,但如果不想使用該端口呢。舉個例子來說,例如您的網(wǎng)站使用的是8080端口來進行www的服務(wù),那么除非您使用了防火墻進行端口對應(yīng),否則直接在地址欄輸入“http://your.host.name”結(jié)果將無法連接到你的www服務(wù)器,因為它會主動連接到端口80,所以這里就要告訴瀏覽器,向服務(wù)器請求服務(wù)的是哪個端口。即寫成“http://your.host.name:8080”才可以連接到對方的端口8080;
2. www主機系統(tǒng)的類型;
大致上可以分兩種:
一種是Windows系統(tǒng)的IIS+MS的SQL+ASP WWW服務(wù)器,這種www主機假設(shè)上比較容易,不過由于windows的某些特性,所以很容易被黑客所破壞;
另外一種則是Linux系統(tǒng)上的Apache+MySQL(PostgreSQL)+PHP的www服務(wù)器(簡稱LAMP),這種服務(wù)器架設(shè)上有一定程度的困難,尤其是在升級與維護方面,但是架設(shè)妥當(dāng)?shù)脑挘挠布蟆⑿阅堋踩缘确矫妫瑒t相對較佳,下面我們就來主要介紹一下Apache的架設(shè);
2.1 Apache的歷史與前景;
1995年,美國國家計算機安全協(xié)會(NCSA)的開發(fā)者創(chuàng)建了NCSZ全球網(wǎng)絡(luò)服務(wù)軟件,其最大的特點是HTTP精靈程序,它比當(dāng)時的CERN服務(wù)器更容易由源碼來配置和創(chuàng)建,又由于當(dāng)時其他服務(wù)器軟件的缺乏,他很快流行起來。但是后來,該服務(wù)器的核心開發(fā)人員幾乎都離開了NCSA,一些使用者們自己成立了一個組織來管理他們編寫的補丁,于是Apache Group應(yīng)運而生。他們把該服務(wù)器軟件稱為Apache。Apache源于A patchy server的讀音,意思是充滿補丁的服務(wù)器。如今Apache慢慢地已經(jīng)成為Internet上最流行的Web服務(wù)器軟件了。在所有的Web服務(wù)器軟件中,Apache占據(jù)絕對優(yōu)勢,遠(yuǎn)遠(yuǎn)領(lǐng)先排名第二的Microsoft IIS。如果你對它感興趣,你可以訪問Apache的官方網(wǎng)站:http://www.apache.org。Apache作為自由軟件之一,像其他自由軟件一樣,他們都是由許許多多的自由開發(fā)人員投入了大量的時間和精力來實現(xiàn)并逐步完善的,所以我們有理由相信Apache的發(fā)展前景會更好。
2.2 Apache 2的安裝;
軟件的安裝并不困難,您可以在www.apache.org上下載源碼包進行安裝,也可以使用各操作系統(tǒng)自帶的軟件包管理軟件進行安裝,比如我的系統(tǒng)是Ubuntu,那么就可以在終端中輸入:
xiaop@xiaop-laptop:~$ sudo apt-get install apache2
不同的系統(tǒng)有自己的軟件包管理方式,其實都大同小異;
2.2.1 使用源代碼安裝;
(1) 獲得源代碼
xiaop@xiaop-laptop:~# lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz
NN表示當(dāng)前所用的版本號
(2) 解壓縮
xiaop@xiaop-laptop:~# gzip -d httpd-2_0_NN.tar.gz
或者
xiaop@xiaop-laptop:~# tar xvf httpd-2_0_NN.tar
(3) 配置.
xiaop@xiaop-laptop:~httpd-2_0_NN# ./configure --prefix= /usr/local/apache
表示Apache將安裝在/usr/local/apache目錄下
(4) 編譯與安裝
xiaop@xiaop-laptop:~httpd-2_0_NN# make
xiaop@xiaop-laptop:~httpd-2_0_NN# make install
(5) 測試
xiaop@xiaop-laptop:~httpd-2_0_NN# /usr/local/apache/bin/apachectl start
3. Apache 2 的配置;
安裝完apache2后,可以在/etc/apache2/目錄下查看文件:
xiaop@xiaop-laptop:/etc/apache2$ ls -lh
總用量 35K
-rw-r--r-- 1 root root 24K 2007-01-16 02:10 apache2.conf
drwxr-xr-x 2 root root 104 2007-06-12 21:07 conf.d
-rw-r--r-- 1 root root 895 2007-01-16 02:11 envvars
-rw-r--r-- 1 root root 0 2007-05-17 17:34 httpd.conf
drwxr-xr-x 2 root root 2.5K 2007-07-18 08:43 mods-available
drwxr-xr-x 2 root root 608 2007-05-17 17:36 mods-enabled
-rw-r--r-- 1 root root 10 2007-05-17 17:34 ports.conf
drwxr-xr-x 2 root root 72 2007-05-19 16:47 sites-available
drwxr-xr-x 2 root root 80 2007-05-17 17:34 sites-enabled
3.1 apache2.conf;
Apache 2.0的主配置文件為apache2.conf; 我的配置文件保存在/etc/apache2/apache2.conf;
查看此文件會在第184行附近發(fā)現(xiàn)下面的內(nèi)容:
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
# Include all the user configurations:
Include /etc/apache2/httpd.conf
# Include ports listing
Include /etc/apache2/ports.conf
# Include generic snippets of statements
Include /etc/apache2/conf.d/
可以看出apache2 根據(jù)配置功能的不同, 對配置文件進行了分割, 這樣更利于管理;
3.2 conf.d ;
下為配置文件的附加片斷,默認(rèn)情況下, 僅提供了 charset 片斷,
xiaop@xiaop-laptop:/etc/apache2/conf.d$ cat charset
AddDefaultCharset UTF-8
如有需要我們可以將默認(rèn)編碼修改為 GB2312, 即文件的內(nèi)容為: AddDefaultCharset GB2312
3.3 httpd.conf ;
通常是一個空文件,以后設(shè)置時可以加入以下指令;
下面我們來看一下httpd.conf中的幾條指令,“#”后加入了注釋說明;
Port 80 #定義了web服務(wù)器的偵聽端口,默認(rèn)值為80,它是TCP網(wǎng)絡(luò)端口之一。若寫入多個端口,以最后一個為準(zhǔn)。
User apache #一般情況下,以nobody用戶和nobody組來運行web服務(wù)器,因為web
Group apache # 服務(wù)器發(fā)出的所有的進程都是以root用戶身份運行的,存在安全風(fēng)險。
ServerAdmin root@localhost #指定服務(wù)器管理員的E-mail地址。服務(wù)器自動將錯誤報告到該地址。
ServerRoot /etc/httpd #服務(wù)器的根目錄,一般情況下,所有的配置文件在該目錄下
ServerName new.host.name:80 #web客戶搜索的主機名稱
KeepAliveTimeout 15 #規(guī)定了連續(xù)請求之間等待15秒,若超過,則重新建立一條新的TCP連接
MaxKeepAliveRequests 100 #永久連接的HTTP請求數(shù)
MaxClients 150 #同一時間連接到服務(wù)器上的客戶機總數(shù)
ErrorLog logs/error_log #用來指定錯誤日志文件的名稱和路徑
PidFile run/httpd.pid #用來存放httpd進程號,以方便停止服務(wù)器。
Timeout 300 #設(shè)置請求超時時間,若網(wǎng)速較慢則應(yīng)把值設(shè)大。
DocumentRoot /var/www/html # 用來存放網(wǎng)頁文件
3.4 magic ;
文件中包含的是有關(guān)mod_mime_magic模塊的數(shù)據(jù), 一般不需要修改它;
3.5 ports.conf ;
則為服務(wù)器監(jiān)聽IP和端口設(shè)置的配置文件,
xiaop@xiaop-laptop:/etc/apache2$ cat ports.conf
Listen 80
3.6 mods-available ;
目錄下是一些.conf和.load 文件, 為系統(tǒng)中可以使用的加載各種模塊的配置文件, 而mods-enabled目錄下則是指向這些配置文件的符號連接, 從配置文件apache2.conf 中可以看出, 系統(tǒng)通過mods-enabled目錄來加載模塊, 也就是說, 系統(tǒng)僅通過在此目錄下創(chuàng)建了符號連接的mods-available 目錄下的配置文件來加載模塊。同時系統(tǒng)還提供了兩個命令 a2enmod 和 a2dismod用于維護這些符號連接。這兩個命令由 apache2-common 包提供。命令各式也非常簡單: a2enmod [module] 或 a2dismod [module]
3.7 sites-available ;
目錄下為配置好的站點的配置文件, sites-enabled 目錄下則是指向這些配置文件的符號連接, 系統(tǒng)通過這些符號連接來起用站點 sites-enabled目錄下的符號連接附有一個數(shù)字前綴, 如000-default, 這個數(shù)字用于決定啟動順序, 數(shù)字越小, 啟動優(yōu)先級越高. 系統(tǒng)提供了兩個命令 a2ensite 和 a2dissite 用于維護這些符號連接。這兩個命令由 apache2-common 包提供;
3.8 /var/www ;
默認(rèn)情況下將要發(fā)布的網(wǎng)頁文件應(yīng)該置于/var/www目錄下,這一默認(rèn)值可以同過主配置文件中的DocumnetRoot 選項修改
4. Apache的管理;
4.1 啟動和停止Apache;
root@xiaop-laptop:/#/etc/init.d/apache2 start
root@xiaop-laptop:/#/etc/init.d/apache2 stop
4.2 Apache的日志文件;
Apache的日至文件主要包括訪問日志和錯誤日志。訪問日志記錄了該服務(wù)器所有的請求的過程,主要記錄的是客戶的信息,通過它我們可以知道什么人訪問了該網(wǎng)站,什么時候訪問的,訪問的內(nèi)容是什么等等。錯誤日志則是記錄了服務(wù)器出錯的細(xì)節(jié)和如何處理等。日志文件的位置是由上述主配置文件httpd.conf來規(guī)定的。下面舉一個例子來說明它的格式:
一條錯誤信息:
[Mon sep 22 14:32:52 2003] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
下面我們來看看這個錯誤信息都表示什么:
[Mon sep 22 14:32:52 2003] #錯誤發(fā)生的時間
[error] #表示錯誤的級別。有debug,info,notice,warn,error,crit,alert,emerg,這些級別由低到高表示了錯誤的嚴(yán)重性
[client 127.0.0.1] #表示客戶端IP地址
client denied by server configuration: /export/home/live/ap/htdocs/test #標(biāo)是錯誤的具體信息
訪問日志的寫法:
127.0.0.1 - xiaop [22/sep/2007:13:55:36 -0800] "GET /apache_pb.gif HTTP/1.0" 200 2326
注:
127.0.0.1 #表示訪問這臺服務(wù)器的客戶端IP地址。
xiaop #表示用戶的登錄名。
[22/sep/2003:13:55:36 -0800] #服務(wù)器完成客戶端請求的時間,格式為[日/月/年:小時:分鐘:秒 時區(qū)]
"GET /apache_pb.gif HTTP/1.0" #表示客戶端訪問該資源所使用的方法
200 #記錄的是服務(wù)器返回給客戶的狀態(tài)碼; 200表示成功,以4打頭的表示訪問出錯
2326 #表示發(fā)給客戶端的總字節(jié)數(shù)。若是“—”表示沒有找到訪問資源
但在實際應(yīng)用中,對于大型網(wǎng)站,日志文件往往增長的很快,不利于我們查詢,降低服務(wù)器的效率,而且占用大量的磁盤空間,所以我們必須對日志進行定期的維護;
5. 配置虛擬主機;
虛擬主機是在一臺www服務(wù)器上為多個單獨的域名提供www服務(wù),每個域名具有自己的目錄和配置,相當(dāng)于將一臺主機分為多臺主機,虛擬主機技術(shù)對于主機數(shù)量不足,但又想為不同的用戶提供獨立的Web服務(wù)的需求非常有效。而對于一個公司,利用價格昂貴的服務(wù)器只提供一種域名服務(wù),似乎是不明智的,而現(xiàn)在越來越多的公司喜歡在一臺服務(wù)器上使用多個域名服務(wù),架設(shè)不同的網(wǎng)站,這樣做的好處是顯而易見。
Apache有兩種方式支持虛擬主機,一種是基于IP的虛擬主機,另一種是基于名字的虛擬主機。基于名字的虛擬主機使用相同的IP地址來配置不同的虛擬主機,這就彌補了因IP地址不足而帶來的問題。基于名字的虛擬主機的配置相當(dāng)簡單,你只需配置你得DNS服務(wù)器使每個主機名對應(yīng)正確的IP地址,然后再配置 Apache HTTP Server使它能認(rèn)識不同的主機名就可以了。
假設(shè)我們組建了一家多媒體制作公司,有一臺Apache服務(wù)器和一個IP地址:192.168.1.1 要運行兩種業(yè)務(wù),一種為電子商務(wù)網(wǎng)站,域名為www.business.media.com ,另一種為教學(xué)網(wǎng)站,域名為www.teaching.media.com 。先在DNS服務(wù)器中把域名www.business.media.com和www.teachin....conf就可以了。
NameVirtualHost 192.168.0.1
<VirtualHost 192.168.0.1>
ServerName www.business.media.com
DocumentRoot /var/www/html/business
</VirtualHost>
<VirtualHost 192.168.0.1>
ServerName www.teaching.media.com
DocumentRoot /var/www/html/teaching
</VirtualHost>
而基于IP的虛擬主機則要求使用不同的IP地址來區(qū)別不同的虛擬主機,這就要求使用多塊網(wǎng)卡,把不同的IP地址捆綁到不同的網(wǎng)卡上,或者在一塊網(wǎng)卡上捆綁多個IP地址。假設(shè)我們主機的IP地址為192.168.0.1(www.media.com),另外有兩個IP地址別:
<VirtualHost 192.168.0.2>
ServerAdmin webmaster@ business.media.com
DocumentRoot /var/www/html/business
ServerName www.business.media.com
ErrorLog /var/www/html/business/logs/error_log
TransferLog /var/www/html/business/logs/access_log
</VirtualHost>
<VirtualHost 192.168.0.3>
ServerAdmin webmaster@teaching.media.com
DocumentRoot /var/www/html/teaching
ServerName www.teaching.media.com
ErrorLog /var/www/html/teaching/logs/error_log
TransferLog /var/www/html/teaching/logs/access_log
</VirtualHost>
6. 配置Apache代理;
代理服務(wù)器是網(wǎng)絡(luò)信息服務(wù)的中轉(zhuǎn)站。如果我們把Apache代理服務(wù)器形象地比喻成代理商的話,消費者向代理商購買東西時,如果代理商有的話,可直接賣給消費者,若沒有,則代理商向廠家進貨,再賣給消費者。
這樣做有以下幾點好處:
(1)提高了訪問速度;
(2)充當(dāng)防火墻,增加了安全性;
(3)可以過濾一些不良網(wǎng)站;
(4)具有緩存功能;
(5)節(jié)省IP開銷;
代理服務(wù)器可分為兩種類型:客戶端代理和服務(wù)器端代理;
下面我們在講解幾個指令后舉例說明各自的配置方法;
ProxyRequest On/Off #啟用或者禁用Apache代理服務(wù)。
CacheRoot "/etc/httpd/proxy" #代理緩存的根目錄。
CacheSize 5 #代理緩存的大小。
CacheGcInterval 4 #設(shè)定運行管理緩存的無用數(shù)據(jù)搜集程序的時間間隔
CacheMaxExpire 24 #文件過期時間。
CacheDefaultExpire 1 #指定未包含過期信息文件的有效期。
NoCache a-domain.com another-domain.edu #該網(wǎng)站的文件將不被緩存。
6.1 客戶端代理的配置;
(1) 修改/etc/httpd/conf/httpd.conf中的相關(guān)指令
(2) 修改/etc/httpd/conf/httpd.conf,添加對代理目錄的訪問控制
Order deny,allow
Deny from all
Allow from .your-domain.com
(3) 重啟httpd
6.2 服務(wù)器端代理的配置;
服務(wù)器端代理與客戶端代理不同,它是在防火墻上安裝Apache服務(wù)器,使用它提供對WWW服務(wù)器的代理訪問。這種方法把WWW服務(wù)器與外部隔開,提高了安全性,而對用戶來說,好像沒有變化一樣。假設(shè)在內(nèi)部局域網(wǎng)中WWW服務(wù)器的IP地址為192.168.0.2,防火墻主機內(nèi)部IP地址為 192.168.0.5,外部IP地址為192.9.202.1。
6.2.1 配置防火墻上的Apache;
(1) 在/etc/httpd/conf/httpd.conf中添加虛擬主機。
<VirtualHost 192.9.201.1>
ServerAdmin webmaster@business.media.com
DocumentRoot /www/docs/business.media.com
ServerName www.business.media.com
ErrorLog logs/business.media.com-error_log
CustomLog logs/business.media.com-log_common
</VirtualHost>
(2) 配置局域網(wǎng)中的DNS服務(wù)器,把www.business.media.com指向192.9.201.1。
6.2.2 配置局域網(wǎng)內(nèi)部WWW服務(wù)器;
在Linux環(huán)境下,有一個非常流行的代理服務(wù)器軟件——Squid。他的功能非常的強大,支持HTTP,FTP,Gopher,SSL,和WAIS等協(xié)議的代理,而且設(shè)置簡單,只需再配置文件中稍稍改動就可以了;
7. 關(guān)于本文;
本文只是簡單的說了一下www服務(wù)器的原理及簡單應(yīng)用,沒有涉及到高級應(yīng)用,主要是方便初學(xué)者,里面的不足之處還請大家多指教;
8. 更新日志;
9. 參考文檔;
10. 相關(guān)文檔;
《apache2 安裝與配置》
出處:http://www.linuxsir.org/main/node/280?q=node/280