首頁 > 硬體

Linux 設定WWW伺服器全攻略

2020-10-14 15:26:25

操作方法

  • 01

    第一站 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.gzNN表示當前所用的版本號。(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伺服器,因為webGroup 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 2326127.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.teachin....conf就可以了。NameVirtualHost 192.168.0.1ServerName www.business.media.comDocumentRoot /var/www/html/businessServerName www.teaching.media.comDocumentRoot /var/www/html/teaching而基於IP的虛擬主機則要求使用不同的IP地址來區別不同的虛擬主機,這就要求使用多塊網路卡,把不同的IP地址捆綁到不同的網路卡上,或者在一塊網路卡上捆綁多個IP地址。假設我們主機的IP地址為192.168.0.1(www.media.com),另外有兩個IP地址別?..nf/httpd.conf。[/url]ServerAdmin webmaster@ business.media.comDocumentRoot /var/www/html/businessServerName www.business.media.comErrorLog /var/www/html/business/logs/error_logTransferLog /var/www/html/business/logs/access_logServerAdmin webmaster@teaching.media.comDocumentRoot /var/www/html/teachingServerName www.teaching.media.comErrorLog /var/www/html/teaching/logs/error_logTransferLog /var/www/html/teaching/logs/access_log第六站設定Apache代理代理伺服器是網路資訊服務的中轉站。如果我們把Apache代理伺服器形象地比喻成代理商的話,消費者向代理商購買東西時,如果代理商有的話,可直接賣給消費者,若沒有,則代理商向廠家進貨,再賣給消費者。這樣做有以下幾點好處:(1)提高了存取速度。(2)充當防火牆,增加了安全性。(3)可以過濾一些不良網站。(4)具有快取功能。(5)節省IP開銷。代理伺服器可分為兩種型別:使用者端代理和伺服器端代理。下面我們在講解幾個指令後舉例說明各自的設定方法。ProxyRequest On/Off #啟用或者禁用Apache代理服務。CacheRoot "/etc/httpd/proxy" #代理快取的根目錄。CacheSize 5 #代理快取的大小。CacheGcInterval 4 #設定執行管理快取的無用資料蒐集程式的時間間隔CacheMaxExpire 24 #檔案過期時間。CacheDefaultExpire 1 #指定未包含過期資訊檔案的有效期。NoCache a-domain.com another-domain.edu #該網站的檔案將不被快取。l 使用者端代理的設定(1) 修改/etc/httpd/conf/httpd.conf中的相關指令(2) 修改/etc/httpd/conf/httpd.conf,新增對代理目錄的存取控制。Order deny,allowDeny from allAllow from .your-domain.com(3) 重啟httpd。l 伺服器端代理的設定伺服器端代理與使用者端代理不同,它是在防火牆上安裝Apache伺服器,使用它提供對WWW伺服器的代理存取。這種方法把WWW伺服器與外部隔開,提高了安全性,而對使用者來說,好像沒有變化一樣。假設在內部區域網中WWW伺服器的IP地址為192.168.0.2,防火牆主機內部IP地址為192.168.0.5,外部IP地址為192.9.202.1。(一) 設定防火牆上的Apache(1) 在/etc/httpd/conf/httpd.conf中新增虛擬主機。ServerAdmin webmaster@business.media.comDocumentRoot /www/docs/business.media.comServerName www.business.media.comErrorLog logs/business.media.com-error_logCustomLog logs/business.media.com-log_common(2) 設定區域網中的DNS伺服器,把www.business.media.com指向192.9.201.1。(二) 設定區域網內部WWW伺服器在Linux環境下,有一個非常流行的代理伺服器軟體——Squid。他的功能非常的強大,支援HTTP,FTP,Gopher,SSL,和WAIS等協定的代理,而且設定簡單,只需再組態檔中稍稍改動就可以了。好了,WWW伺服器設定這條路總算走完了,筆者希望讀過此文章的人能夠有所收穫,最後,希望在學習Linux這條充滿樂趣而又佈滿荊棘的路上的愛好者們,永不言敗,成為真正的高手。

  • End

IT145.com E-mail:sddin#qq.com