Linux操作系統近幾年有了蓬勃的發展,在整個世界范圍內得到了越來越多公司和團體的支持,尤其是最近IBM公司的鼎力支持,更是使Linux服務器如虎添翼,更上一層樓。而在國內,Linux的應用也是方興未艾,眾多公司已經投入到Linux系統的研發和推廣工作中。一些優秀的Linux操作系統相繼出現,比如紅旗Linux等。但是我國的Linux應用水平還很低,熟悉Linux的人員嚴重缺乏,Linux專業人才的缺乏已成為Linux在國內應用和普及的瓶頸問題。據《開放系統世界》2003年第八期介紹,中國五年內Linux人才需求量將會超過120萬。而“1+1+1”工程的實施,也是間接地告訴我們這個問題的嚴重性。如此大好時機,我們干嗎還愣著不動呢!如果你是一位Linux愛好者,你可能已經掌握了基本的Linux的知識與操作,毫無疑問,你並不會去滿足這樣小小的成就。Linux為何如此的流行?其最大的特點莫過於功能強大,性能穩定的服務器應用了。像WWW,MAIL,FTP,DNS和SMB等。在這篇文章中,我將以Redhat Linux 9為藍本,從Web服務器的一些最基本的操作入手,從初學者使用的態度,讓讀者正確充分的認識Apache。好,現在就讓我們一起踏上征服Apache的自由之路吧。
第一站 Apache的歷史與前景 1995年,美國國家計算機安全協會(NCSA)的開發者創建了NCSZ全球網絡服務軟件,其最大的特點是HTTP精靈程序,它比當時的CERN服務器更容易由源碼來配置和創建,又由於當時其他服務器軟件的缺乏,他很快流行起來。但是後來,該服務器的核心開發人員幾乎都離開了NCSA,一些使用者們自己成立了一個組織來管理他們編寫的補丁,於是Apache Group應運而生。他們把該服務器軟件稱為Apache。Apache源於A patchy server的讀音,意思是充滿補丁的服務器。如今Apache慢慢地已經成為Internet上最流行的Web服務器軟件了。在所有的Web服務器軟件中,Apache占據絕對優勢,遠遠領先排名第二的Microsoft IIS。如果你對它感興趣,你可以訪問Apache的官方網站:http://www.apache.org。Apache作為自由軟件之一,像其他自由軟件一樣,他們都是由許許多多的自由開發人員投入了大量的時間和精力來實現並逐步完善的,所以我們有理由相信Apache的發展前景會更好。
第二站 Apache 2.0的安裝 Apache 2.0的配置與安裝和Apache 1.3的有很大的不同,他像其它的開源軟件一樣,使用liBTool和autoconf來配置環境。但不管是Apache幾通常都有兩種安裝方式:源代碼安裝和RPM包安裝。這兩種安裝類型各有特色,RPM包安裝不需要編譯,而源代碼安裝則需要先配置編譯再安裝,RPM包安裝在一個固定的位置下,選擇固定的模塊,而源代碼安裝則可以讓你選擇安裝路徑,選擇你想要的模塊。下面分別以實例的形式來介紹兩種類型的安裝方法。 一,使用源代碼安裝 (1) 獲得源代碼 # lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz NN表示當前所用的版本號。 (2) 解壓縮 # gzip -d httpd-2_0_NN.tar.gz # tar xvf httpd-2_0_NN.tar (3) 配置. # ./configure --prefix= /usr/local/apache 表示Apache將安裝在/usr/local/apache目錄下 (4) 編譯與安裝 # make # make install (5) 測試 # /usr/local/apache/bin/apachectl start 二,使用RPM包安裝 # rpm —ivh apache-*.rpm 完成安裝後,配置文件在/etc/httpd/conf/目錄下,文件根目錄為/var/www/Html,工具文件在/etc/rc.d/init.d/目錄下,日志文件在/var/log/httpd/目錄下。
第三站 Apache 2.0的配置 Apache 2.0的主配置文件為httpd.conf。如果以上述源代碼安裝則配置文件保存在/usr/local/apache/conf/目錄下,若以RPM包方式安裝則配置文件保存在/etc/httpd/conf/目錄下。我們可以直接修改httpd.conf文件也可以用redhat linux 9自帶的圖形化工具來配置。打開啟動程序->系統設置->服務器設置->HTTP服務器,可以進行相關。 下面我們來看一下httpd.conf中的幾條指令,“#”後加入了注釋說明。 Port 80 #定義了web服務器的偵聽端口,默認值為80,它是TCP網絡端口之一。若寫入多個端口,以最後一個為准。 User apache #一般情況下,以nobody用戶和nobody組來運行web服務器,因為web Group apache # 服務器發出的所有的進程都是以root用戶身份運行的,存在安全風險。 ServerAdmin root@localhost #指定服務器管理員的E-mail地址。服務器自動將錯誤報告到該地址。 ServerRoot /etc/httpd #服務器的根目錄,一般情況下,所有的配置文件在該目錄下 ServerName new.host.name:80 #web客戶搜索的主機名稱 KeepAliveTimeout 15 #規定了連續請求之間等待15秒,若超過,則重新建立一條新的TCP連接 MaxKeepAliveRequests 100 #永久連接的HTTP請求數 MaxClients 150 #同一時間連接到服務器上的客戶機總數 ErrorLog logs/error_log #用來指定錯誤日志文件的名稱和路徑 PidFile run/httpd.pid #用來存放httpd進程號,以方便停止服務器。 Timeout 300 #設置請求超時時間,若網速較慢則應把值設大。 DocumentRoot /var/www/html #用來存放網頁文件
第四站 Apache的管理 (1) 啟動和停止Apache /etc/rc.d/init.d/httpd start /etc/rc.d/init.d/httpd stop (2) Apache的日志文件 有人說判定一個管理員是否優秀之一就是看他是否是一個分析日志的能手,因為從日志文件中獲取的反饋信息對管理員來說是相當重要的。Apache的日至文件主要包括訪問日志和錯誤日志。訪問日志記錄了該服務器所有的請求的過程,主要記錄的是客戶的信息,通過它我們可以知道什麼人訪問了該網站,什麼時候訪問的,訪問的內容是什麼等等。錯誤日志則是記錄了服務器出錯的細節和如何處理等。日志文件的位置是由上述主配置文件httpd.conf來規定的。Redhat中有一個查看日志的工具——系統日志。 下面各舉一個例子來說明他的格式: 錯誤日志的寫法: [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] 錯誤發生的時間。 [error] 表示錯誤的級別。有debug,info,notice,warn,error,crit,alert,emerg,這些級別由低到高表示了錯誤的嚴重性。 [client 127.0.0.1] 表示客戶端IP地址。 client denied by server configuration: /export/home/live/ap/htdocs/test 標是錯誤的具體信息。 訪問日志的寫法: 127.0.0.1 - wangdong [22/sep/2003:13:55:36 -0800] "GET /apache_pb.gif HTTP/1.0" 200 2326 127.0.0.1 表示訪問這台服務器的客戶端IP地址。 Wangdong 表示用戶的登錄名。 [22/sep/2003:13:55:36 -0800] 服務器完成客戶端請求的時間,格式為[日/月/年:小時:分鐘:秒 時區] "GET /apache_pb.gif HTTP/1.0" 表示客戶端訪問該資源所使用的方法。 200 記錄的是服務器返回給客戶的狀態碼。200表示成功,以4打頭的表示訪問出錯。 2326 表示發給客戶端的總字節數。若是“—”表示沒有找到訪問資源。 但在實際應用中,對於大型網站,日志文件往往增長的很快,不利於我們查詢,降低服務器的效率,而且占用大量的磁盤空間,所以我們必須對日志進行定期的維護。 既然日志文件很大,那麼我們如何把一大堆枯燥的數據整理成容易讓我們看懂的形式呢?有沒有這樣的工具呢?非常幸運,在redhat linux 9中自帶了一個分析日志的工具——webalizer。 我們也可以在網上找到大量這樣優秀的免費的工具,例如:WebTrends Analysis Series。
第五站 配置虛擬主機 虛擬主機是在一台www服務器上為多個單獨的域名提供www服務,每個域名具有自己的目錄和配置,相當於將一台主機分為多台主機,虛擬主機技術對於主機數量不足,但又想為不同的用戶提供獨立的Web服務的需求非常有效。而對於一個公司,利用價格昂貴的服務器只提供一種域名服務,似乎是不明智的,而現在越來越多的公司喜歡在一台服務器上使用多個域名服務,架設不同的網站,這樣做的好處是顯而易見。 Apache有兩種方式支持虛擬主機,一種是基於IP的虛擬主機,另一種是基於名字的虛擬主機。基於名字的虛擬主機使用相同的IP地址來配置不同的虛擬主機,這就彌補了因IP地址不足而帶來的問題。基於名字的虛擬主機的配置相當簡單,你只需配置你得DNS服務器使每個主機名對應正確的IP地址,然後再配置Apache HTTP Server使它能認識不同的主機名就可以了。 假設我們組建了一家多媒體制作公司,有一台Apache服務器和一個IP地址:192.168.0.1 要運行兩種業務,一種為電子商務網站,域名為www.business.media.com ,另一種為教學網站,域名為www.teaching.media.com 。先在DNS服務器中把域名www.business.media.com和www.teaching.media.com配置好就可以了。 NameVirtualHost 192.168.0.1 <VirtualHost 192.168.0.1> ServerName www.business.media.com DocumentRoot /var/