服務器安裝1實驗指導
Windows 服務器安裝實驗——IIS 和Apache 的安裝與配置一、IIS 服務器的安裝在Window2000中,IIS 默認是被安裝的。你可以通過 “開始->設置->控制面板->管理工具->I
Windows 服務器安裝實驗——IIS 和Apache 的安裝與配置
一、IIS 服務器的安裝
在Window2000中,IIS 默認是被安裝的。你可以通過 “開始->設置->控制面板->管理工具->Internet 信息服務”來打開它。如果你沒有安裝,可以通過Windows 的“添加刪除組件”來安裝它。
設置:
二、Apache 服務器的安裝
1.Apache 服務器的安裝教程
為什么選擇Apache ?首先,Apache 是免費的,你無需為它交納任何費用;其次,Apache 是開放源代碼的,也許你感覺不到它的好處,但我可以告訴你,一個開放源代碼的軟件往往能夠等到更廣泛的支持,可以說,全世界的程序員都在為你服務。而且,它更靈活,使你能夠根據(jù)自己的需要選用包含特定功能的模塊。再給你提供一條消息,現(xiàn)在全世界超過60的HTTP 服務器在使用Apache 。那么你要不要也加入其中呢?
你可以從Apache 的網(wǎng)站http://httpd.apache.org/download.cgi下載Apache 的安裝文件,或者在其他鏡像網(wǎng)站獲得。現(xiàn)在的最新版本是2.0.49。



圖一:Apache 的安裝界面
Apache 的安裝非常簡單,選擇接受許可協(xié)議后進入服務器信息配置界面,如下圖。第一欄"Network Domain" 域名信息,在這里填入你的服務器的域名,如果你已經(jīng)申請到域名的話填入你申請的域名,(注意這里要填的是域名,只是你申請到的完整域名的后半部分,
,不包括"www" 。如果你申請的是二級域名的話,就是第一個"." 之后的部分)如果還沒有的話,把本機的IP 填上去就行了。下一行是服務器名,填入完整的域名或IP 地址。再下一欄是管理員Email 地址。這三項在安裝是就必須填寫,但是在安裝完成后你還可以隨時進行修改,所以你不必擔心填錯了會出問題。最后的選項不用改就可以了。

圖
二:服務器信息配置界面
點擊"Next" 進入下一步。選擇"Typical" 典型安裝,下一步選擇安裝目錄,默認安裝目錄是系統(tǒng)盤的Program Files/Apache Group目錄。點擊"Next" 再單擊"Install" 進行安裝。



圖三:Apache 的安裝界面
安裝完成后,在開始菜單的Apache HTTP Server 2.0.49菜單中可以看到五個選項,現(xiàn)在點擊"Control Apache Server" 目錄下的"Start" 啟動服務器??梢钥吹较到y(tǒng)狀態(tài)欄里出現(xiàn)Apache 的羽毛狀圖標并帶有綠色箭頭,說明服務器啟動成功。

圖四:Apache 菜單
現(xiàn)在看看我們的成績吧。打開瀏覽器,輸入localhost 或者127.0.0.1(這兩個都指向本機地址),回車,如果安裝正確的話你就能看到Apache 的測試頁面了。(如圖五)簡單吧,從此,你的電腦也是一臺HTTP 服務器了!

圖五:Apache 的測試頁面
也許你會問,這不是我的網(wǎng)站啊,我的網(wǎng)站在哪里呢?別著急,通過下面幾步,你就能把你自己精心制作的網(wǎng)站展示給全世界了。
2.配置Apache
首先單擊開始菜單中Apache 目錄下的"Configure Apache Server"中的"Edit the Apache httpd.conf Configuration File",打開Apache 的配置文件。
首先,我們要讓服務器顯示我們自己的內(nèi)容。找到"Section 1: Global
Environment" 的位置,這一部分是Apache 的全局設置。注意到文件的大部分都是以#開頭的,程序?qū)⒙赃^這些內(nèi)容,所以沒有必要去研究它們。好了,找到從此開始的沒有#的第一行,
,"ServerRoot ……", 后面的一部分就是你服務器的根目錄了,把它改成你想要的目錄就行了,這里建議你使用絕對地址,這樣避免一些不必要的問題。需要說明的一點是這里的地址要用斜杠'/'而不是Windows 文件系統(tǒng)習慣的反斜杠'',在地址的最后不要加斜杠。
OK ,這一部分就這樣了,其余的都不用修改。向下繼續(xù)找到"Section 2: 'Main' server configuration", 如果你覺得這樣找起來太麻煩的話,記事本中的查找功能也許能幫你一些忙。(在記事本窗口,按Ctrl +F ,會彈出查找對話框,將上面的內(nèi)容復制進去,單擊" 查找下一個" ,記事本將為你找到它所在的那一行)還是只看沒有#的行,下面的
"ServerAdmin","ServerName" 是有關服務器的一些信息,可以暫時不理會。繼續(xù)向下,找到"DocumentRoot" 一行,這后面的地址就是你服務器的文檔的地址了,所有對你服務器的訪問都將從此地址開始,將這個地址替換成你的網(wǎng)站的文件夾地址,同樣注意要用斜杠'/'。
下面是

圖六:改變設置后服務器的內(nèi)容
到此為止, HTTP服務器就可以算是建立起來了。
不過,如果還沒有你想要的網(wǎng)頁顯示出來,再回到剛才編輯的文件,找到剛才最后改動的位置,就是
"Options -Indexes FollowSymLinks"。再下面幾行,有一個DirectoryIndex ,后面是服務器默認的主頁名稱,服務器將按順序依次在目錄中查找這些文件,并將最先找到的顯示出來。你可以把你的網(wǎng)站的默認頁面的名字寫在這后面。(一般要加一個index.htm )存盤,Restart 。
,等等,有點不對勁,怎么中文是亂碼?這是Apache 將默認語言設成了西歐語言的原因,還是打開剛才編輯過的文件,找到"AddDefaultCharset" 一行,(強烈建議使用記事本的查找工具)將它后面的內(nèi)容改為GB2312。存盤,重啟服務器。也許你的瀏覽器這時候看到的還是亂碼,那是因為瀏覽器記住了這個頁面的設置,清空瀏覽器的歷史記錄和緩存,一切搞定!

圖
七:完成設置后顯示主頁
好了,你現(xiàn)在的任務就是申請一個域名,將它指向你主機的IP ,記得上面提到過的"ServerName" 嗎, 改成你申請的域名就可以了。
選做: Linux 下Apache 服務器的安裝與配置
Linux Apache服務器系統(tǒng)的設置與優(yōu)化
Apache 服務器的設置文件位于/usr/local/apache/conf/目錄下,傳統(tǒng)上使用三個配置文件httpd.conf, access.conf和srm.conf ,來配置Apache 服務器的行為。 httpd.conf提供了最基本的服務器配置,是對守護程序 httpd如何運行的技術描述;srm.conf 是服務器的資源映射文件,告訴服務器各種文件的MIME 類型,以及如何支持這些文件;
access.conf 用于配置服務器的訪問權限,控制不同用戶和計算機的訪問限制;這三個配置文件控制著服務器的各個方面的特性,因此為了正常運行服務器便需要設置好這三個文件。
除了這三個設置文件之外,Apache 還使用mime.types 文件用于標識不同文件對應的MIME 類型, magic文件設置不同MIME 類型文件的一些特殊標識,使得Apache 服務器從文檔后綴不能判斷出文件的MIME 類型時,能通過文件內(nèi)容中的這些特殊標記來判斷文檔的MIME 類型。
[iaspec@www conf]$ pwd
/usr/local/apache/conf
[iaspec@www conf]$ ls
access.conf httpd.conf.OLD magic.default srm.conf
access.conf.default httpd.conf.SAVE mime.types srm.conf.default
,新版本的Apache 將原來httpd.conf 、srm.conf 與access.conf 中的所有配置參數(shù)均放在了一個配置文件 httpd.conf中,只是為了與以前的版本兼容的原因(使用這三個設置文件的方式來源于NCSA-httpd ),才使用三個配置文件。而提供的 access.conf和srm.conf 文件中沒有具體的設置。
由于在新版本的Apache 中,所有的設置都被放在了httpd.conf 中,因此只需要調(diào)整這個文件中的設置。本文基于redhat 7.2 下的httpd.conf 為例,解釋Apache 服務器的各個設置選項,當然,其配置方法可擴展到幾乎所有unix 系統(tǒng)。
雖然Apache 提供設置的參數(shù)很多,基本上這些 參數(shù)都很明確,也可以不加改動運行Apache 服務器。但如果需要調(diào)整Apache 服務器的性能,以及增加對某種特性的支持,就需要了解這些設置參數(shù)的含義。
需要指出的是,除了操作系統(tǒng)的性能調(diào)整之外,Apache 服務器本身的缺省配置絕不是最優(yōu)化和最高效的,而是要適應幾乎所有種類操作系統(tǒng)、所有種類硬件下的設置,多平臺的軟件不可能為特定平臺和特定硬件提供最優(yōu)化的缺省配置。因此要使用Apache 的時候,性能調(diào)整是必不可少的。
本文目錄快速訪問:
另外一些加速方法
附錄一、采用 mod_gzip 加速Apache
(優(yōu)化沒有捷徑,必須首先清楚各配置的含義)
ServerType standalone
ServerType 定義服務器的啟動方式,缺省值為獨立方式standalone ,httpd 服務器將由其本身啟動,并駐留在主機中監(jiān)視連接請求。在Linux 下將在啟動文件
/etc/rc.d/rc.local/init.d/apache中自動啟動Web 服務器,這種方式是推薦設置。
啟動Apache 服務器的另一種方式是inet 方式,使用超級服務器inetd 監(jiān)視連接請求并啟動服務器。當需要使用inetd 啟動方式時,便需要更改為這個設置,并屏蔽
/etc/rc.d/rc.local/init.d/apache文件,以及更改/etc/inetd.conf并重起 inetd,那么Apache 就能從inetd 中啟動了。
兩種方式的區(qū)別是獨立方式是由服務器自身管理自己的啟動進程,這樣在啟動時能立即啟動服務器的多個副本,每個副本都駐留在內(nèi)存中,一有連接請求不需要生成子進程就可以立即進行處理,對于客戶瀏覽器的請求反應更快,性能較高。而 inetd方式要由inetd 發(fā)現(xiàn)有連接請求后才去啟動http 服務器,由于inetd 要監(jiān)聽太多的端口,因此反應較慢、效率較低,但節(jié)約了沒有連接請求時Web 服務器占用的資源。因此inetd 方式只用于偶爾被訪問并且不要求訪問速度的服務器上。事實上inetd 方式不適合http 的突發(fā)和多連接的特性,因為一個頁面可能包含多個圖象,而每個圖象都會引起一個連接請求,即使雖然訪問人數(shù)造成教少,但瞬間的連接請求并不少,這就受到inetd 性能的限制,甚至會影響由inetd 啟動的其他服務器程序。
ServerRoot "/usr/local"
,ServerRoot 用于指定守護進程httpd 的運行目錄,httpd 在啟動之后將自動將進程的當前目錄改變?yōu)檫@個目錄,因此如果設置文件中指定的文件或目錄是相對路徑,那么真實路徑就位于這個ServerRoot 定義的路徑之下。
由于httpd 會經(jīng)常進行并發(fā)的文件操作,就需要使用加鎖的方式來保證文件操作不沖突,由于NFS 文件系統(tǒng)在文件加鎖方面能力有限,因此這個目錄應該是本地磁盤文件系統(tǒng),而不應該使用NFS 文件系統(tǒng)。
# LockFile /var/lock/httpd.lock
LockFile 參數(shù)指定了httpd 守護進程的加鎖文件,一般不需要設置這個參數(shù), Apache服務器將自動在ServerRoot 下面的路徑中進行操作。但如果ServerRoot 為NFS 文件系統(tǒng),便需要使用這個參數(shù)指定本地文件系統(tǒng)中的路徑,以提高讀寫速度。
PidFile /var/run/httpd.pid
PidFile 指定的文件將記錄httpd 守護進程的進程號,由于httpd 能自動復制其自身,因此系統(tǒng)中有多個httpd 進程,但只有一個進程為最初啟動的進程,它為其他進程的父進程,對這個進程發(fā)送信號將影響所有的httpd 進程。PidFILE 定義的文件中就記錄httpd 父進程的進程號。
ScoreBoardFile /var/run/httpd.scoreboard
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
這兩個參數(shù)ResourceConfig 和AccessConfig ,就用于和使用 srm.conf 和
access.conf 設置文件的老版本Apache 兼容。如果沒有兼容的需要,可以將對應的設置文件指定為/dev/null,這將表示不存在其他設置文件,而僅使用 httpd.conf 一個文件來保存所有的設置選項。
Timeout 300
Timeout 定義客戶程序和服務器連接的超時間隔,超過這個時間間隔(秒)后服務器將斷開與客戶機的連接。如果服務器的負載較重,可適當把此數(shù)字調(diào)小。
KeepAlive On
在HTTP 1.0中,一次連接只能作傳輸一次HTTP 請求,而KeepAlive 參數(shù)用于支持HTTP 的一次連接、多次傳輸功能,這樣就可以在一次連接中傳遞多個HTTP 請求。
MaxKeepAliveRequests 100
MaxKeepAliveRequests 為一次連接可以進行的HTTP 請求的最大請求次數(shù)。將其值設為0將支持在一次連接內(nèi)進行無限次的傳輸請求。事實上沒有客戶程序在一次連接中請求太多的頁面,通常達不到這個上限就完成連接了。 可以適當將此數(shù)字調(diào)小,以獲取最大速度。
KeepAliveTimeout 15
KeepAliveTimeout 測試一次連接中的多次請求傳輸之間的時間,如果服務器已經(jīng)完成了一次請求,但一直沒有接收到客戶程序的下一次請求,在間隔超過了這個參數(shù)設置的值之后,服務器就斷開連接??梢赃m當調(diào)小這個數(shù)值,以盡快釋放空閑的連接。但也不可太小,不然多數(shù)客戶都要重新連接,將耗費 CPU時間。
MinSpareServers 5
MaxSpareServers 10
,在使用子進程處理HTTP 請求的Web 服務器上,由于要首先生成子進程才能處理客戶的請求,因此反應時間就有一點延遲。但是,Apache 服務器使用了一個特殊技術來擺脫這個問題,這就是預先生成多個空余的子進程駐留在系統(tǒng)中,一旦有請求出現(xiàn),就立即使用這些空余的子進程進行處理,這樣就不存在生成子進程造成的延遲了。在運行中隨著客戶請求的增多,啟動的子進程會隨之增多,但這些服務器副本在處理完一次HTTP 請求之后并不立即退出,而是停留在計算機中等待下次請求。但是空余的子進程副本不能光增加不減少,太多的空余子進程沒有處理任務,也占用服務器的處理能力,因此也要限制空余副本的數(shù)量,使其保持一個合適的數(shù)量,使得既能及時回應客戶請求,又能減少不必要的進程數(shù)量。
因此就可以使用參數(shù)MinSpareServers 來設置最少的空余子進程數(shù)量, 以及使用參數(shù)MaxSpareServers 來限制最多的空閑子進程數(shù)量,多余的服務器進程副本就會退出。根據(jù)服務器的實際情況來進行設置,如果服務器性能較高,并且也被頻繁訪問,就應該增大這兩個參數(shù)的設置。對于高負載的專業(yè)網(wǎng)站,這兩個值應該大致相同,并且等同于系統(tǒng)支持的最多服務器副本數(shù)量,也減少不必要的副本退出。
比如,當系統(tǒng)高負載時,可以這樣檢測:
[iaspec@www iaspec]$ ps -ef|grep apache|wc
55 .. ..
[iaspec@www iaspec]$
這表明,高負載時有55個運行子進程,如果此服務器為WEB 專用服務器,就應該考慮將這兩個數(shù)值分別設為50、60,或者40、70,具體以速度測試結(jié)果為準。
StartServers 5
StartServers 參數(shù)就是用來設置httpd 啟動時啟動的子進程副本數(shù)量,這個參數(shù)與上面定義的MinSpareServers 和 MaxSpareServers參數(shù)相關,都是用于啟動空閑子進程以提高服務器的反應速度的。這個參數(shù)應該設置為前兩個值之間的一個數(shù)值,小于
MinSpareServers 和大于MaxSpareServers 都沒有意義。
MaxClients 150
在另一方面,服務器的能力畢竟是有限的,不可能同時處理無限多的連接請求,因此參數(shù)Maxclients 就用于規(guī)定服務器支持的最多并發(fā)訪問的客戶數(shù),如果這個值設置得過大,系統(tǒng)在繁忙時不得不在過多的進程之間進行切換來為太多的客戶進行服務,這樣對每個客戶的反應就會減慢,并降低了整體的效率。如果這個值設置的較小,那么系統(tǒng)繁忙時就會拒絕一些客戶的連接請求。當服務器性能較高時,就可以適當增加這個值的設置。對于專業(yè)網(wǎng)站,應該使用提高服務器效率的策略,因此這個參數(shù)不能超過硬件本身的限制,如果頻繁出現(xiàn)拒絕訪問現(xiàn)象,就說明需要升級服務器硬件了。當不太在意對客戶瀏覽器的反應速度,或者認為反應速度較慢也比拒絕連接好,就也可以略微超過硬件條件來設置這個參數(shù)。
但具體這個數(shù)值以多少為宜呢?當對性能要求較高時,可以用下面的方法確定如何配置此參數(shù)。
首先,估計你的最大可能并發(fā)的連接數(shù),或者在高負載時用ps -ef|grep apache|wc命令測得最大進程數(shù),通常MaxClients 應該是這個數(shù)值的兩倍左右。如果當前網(wǎng)站在高負載時的訪問速度可以接受,但有拒絕服務現(xiàn)象,則應把此參數(shù)調(diào)大,如果無拒絕服務現(xiàn)象,但訪問速度緩慢,則應減低此數(shù)值。
這個參數(shù)同時限制了MinSpareServers 和MaxSpareServers 的設置,它們不應該大于這個參數(shù)的設置。
對于重負載的機器來說,僅僅這么做還是不夠的。
Apache 允許為請求開的最大進程數(shù)是256,MaxClients 的限制是256. 如果用戶多了,用戶就只能看到Waiting for reply....然后等到下一個可用進程的出現(xiàn)。這個最大數(shù),是
,Apache 的程序決定的--它的NT 版可以有1024,但Unix 版只有256,你可以在
include/httpd.h中
看到:
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#else
#define HARD_SERVER_LIMIT 256
#endif
#endif
你可以把它調(diào)到1024,然后再編譯你的系統(tǒng)。記得在httpd.conf 里也要更改相應配置。 MaxRequestsPerChild 30
使用子進程的方式提供服務的Web 服務,常用的方式是一個子進程為一次連接服務,這樣造成的問題就是每次連接都需要生成、退出子進程的系統(tǒng)操作,使得這些額外的處理過程占據(jù)了計算機的大量處理能力。因此最好的方式是一個子進程可以為多次連接請求服務,這樣就不需要這些生成、退出進程的系統(tǒng)消耗, Apache就采用了這樣的方式,一次連接結(jié)束后,子進程并不退出,而是停留在系統(tǒng)中等待下一次服務請求,這樣就極大的提高了性能。
但由于在處理過程中子進程要不斷的申請和釋放內(nèi)存,次數(shù)多了就會造成一些內(nèi)存垃圾,就會影響系統(tǒng)的穩(wěn)定性,并且影響系統(tǒng)資源的有效利用。因此在一個副本處理過一定次數(shù)的請求之后,就可以讓這個子進程副本退出,再從原始的 httpd進程中重新復制一個干凈的副本,這樣就能提高系統(tǒng)的穩(wěn)定性。這樣,每個子進程處理服務請求次數(shù)由
MaxRequestPerChild 定義。缺省的設置值為30,這個值對于具備高穩(wěn)定性特點的Linux 系統(tǒng)來講是過于保守的設置,可以設置為1000甚至更高,設置為0支持每個副本進行無限次的服務處理。
#Listen 3000
#Listen 12.34.56.78:80
#BindAddress *
Listen 參數(shù)可以指定服務器除了監(jiān)視標準的80端口之外,還監(jiān)視其他端口的HTTP 請求。由于系統(tǒng)可以同時擁有多個IP 地址,因此也可以指定服務器只聽取對某個BindAddress< /B>;的IP 地址的HTTP 請求。如果沒有配置這一項,則服務器會回應對所有IP 的請求。
即使使用了BindAddress 參數(shù),使得服務器只回應對一個IP 地址的請求,但是通過使用擴展的Listen 參數(shù),仍然可以讓HTTP 守護進程回應對其他IP 地址的請求。此時Listen 參數(shù)的用法與上面的第二個例子相同。這種比較復雜的用法主要用于設置虛擬主機。此后可以用 VirtualHost參數(shù)定義對不同IP 的虛擬主機,然而這種用法是較早的HTTP 1.0標準中設置虛擬主機的方法,每針對一個虛擬主機就需要一個IP 地址,實際上用處并不大。在HTTP 1.1中,增加了對單IP 地址多域名的虛擬主機的支持,使得虛擬主機的設置具備更大的意義。
模塊變量
LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
LoadModule info_module libexec/apache/mod_info.so
LoadModule speling_module libexec/apache/mod_speling.so
LoadModule proxy_module libexec/apache/libproxy.so
LoadModule rewrite_module libexec/apache/mod_rewrite.so
LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
,LoadModule db_auth_module libexec/apache/mod_auth_db.so
LoadModule digest_module libexec/apache/mod_digest.so
LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
LoadModule expires_module libexec/apache/mod_expires.so
LoadModule headers_module libexec/apache/mod_headers.so
LoadModule usertrack_module libexec/apache/mod_usertrack.so
LoadModule unique_id_module libexec/apache/mod_unique_id.so
ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime_magic.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_speling.c
AddModule mod_userdir.c
AddModule mod_proxy.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_cern_meta.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_setenvif.c
Apache 服務器的一個重要特性就是其模塊化的結(jié)構,這不但表現(xiàn)為其能在編譯時能通過新的模塊加入新的功能,還表現(xiàn)為其模塊可以動態(tài)加載入http 服務程序中,而不必載入不需要的模塊。使用Apache 的動態(tài)加載模塊只需要設置好Load Module和AddModule 參數(shù)就可以了,這種特性就是Apache 的 DSO(Dynamic Shared Object )特性,然而要想充分使