zhyiwww
          用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
          posts - 536,comments - 394,trackbacks - 0
          ?

          Apache配置

          ???http://grid.tsinghua.edu.cn/home/liulk/publish/computer/ApacheConfig.html
          
            Linux Apache Web 服務(wù)器終極教程作者:佚名 文章來源:internet 
          
            根據(jù)著名的WWW服務(wù)器調(diào)查公司所作的調(diào)查,世界上百分之五十以上的WWW服務(wù)
            器都在使用Apache,是世界排名第一的WEB服務(wù)器。Apache的誕生極富有戲劇性。
            當(dāng)NCSA WWW服務(wù)器項(xiàng)目停頓后,那些使用NCSA WWW服務(wù)器的人們開始交換他們
            用于該服務(wù)器的補(bǔ)丁程序,他們也很快認(rèn)識(shí)到成立管理這些補(bǔ)丁程序的論壇是
            必要的。就這樣,誕生了Apache Group,后來這個(gè)團(tuán)體在NCSA的基礎(chǔ)上創(chuàng)建了
            Apache。
          
              Apache的主要特征是:
          
            .  可以運(yùn)行上所有計(jì)算機(jī)平臺(tái);
          
            .  支持最新的HTTP 1.1協(xié)議;
          
            .  簡單而強(qiáng)有力的基于文件的配置;
          
            .  支持通用網(wǎng)關(guān)接口CGI;
          
            .  支持虛擬主機(jī);
          
            .  支持HTTP認(rèn)證;
          
            .  集成Perl腳本編程語言;
          
            .  集成的代理服務(wù)器;
          
            .  具有可定制的服務(wù)器日志;
          
            .  支持服務(wù)器端包含命令(SSI)
          
            .  支持安全Socket層(SSL)
          
            .  用戶會(huì)話過程的跟蹤能力;
          
            .  支持FastCGI;
          
            .  支持Java Servlets。
          
          
            安裝Apache
          
          
              下面我們就開始漫漫征服Apache之旅,通過循序漸進(jìn)的需求實(shí)例,一步步
            地學(xué)習(xí)使用Apache,從入門到精通。
          
          
          
            系統(tǒng)需求
          
              運(yùn)行Apache不需要太多的計(jì)算資源。它在有6-10MB硬盤空間和8MB RAM的
            Linux系統(tǒng)上運(yùn)行得很好。然而,只運(yùn)行Apache可能不是你想做的事情。更可能
            的是,你想運(yùn)行Apache來提供WWW服務(wù)、啟動(dòng)CGI進(jìn)程以及充分利用所有WWW能夠
            提供的令人驚奇的功能。在這種情況下,你需要提供反映負(fù)載要求的額外的磁
            盤空間和內(nèi)存空間。也就是說,如果僅僅是啟動(dòng)WWW服務(wù)并不需要太多的系統(tǒng)資
            源,但是想要能為大量的客戶提供服務(wù)就需要更多的系統(tǒng)資源。
          
            獲取軟件
          
              你可以在http://www.apache.org中獲得Apache的最新版。而幾乎所有的
            Linux發(fā)行版中均包含有Apache軟件包,你也可以直接使用它。
          
            需要注意的是,Apache軟件包有兩種:一種是源代碼,下載后需要自己重新編
            譯;另一種是可執(zhí)行文件,下載后只需解壓就可以使用。
          
          
          
            安裝軟件
          
              你可以通過以下三種方法安裝Apache服務(wù)器。
          
          
              1.如果你安裝的Linux版本中帶用Apache的話,就在選擇所要安裝的服務(wù)
            器的時(shí)候,將httpd這個(gè)服務(wù)選上,Linux安裝程序?qū)⒆詣?dòng)完成Apache的安裝工
            作,并做好基本的配置。
          
              2.使用可執(zhí)行文件軟件包,這比較適合那些對編譯工作不是太熟悉的初級(jí)
            用戶,因?yàn)樗鄬Ρ容^簡單。
          
              下載軟件包apache_1.2.4.e.tar.gz
          
              tar xvzf apache_1.2.4.e.tar.gz
          
              這就完成了安裝工作,簡單吧!
          
              如果你使用的是RedHat Linux的話,你也可以下載apache_1.2.4.rpm軟件
            安裝包,然后使用rpm -ivh   apache_1.2.4.rpm命令安裝。
          
              3.如果你想把Apache服務(wù)器充分利用起來的話,就一定要自己編譯
            Apache定制其功能。
          
            下載包含Apache源代碼的軟件包apache_1.2.4.tar.gz; 然后用tar命令將它解
            開; 將當(dāng)前目錄改變?yōu)锳pache源代碼發(fā)行版的src目錄; 將配置樣本文件
            (Configuration.tmpl)復(fù)制為Configuration文件;
          
            編輯Configuration文件中的配置選項(xiàng):
          
            Makefile配置選項(xiàng):一些編譯選項(xiàng):
          
            . "CC="一行指定用什么編譯軟件編譯,一般為"CC=gcc";
          
            . 如果需要將額外的標(biāo)志(參數(shù))指定給C編譯軟件,可以使用:
          
            EXTRA_CFLAGS=
          
            EXTRA_LFLAGS=
          
            . 如果系統(tǒng)需要特殊的庫和包含文件,可以在這里指定它們:
          
            EXTRA_LIBS=
          
            EXTRA_INCLUDES=
          
            . 如果你要改變代碼優(yōu)化設(shè)置的話,你須將下面一句去掉注釋,然
          
            后改成你所需要的值:
          
            #OPTIM=-O2
          
            Rule配置選項(xiàng):用來決定需要什么功能,一般情況下無需改變。
          
            模塊配置:模塊是Apache的組成部分,它為Apache內(nèi)核增加新功能。通過使用
            模塊配置,可以自定義在Apache服務(wù)器中需要什么功能,這個(gè)部分也是Apache
            靈活性的表現(xiàn)。模塊配置行如下所示:
          
            AddModule modules/standard/mod_env.o
          
            如果你需要Apache服務(wù)器具備什么功能,就將那個(gè)模塊用AddModule語句加到配
            置文件Configuration中去。
          
            下表列出了Apache的模塊功能:
          
            模塊名 功能 缺省
          
            mod_access 提供基于主機(jī)的訪問控制命令 y
          
            mod_actions 能夠運(yùn)行基于MIME類型的CGI腳本或HTTP請求方法 y
          
            mod_alias 能執(zhí)行URL重定向服務(wù) y
          
            mod_asis 使文檔能在沒有HTTP頭標(biāo)的情況下被發(fā)送到客戶端 y
          
            mod_auth 支持使用存儲(chǔ)在文本文件中的用戶名、口令實(shí)現(xiàn)認(rèn)證 y
          
            mod_auth_dbm 支持使用DBM文件存儲(chǔ)基本HTTP認(rèn)證 n
          
            mod_auth_mysql 支持使用MySQL數(shù)據(jù)庫實(shí)現(xiàn)基本HTTP認(rèn)證 n
          
            mod_auth_anon 允許以匿名方式訪問需要認(rèn)證的區(qū)域 y
          
            mod_auth_external支持使用第三方認(rèn)證 n
          
            mod_autoindex 當(dāng)缺少索引文件時(shí),自動(dòng)生成動(dòng)態(tài)目錄列表 y
          
            mod_cern_meta 提供對元信息的支持 n
          
            mod_cgi 支持CGI y
          
            mod_dir 能夠重定向任何對不包括尾部斜杠字符命令的請求 y
          
            mod_env 使你能夠?qū)h(huán)境變量傳遞給CGI或SSI腳本 n
          
            mod_expires 讓你確定Apache在服務(wù)器響應(yīng)請求時(shí)如何處理Expires y
          
            mod_headers 能夠操作HTTP應(yīng)答頭標(biāo) y
          
            mod_imap 提供圖形映射支持 n
          
            mod_include 使支持SSI n
          
            mod_info 對服務(wù)器配置提供了全面的描述 y
          
            mod_log_agent 允許在單獨(dú)的日志文件中存儲(chǔ)用戶代理的信息 n
          
            mod_log_config 支持記錄日志 y
          
            mod_log_referer 提供了將請求中的Referer頭標(biāo)寫入日志的功能 n
          
            mod_mime 用來向客戶端提供有關(guān)文檔的元信息 y
          
            mod_negotiation 提供了對內(nèi)容協(xié)商的支持 y
          
            mod_setenvif 使你能夠創(chuàng)建定制環(huán)境變量 y
          
            mod_speling 使你能夠處理含有拼寫錯(cuò)誤或大小寫錯(cuò)誤的URL請求 n
          
            mod_status 允許管理員通過WEB管理Apache y
          
            mod_unique_id 為每個(gè)請求提供在非常特殊的條件下保證是唯一的標(biāo)識(shí) n
          
          
            在src目錄下執(zhí)行:". /configure";
          
            編譯Apache:執(zhí)行命令"make";
          
            根據(jù)機(jī)器性能的不同,經(jīng)歷一段5-30分鐘的編譯,就大功告成了。
          
            將編譯好的可執(zhí)行文件httpd復(fù)制到/etc/httpd/bin目錄下;
          
            將Apache發(fā)行版的配置文件:access.conf、httpd.conf、mime.types、
            srm.conf文件復(fù)制到/etc/httpd/conf目錄下。到此為止,安裝完成。
          
          
            一些說明
          
            在Red Hat Linux 6.0中,Apache將自己的所有配置文件和日志文件放在了
            "/etc/httpd"目錄下,其中"/etc/httpd/conf"下為配置文
            件,"/etc/httpd/log"下為日志文件。
          
            同時(shí),它將建立"/home/httpd"目錄,并在其下建立三個(gè)子目錄:"html/":在
            這個(gè)目錄下存放HTML(主頁)文件;"cgi-bin/":在這個(gè)目錄下可以存放一些
            CGI程序;"icons/":在這個(gè)目錄下是服務(wù)器自帶的一些圖標(biāo)。
          
            配置Apache基礎(chǔ)篇,讓W(xué)WW服務(wù)器跑起來
          
            Apache 服務(wù)器軟件的配置文件主要有:"access.conf":用于設(shè)置系統(tǒng)中的存
            取方式和環(huán)境;"httpd.conf":用于設(shè)置服務(wù)器啟動(dòng)的基本環(huán)境;
            "srm.conf":主要用于做文件資源上的設(shè)定;"mime.type":記錄Apache服務(wù)器
            所能識(shí)別的MIME格式。
          
            在具體講解之前,我們必須告訴大家,Apache已經(jīng)在安裝時(shí)就采用了一系列的
            缺省值,已經(jīng)讓W(xué)WW服務(wù)器跑起來了。你只需要將裝上Linux+Apache的主機(jī)聯(lián)入
            Internet,然后將主頁存放到"/home/httpd"目錄下即可。
          
            下面介紹一些最主要的配置選項(xiàng)的含義,以便大家用最小的精力、最小的配置
            準(zhǔn)備好服務(wù)器。
          
          
            httpd.conf
          
            tpd.conf是主配置文件。它告訴服務(wù)器將如何運(yùn)行。
          
            一、最重要的配置選項(xiàng)ServerType standalone | inetd
          
              這個(gè)配置選項(xiàng)指定如何運(yùn)行WEB服務(wù)器。Apache可以使用兩種方法來運(yùn)行服
            務(wù)器:standalone(獨(dú)立的)和inetd(由inetd運(yùn)行的)。standalone參數(shù)表示
            WEB服務(wù)進(jìn)程以一個(gè)單獨(dú)的守候進(jìn)程的方式在后臺(tái)偵聽是否有客戶端的請求,如
            果有就生成一個(gè)子進(jìn)程來為其服務(wù)。 inetd參數(shù)表示W(wǎng)EB服務(wù)不是以一個(gè)單獨(dú)的
            守候進(jìn)程的形式支持。而是由Inetd這個(gè)超級(jí)服務(wù)器守候進(jìn)程進(jìn)行代勞,當(dāng)它收
            到一個(gè)客戶端的WEB服務(wù)請求的時(shí)候,再啟動(dòng)一個(gè)WEB服務(wù)進(jìn)程為其服務(wù)。從功
            能的角度看,這兩種方法幾乎是相同的。但它們之間實(shí)際有很大區(qū)別,區(qū)別在
            于服務(wù)器的性能。一個(gè)由 inted運(yùn)行的服務(wù)器進(jìn)程在它結(jié)束對請求服務(wù)的同時(shí)
            立刻退出。而在standalone模式下,子WWW服務(wù)器進(jìn)程在退出之前要掛起一段時(shí)
            間,這就給它們提供了機(jī)會(huì),可以重新用來服務(wù)新的請求。
          
            在standalone模式下,不存在對每個(gè)請求啟動(dòng)新進(jìn)程的開銷,所以它的效率更
            高;而inetd模式被認(rèn)為比standalone模式更具安全性。
          
            standalone模式:
          
            此種模式下,WWW服務(wù)器偵聽特定端口的連接請求。當(dāng)客戶機(jī)發(fā)出到特定端口地
            址的連接請求時(shí),主服務(wù)器進(jìn)程啟動(dòng)子WWW服務(wù)進(jìn)程來服務(wù)該請求。另外還需要
            告訴主服務(wù)器進(jìn)程偵聽的特定端口地址,使用命令:
          
            Port [number] (缺省值為80)
          
            inetd模式
          
            inetd 是偵聽有小于1024的端口連接請求的Internet守護(hù)進(jìn)程(一個(gè)服務(wù)器進(jìn)
            程)。與前面的方法不同,當(dāng)客戶系統(tǒng)發(fā)出到WWW服務(wù)器的連接請求時(shí), inetd
            啟動(dòng)一個(gè)WWW服務(wù)器進(jìn)程,由此進(jìn)程服務(wù)此請求,完成服務(wù)后即退出。如果選擇
            通過inetd服務(wù)器來運(yùn)行Apache,需要編輯 /etc/inetd.conf文件為Apache添加
            一條新的記錄:
          
            httpd stream tcp nowait httpd /etc/httpd/bin/httpd -f
            /etc/httpd/conf/httpd.conf
          
            修改了/etc/inetd.conf文件后,就需要修改/etc/services中添加一行
          
            httpd 80/tcp httpd
          
            做完以上修改后,需要重新啟動(dòng)inetd進(jìn)程。首先,使用以下命令取得inetd的
            進(jìn)程ID:
          
            ps auxw |grep inetd
          
            然后執(zhí)行命令:kill -HUP <inetd的進(jìn)程ID>
          
            在RedHat Linux中,默認(rèn)是采用inetd服務(wù)器來運(yùn)行Apache,所以只要你在安裝
            時(shí)選擇了httpd,以上工作在安裝時(shí)就已經(jīng)代你完成了。
          
          
            二、其它配置選項(xiàng)
          
              Server Admin命令,用來設(shè)置WEB管理員的E-Mail地址。這個(gè)地址會(huì)出現(xiàn)在
            系統(tǒng)連接出錯(cuò)的時(shí)候,以便訪問者能夠?qū)⑶闆r及時(shí)地告知WEB管理員。
          
            命令格式: Server Admin [you E-Mail address]
          
            例:Server Admin admin@xxx.com
          
            ErrorLog命令,用來指定錯(cuò)誤記錄文件名稱和路徑。
          
            命令格式: ErrorLog [log filename]
          
            例:ErrorLog /var/httpd/error.log
          
            Timeout命令,只要客戶端超過這里設(shè)定的秒數(shù)還沒有完成一個(gè)請求的話,服務(wù)
            端將終止這次請求服務(wù)。如果網(wǎng)絡(luò)速度較慢的話,建議在此設(shè)置較大的數(shù)值。
            以給客戶端更多機(jī)會(huì)。
          
            命令格式: Timeout [second]
          
            例:Timeout 120
          
            ServerRoot命令,它指定在何處保存服務(wù)器的配置、錯(cuò)誤及日志文件。
          
            命令格式: ServerRoot [fully qualified path name]
          
            例:ServerRoot /etc/httpd
          
            ServerName命令,它配置服務(wù)器的Internet主機(jī)名
          
            命令格式: ServerName [host name]
          
            例:ServerName www.xxx.com
          
          
            srm.conf
          
            srm.conf是資源配置文件,用它來告訴服務(wù)器你想在WWW站點(diǎn)上提供什么資源以
            及在哪里和如何提供們。
          
            DocumentRoot命令,用來指定主文檔的地址。
          
            命令格式: DocumentRoot [Path]
          
            例:DocumentRoot /home/httpd/html
          
            UserDir 命令,用來指定個(gè)人主頁的位置。如果你有一個(gè)用戶test,那么它主
            目錄是"/home/test",當(dāng)客戶端輸入"http: //yourdomain/~test";;,系統(tǒng)就
            會(huì)到對應(yīng)的目錄"/home/test/UserDir/"中去尋找。其中"UserDir"就是在
            UserDir命令中設(shè)置的指定目錄。
          
            命令格式: UserDir [Path]
          
            例: UserDir Public_html
          
            DirectoryIndex 命令,用來聲明首頁文件名稱。一般地,我們使用
            "index.html"或"index.htm"作為首頁的文件名。如果這樣設(shè)置后,那么客戶端
            發(fā)出 WEB服務(wù)請求時(shí),將首先調(diào)入的主頁是在指定目錄下文?quot;index.html"或
            "index.htm"。
          
            命令格式: DirecotryIndex [filename]
          
            例:DirecotryIndex index.html index.htm
          
            ScriptAlias命令,為腳本程序目錄起個(gè)別名,具體可見4.7小節(jié)。
          
            命令格式: ScriptAlias [/alias/] [fullly qualified path for script
            directory]
          
            例: ScriptAlias /cgi-bin/ /home/httpd/cgi-bin
          
          
            access.conf的配置
          
            access.conf文件用來設(shè)置WWW站點(diǎn)上諸如文件、目錄和腳本項(xiàng)目的訪問權(quán)限。
            該文件的第一段非注釋部分如下:
          
            <Directory /home/httpd/html>
          
            Option Indexes Includes ExecCGI FollowSymLink
          
            AllowOverride None
          
            Order allow , deny
          
            allow from all
          
            </Directory>
          
            大家應(yīng)該注意到,這一個(gè)部分是以<Directory /home/httpd/html>開始,以
            </Directory>結(jié)束的。這表示在其中間的部分都是針對指定目錄
            &#0;&#0;"/home/httpd/html"而言的。
          
            1.Option命令有很多的參數(shù),各個(gè)參數(shù)的意義如下所示:
          
            All 準(zhǔn)許以下所有功能(MultiViews除外);
          
            MultiViews 準(zhǔn)許內(nèi)容協(xié)商的Multiviews;
          
            Indexes 若該目錄下無index文件,則準(zhǔn)許顯示該目錄下的文件以供選擇;
          
            IncludesNOEXEC 準(zhǔn)許SSI(Server-side Includes),但不可使用#exec和
            #include功能;
          
            Includes 準(zhǔn)許SSI;
          
            FollowSymLinks 準(zhǔn)許符號(hào)鏈接到其他目錄;
          
            ExecCGI 準(zhǔn)許該目錄下可以使用CGI。
          
            2.而AllowOverride命令則是用來決定是否準(zhǔn)許在"access.conf"文件中設(shè)定的
            權(quán)限是否可以被在文件".htaccess"中設(shè)定的權(quán)限覆蓋。它有兩個(gè)參數(shù):
          
            All 準(zhǔn)許覆蓋;
          
            None 不準(zhǔn)許覆蓋。
          
            3.Order命令:用來設(shè)定誰能從這個(gè)服務(wù)器取得控制。它也有兩個(gè)參數(shù):
          
          
            allow 可以取得控制;
          
            deny 禁止取得控制。
          
            現(xiàn)在我們一起來看看關(guān)于目錄"/home/httpd/html"的設(shè)置的含義:它使得這個(gè)
            目錄,如果不存在index.htm文件時(shí),列出目錄信息以供選擇,準(zhǔn)許SSI,允許
            執(zhí)行CGI程序,開啟了動(dòng)態(tài)連接。它不允許再使用在文件".htaccess"中設(shè)定來
            覆蓋這里所設(shè)置的權(quán)限。使所有的人都可以取得控制。
          
            該文件的第二段非注釋部分如下:
          
            <Directory /home/httpd/cgi-bin>
          
            Option ExecCGI
          
            AllowOverride None
          
            </Directory>
          
            這個(gè)表示目錄"/home/httpd/cgi"的設(shè)置為,當(dāng)前目錄下可以執(zhí)行CGI程序。不
            允許再使用在文件".htaccess"中設(shè)定來覆蓋這里所設(shè)置的權(quán)限。
          
            需要說明的是,不同的LINUX系統(tǒng)中,可以在這個(gè)文件中看到的信息不完全相
            同,但是根據(jù)這里給出的信息,大家可以參照命令的解釋自行理解文件中的設(shè)
            置,以及根據(jù)自己的需要進(jìn)行相應(yīng)的修改。
          
            4.4 使新的配置生效
          
            在上面,我們可能已經(jīng)根據(jù)新的需求更改了相應(yīng)的配置選項(xiàng),如果我們要使得
            這個(gè)新的配置立即生效。我們就必須重新啟動(dòng)WEB服務(wù)進(jìn)程。在LINUX中,我們
            可以十分方便地使用命令行來使得WEB服務(wù)進(jìn)程重啟。
          
            /etc/rc.d/init.d/httpd restart
          
            五、為用戶開辟個(gè)人主頁空間
          
          
            如果我們利用了LINUX系統(tǒng)架設(shè)了一臺(tái)WEB服務(wù)器,我們不僅可以存放公司的主
            頁,而且還可以為公司的每一個(gè)員工提供一塊個(gè)人主頁的空間。
          
            首先,為需要個(gè)人主頁空間的員工在LINUX上開設(shè)一個(gè)帳號(hào)。這樣,它就擁有了
            一個(gè)用戶主目錄"/home/用戶帳號(hào)名"。
          
            addusr 用戶帳號(hào)名
          
            passwd 用戶帳號(hào)名
          
            在用戶主目錄下建立一個(gè)目錄"public_html",然后為其設(shè)置相應(yīng)的權(quán)限。
          
            cd ~用戶帳號(hào)名
          
            mkdir public_html
          
            chmod 755 public_html
          
            確認(rèn)在srm.conf文件中的UserDir命令設(shè)置的是public_html目錄。讓員工將自
            己的個(gè)人主頁上傳到自己用戶主目錄下的public_html目錄中。
          
            現(xiàn)在就可以使用"http://www.company.com/~用戶帳號(hào)名"來訪問員工的個(gè)人主
            頁了。
          
            用Apache實(shí)現(xiàn)虛擬主機(jī)服務(wù)
          
          
              什么是虛擬主機(jī)服務(wù)
          
              所謂的虛擬主機(jī)服務(wù)就是指將一臺(tái)機(jī)器虛擬成多臺(tái)WEB服務(wù)器。舉個(gè)例子來
            說,一家公司想從事提供主機(jī)代管服務(wù),它為其它企業(yè)提供WEB服務(wù)。那么它肯
            定不是為每一家企業(yè)都各準(zhǔn)備一臺(tái)物理上的服務(wù)器,而是用一臺(tái)功能較強(qiáng)大的
            大型服務(wù)器,然后用虛擬主機(jī)的形式,提供多個(gè)企業(yè)的WEB服務(wù),雖然所有的
            WEB服務(wù)就是這臺(tái)服務(wù)器提供的,但是讓訪問者看起來卻是在不同的服務(wù)器上獲
            得WEB服務(wù)一樣。
          
          
              具體地說,就是,我們可以利用虛擬主機(jī)服務(wù)將兩個(gè)不同
            www.company1.comwww.company2.com的主頁內(nèi)容都存放在同一臺(tái)主機(jī)上。而訪
            問者只需輸入公司的域名就可以訪問到它想得到的主頁內(nèi)容。 用Apache設(shè)置虛
            擬主機(jī)服務(wù)通常可以采用兩種方案:基于IP地址的虛擬主機(jī)和基于名字的虛擬
            主機(jī),下面我們分別介紹一下它們的實(shí)現(xiàn)方法。以便大家在具體的應(yīng)用中能夠
            選擇最合適的實(shí)現(xiàn)方法。
          
          
            設(shè)置實(shí)現(xiàn)基于IP地址的虛擬主機(jī)服務(wù)實(shí)現(xiàn)前提
          
              這種方式需要在機(jī)器上設(shè)置IP別名,也就是在一臺(tái)機(jī)器的網(wǎng)卡上綁定多個(gè)
            IP地址去為多個(gè)虛擬主機(jī)服務(wù)。而且要使用這項(xiàng)功能還要確定在你的LINUX內(nèi)核
            中必須支持IP別名的設(shè)置,否則你還必須重新編譯內(nèi)核。
          
              下面舉一個(gè)擁有兩個(gè)虛擬主機(jī)的服務(wù)設(shè)置,以供參考。
          
            2.配置步驟
          
            假設(shè),我們用來實(shí)現(xiàn)虛擬主機(jī)服務(wù)的機(jī)器,首先已經(jīng)為自己提供了WEB服務(wù),現(xiàn)
            在將為新的一家www.company1.com提供虛擬主機(jī)服務(wù)。
          
            規(guī)劃IP地址:為虛擬主機(jī)申請新的IP地址。(假設(shè)本機(jī)IP地址為202.101.2.1)
          
            www.company1.com 202.101.2.2
          
            2) 讓ISP作好相應(yīng)的域名解析工作。
          
            3) 為網(wǎng)卡設(shè)置IP別名:
          
            /sbin/ifconfig eth0:0 202.101.2.2 netmask 255.255.255.0
          
            4) 重新設(shè)置"/etc/httpd/conf/httpd.conf",在文件中加入:
          
            <VirtualHost 202.101.2.2>
          
            ServerAdmin webmaster@yourdomain.com
          
            DocumentRoot /home/httpd/www.company1.com
          
            ServerName www.company1.com
          
            ErrorLog /var/log/httpd/www.company1.com/error.log
          
            </VirtualHost>
          
            5)建立相應(yīng)的目錄。
          
            mkdir /home/httpd/www.company1.com
          
            mkdir /var/log/httpd/www.company1.com/error.log
          
            6)將相應(yīng)的主頁內(nèi)容存放在相應(yīng)的目錄中即可。
          
            3.不利因素
          
            這種虛擬主機(jī)的實(shí)現(xiàn)方法有一個(gè)嚴(yán)重的不足,那就是,每增加一個(gè)虛擬主機(jī),
            就必須增加一個(gè)IP地址。而由于IP地址空間已經(jīng)十分緊張,所以通常情況下是
            無法取得這么多的IP地址的。而且從某種意義上說,這也是一種IP地址浪費(fèi)。
            設(shè)置實(shí)現(xiàn)基于名字的虛擬主機(jī)服務(wù)而基于名字的虛擬主機(jī)服務(wù),是比較適合使
            用的一種方案。因?yàn)樗恍枰嗟腎P地址,而且配置簡單,無須什么特殊的
            軟硬件支持。現(xiàn)代的瀏覽器大都支持這種虛擬主機(jī)的實(shí)現(xiàn)方法。當(dāng)然,這也就
            是指一些早期的客戶端瀏覽器也許不支持這種虛擬主機(jī)的實(shí)現(xiàn)方法。
          
              正是以上原因,我們沒有理由不使用基于名字的虛擬主機(jī)服務(wù)而使用基于
            IP地址的虛擬主機(jī)服務(wù)。配置基于名字的虛擬主機(jī)服務(wù)需要修改配置文
            件?quot;/etc/httpd/conf/httpd.conf",在這個(gè)配置文件中增加以下內(nèi)容。
          
            NameVirtualHost 202.101.2.1
          
            <VirtualHost 202.101.2.1>
          
            ServerAdmin webmaster@yourdomain.com
          
            DocumentRoot /home/httpd/www.company1.com
          
            ServerName www.company1.com
          
            ErrorLog /var/log/httpd/www.company1.com/error.log
          
            </VirtualHost>
          
            <VirtualHost 202.101.2.1>
          
            ServerAdmin webmaster@yourdomain.com
          
            DocumentRoot /home/httpd/www.company2.com
          
            ServerName www.company2.com
          
            ErrorLog /var/log/httpd/www.company2.com/error.log
          
            </VirtualHost>
          
              也就是在基于IP地址的配置基礎(chǔ)上增加一句:NameVirtualHost
            202.101.2.1而已。在本例中,為了體現(xiàn)只需要增加一次,所以特別地設(shè)置了兩
            個(gè)虛擬主機(jī)服務(wù)。
          
            最后也是建立相應(yīng)的目錄,將主頁內(nèi)容放到相應(yīng)的目錄中去就可以了。
          
          
            配置CGI
          
            1. 什么是CGI
          
            CGI是獨(dú)立于語言的網(wǎng)關(guān)接口規(guī)范,它實(shí)際上可以用任何廣泛流行的應(yīng)用程序開
            發(fā)語言來實(shí)現(xiàn),包括C、C++、Perl、Shell腳本甚至Java。
          
            WEB服務(wù)器從客戶端得到某個(gè)URL,它告訴WEB服務(wù)器,必須運(yùn)行一個(gè)CGI外部應(yīng)
            用程序。那么WEB服務(wù)器啟動(dòng)這一應(yīng)用程序,等待它完成并返回輸出結(jié)果。最
            后,它將此應(yīng)用程序的輸出結(jié)果傳輸給另一端的WEB客戶。
          
            2. 為CGI配置Apache
          
            那么如何使Apache能處理CGI請求呢?我們必須通過相應(yīng)的配置過程告知
            Apache在哪里存儲(chǔ)CGI程序,指明CGI程序的擴(kuò)展等,以下我們逐一介紹一下設(shè)
            置的內(nèi)容與步驟。
          
            創(chuàng)建存儲(chǔ)CGI程序的目錄
          
            創(chuàng)建集中的CGI程序目錄只是建立CGI環(huán)境的開始。如果要考慮提高安全
          
            性的話,應(yīng)將集中的CGI程序目錄保存在DocumnetRoot目錄外,使得訪問者不能
            直接訪問CGI程序。 第一步:在DocumentRoot目錄外創(chuàng)建一個(gè)目錄,然后將所
            有的CGI程序都集中存放在這個(gè)目錄下。例如,你可創(chuàng)建一個(gè)
            /home/httpd/public/apps的目錄作為CGI程序的大本營。
          
            第二步:為CGI程序目錄創(chuàng)建別名,也就是編輯配置文件httpd.conf,加入:
          
            ScriptAlias /cgi-bin/ /home/httpd/public/apps
          
            這樣做后,當(dāng)客戶www.xxx.com/cgi-bin/li.cgi時(shí),WEB服務(wù)器就會(huì)自動(dòng)執(zhí)行
            WEB服務(wù)器上的/home/httpd/public/apps/li.cgi文件。
          
            第三步:為CGI目錄設(shè)置合適的權(quán)限,一般是只允許Apache有讀取和執(zhí)行的權(quán)限
            但沒有寫的權(quán)限。
          
            允許用戶訪問cgi-bin
          
            我們已經(jīng)在4.5小節(jié)中介紹了如何給用戶開辟個(gè)人主頁空間,但如果你的
          
            用戶需要使他的主頁更具有活力,往往會(huì)向你申請cgi-bin訪問服務(wù)。下面我們
            就介紹一個(gè)Apache服務(wù)器為用戶提供的兩種cgi-bin訪問方法。
          
            1)使用Directory或DirectoryMatch容器
          
            當(dāng)在配置文件srm.conf中用UserDir命令被賦值為目錄名稱時(shí),Apache就
          
            把它作為用戶WWW站點(diǎn)的頂層目錄。例如:
          
            UserDir Public_html
          
            當(dāng)Apachewww.xxx.com/~user的請求,就到/home/user/Public_html取出主頁發(fā)
            送給客戶。
          
            如果要為每個(gè)用戶添加CGI支持就在Apache的配置文件access.conf中添加下列
            配置:
          
            <DirectoryMatch "/home/[a-z]+/public_html/cgi-bin">
          
            Options ExecCGI
          
            AddHandler cgi-script .cgi .pl
          
            </DirectoryMatch>
          
            注:將DirectoryMatch換成Directory亦可
          
            在這種方法中,Apache服務(wù)www.xxx.com/~user/cgi-bin請求翻譯成為了
            /home/user/Public_html/cgi-bin/,并允許執(zhí)行任何帶有正確擴(kuò)展名(.cgi
            或.pl)的CGI程序。
          
            使用ScriptAliasMatch命令
          
            通過使用ScriptAliasMatch命令,也可以為每個(gè)用戶添加CGI支持。例如:
          
            ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*)
            /home/$1/public_html/cgi-bin/$2
          
            這個(gè)命令將用戶名與$1相匹配,其中$1與~([a-z]+)相等。將/cgi-bin/后面的
            任何內(nèi)容與$2相匹配,其中$2與(.*)相等。
          
            這個(gè)設(shè)置也就實(shí)現(xiàn)www.xxx.com/~user/cgi-bin/xxx.cgi請求解釋為:
          
            /home/user/Public_html/cgi-bin/xxx.cgi
          
            那么大家想一想,如果你想將這個(gè)請求解釋為:
          
            /home/httpd/public/apps/xxx.cgi
          
            該如何設(shè)置呢?對,應(yīng)該是:
          
            ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/httpd/public /apps/$2
          
            3. Apache為CGI提供的環(huán)境變量
          
            Apache服務(wù)器提供了許多環(huán)境變量可以用于CGI程序的編寫,了解它們也一定有
            助于寫出充分利用Apache的CGI程序,所以在此也對此作一簡單介紹。
          
          
            服務(wù)器變量
          
            服務(wù)器變量由Apache設(shè)置用來通知CGI程序有關(guān)Apache的情況。通過使
          
            用這些變量,CGI程序能確定有關(guān)服務(wù)器的不同信息:Apache的版本,管理員的
            E-Mail地址等。
          
          
            SERVER_SOFTWARE
          
            這個(gè)變量是WWW服務(wù)器Apache的版本號(hào),它的值形如:Apache/Version,如
            Apache/1.3;
          
          
            GATEWAY_INTERFACE
          
            這個(gè)變量的值是當(dāng)前CGI規(guī)范的版本號(hào),其值形如:CGI/1.1;
          
            SERVER_ADMIN
          
            如果在httpd.conf文件中有設(shè)置站點(diǎn)管理員的e-mail地址的話,這個(gè)變量就會(huì)
            存放著這個(gè)e-mail地址;
          
          
            DOCUMENT_ROOT
          
            這個(gè)變量存放在是被訪問的WWW站點(diǎn)的DocumentRoot命令指定的值。
          
            客戶請求變量
          
            Apache提供的有關(guān)客戶請求方的環(huán)境變量有許多,以下只是有選擇性地介紹一
            些最常見的。
          
          
            SERVER_NAME
          
            此變量可以告訴CGI程序它訪問的是哪一個(gè)主機(jī)。這個(gè)值可以是IP地址也可以是
            完整的主機(jī)名;
          
          
            HTTP_ACCEPT
          
            此變量被賦值為客戶所能接受的MIME類型的列表,如:HTTP_ACCEPT=image/gif;
          
          
            HTTP_ACCEPT_CHARSET
          
            此變量被賦值為客戶所能接受的字符集,如:
          
          
            HTTP_ACCEPT_CHARASET=iso-8859-1.,*,utf-8;
          
          
            HTTP_ACCEPT_LANGUAGE
          
            此變量被賦值為客戶所能接受的語言,如:HTTP_ACCEPT_LANGUAGE=en;
          
          
            HTTP_ACCEPT_AGENT
          
            這個(gè)變量指定發(fā)出請求的系統(tǒng)正在運(yùn)行的瀏覽器類型和操作系統(tǒng);
          
             HTTP_PORT:服務(wù)端口;
          
            REMOTE_HOST:客戶端的IP地址或IP名稱信息;
          
          
            REMOTE_PORT:客戶端的端口號(hào);
          
            4. 一點(diǎn)提示
          
            若干年來,通過網(wǎng)關(guān)接口(CGI)已成為服務(wù)器端應(yīng)用程序開發(fā)的事實(shí)標(biāo)準(zhǔn)。但
            隨著時(shí)間的推移,發(fā)現(xiàn)在沉重的CGI負(fù)擔(dān)下許多WWW服務(wù)器系統(tǒng)的表現(xiàn)不盡人意。
            這是因?yàn)镃GI規(guī)范存在瓶頸問題:每當(dāng)客戶系統(tǒng)請求CGI應(yīng)用程序時(shí),WWW服務(wù)器
            就必須啟動(dòng)新的CGI進(jìn)程,直到完成任務(wù)后結(jié)束進(jìn)程。這在負(fù)載不高時(shí),會(huì)工作
            正常。但是,在高負(fù)載時(shí),繁多的進(jìn)程將成為性能的瓶頸問題。
          
          
            所以現(xiàn)在開始出現(xiàn)新的標(biāo)準(zhǔn)來彌補(bǔ)這一不足,其中FastCGI是很有前途的一種新
            的開放式標(biāo)準(zhǔn)。
          
          
            你可以在Apache中通過添加mod_fastcgi.c模塊來支持FastCGI。
          
          
            解讀Apache日志
          
          
              當(dāng)你一步步地看到這里的時(shí)候,相信你的WWW站點(diǎn)已經(jīng)建好,并且已經(jīng)在
            Internet上展現(xiàn)出來了。這時(shí)你可能就會(huì)關(guān)心誰造訪過你的站點(diǎn),或者想知道
            你的Apache服務(wù)器現(xiàn)在的運(yùn)行狀態(tài)與性能如何。下面我們一起通過解讀Apache
            的日志來實(shí)現(xiàn)這個(gè)偉大的愿望。
          
            一、盯著Apache服務(wù)器
          
            Apache允許通過WWW監(jiān)視服務(wù)器的配置信息與運(yùn)行狀態(tài)。
          
          
            1.觀看配置信息
          
          
            如果你的Apache象缺省配置一樣加入了mod_info模塊的話,你就可以通過訪問
            http://localhost/server-info查看服務(wù)器信息。
          
            2.使用狀態(tài)頁
          
            如果你的Apache象缺省配置一樣加入了mod_status模塊的話,你就可以
          
            通過訪問http://localhost/apache-status查看服務(wù)器的運(yùn)行狀態(tài)信息,其中
            包括:
          
            ¨ 服務(wù)器系統(tǒng)的當(dāng)前時(shí)間;
          
            ¨ 服務(wù)器最近一次重啟時(shí)間;
          
            ¨ 服務(wù)器啟動(dòng)后的運(yùn)行時(shí)間;
          
            ¨ 到目前為止服務(wù)的訪問總數(shù);
          
            ¨ 到目前為止傳輸?shù)淖止?jié)總數(shù);
          
            ¨ 服務(wù)請求的子進(jìn)程數(shù);
          
            ¨ 空閑子進(jìn)程數(shù);
          
            ¨ 每個(gè)進(jìn)程狀態(tài)、子進(jìn)程服務(wù)的請求數(shù)以及該子進(jìn)程傳輸?shù)淖止?jié)總數(shù);
          
            ¨ 每秒平均請求數(shù)、每秒傳輸?shù)淖止?jié)數(shù)、每次請求平均傳輸字節(jié)數(shù);
          
            ¨ 目前每個(gè)子進(jìn)程CPU占用及Apache的總的CPU占用率;
          
            ¨ 當(dāng)前主機(jī)及處理的請求。
          
          
            二、什么是日志文件
          
          
            日志文件是Apache工作的記錄,Apache包括了mod_log_config模塊,它用來記
            錄日志。在缺省情況下,它用通用日志格式CLF規(guī)范來寫。CLF日志文件內(nèi)對每
            個(gè)請求均有一個(gè)單獨(dú)行,形如:host ident anthuser date request status
            bytes
          
            其含義如下:
          
            ¨ host&#0;&#0;客戶端主機(jī)的全稱域名或IP地址;
          
            ¨ ident&#0;&#0;存放客戶端報(bào)告的識(shí)別信息;
          
            ¨ authuser&#0;&#0;如果是基于用戶名認(rèn)證的話,值為用戶名;
          
            ¨ date&#0;&#0;請求的日期與時(shí)間;
          
            ¨ request&#0;&#0;客戶端的請求行;
          
            ¨ status&#0;&#0;返回到客戶端的三們數(shù)字的HTTP狀態(tài)碼;
          
            ¨ bytes&#0;&#0;除去HTTP頭標(biāo)外,返回給客戶端的字節(jié)數(shù)。
          
          
            三、分析日志文件
          
          
            有了日志文件后,我們可以利用UNIX的一些工具和一此專門的日志分析工具對
            日志文件進(jìn)行分析。
          
          
            實(shí)例一:列出訪問過本網(wǎng)站的主機(jī)名或IP:
          
            對于這個(gè)需求,我們可以通過一個(gè)Unix的一個(gè)腳本語句來完成:
          
            cat /var/log/httpd/access_log | awk '{print $1}'
          
            用上面的方法雖然可以得到訪問過本網(wǎng)站的主機(jī)名或IP,但是由于有些是多次
            訪問的,我們希望在上面得到的結(jié)果的基礎(chǔ)上做一些優(yōu)化,使得列出的表中,
            每個(gè)主機(jī)只出現(xiàn)一次。我們可以使用:
          
            cat /var/log/httpd/access_log | awk '{print $1}' | wc -l
          
            3. 當(dāng)然,我們可以根據(jù)需要選擇第三方提供日志分析工具甚至自己開發(fā)一些日
            3. 志分析工具來滿足我們的需求。常見的第三方日志分析工具有:WebTrends、
            3. Wusage、wwwstat、http-analyze、pwebstats、WebStat Explorer、
            3. AccessWatch。
          
          
            四、一些提示
          
            日志一方面是我們分析網(wǎng)站的第一手資料,一方面卻是吞噬大量磁盤空間的罪
            魁禍?zhǔn)住K詣e忘了定期轉(zhuǎn)儲(chǔ)或刪除一些老的日志文件。
          
            Apache與代理服務(wù)器
          
              代理服務(wù)器是位于客戶和客戶要訪問的服務(wù)器之間的系統(tǒng)。當(dāng)客戶機(jī)使用
            URL請求訪問遠(yuǎn)程資源時(shí),代理服務(wù)器接受該請求并取得該資源以滿足客戶機(jī)的
            請求。在通常情況下,代理服務(wù)器是客戶機(jī)的服務(wù)器,同時(shí)也是遠(yuǎn)程服務(wù)器的
            客戶。
          
              代理服務(wù)器可以在自己的緩沖區(qū)中存儲(chǔ)被請求的內(nèi)容,當(dāng)這些信息再次被
            請求的時(shí)候,代理服務(wù)器就無需再從遠(yuǎn)程服務(wù)器上取了,這樣代理服務(wù)器就減
            輕了網(wǎng)絡(luò)的瓶頸問題。
          
            Apache可以配置成為代理服務(wù)器。
          
          
            一、前向代理服務(wù)器和逆向代理服務(wù)器
          
            1.前向代理服務(wù)器
          
            前向代理服務(wù)器通常位于用戶主機(jī)和要訪問的遠(yuǎn)程網(wǎng)絡(luò)之間。它從遠(yuǎn)程服務(wù)器
            取得所要求的資源,然后返回給用戶,同時(shí)存在磁盤上,以供下次使用。
          
            在這種情況下,客戶端的主機(jī)知道它們正在使用代理服務(wù)器,因?yàn)槊總€(gè)主機(jī)都
            必須配置為使用代理服務(wù)器。
          
            例如,必須告訴WWW瀏覽器使用代理服務(wù)器,它才能使用代理服務(wù)器。所有的遠(yuǎn)
            程請求都通過代理服務(wù)器傳輸。
          
            這類代理服務(wù)器也稱為緩沖代理服務(wù)器。逆向服務(wù)器也可以緩沖數(shù)據(jù),但它的
            作用愉好與前向服務(wù)器相反。
          
            2.逆向代理服務(wù)器
          
            逆向代理服務(wù)器位于互聯(lián)網(wǎng)資源前面,逆向服務(wù)器從原始服務(wù)器找到被請求的
            資源,并反它返回給用戶主機(jī)。
          
            與前向代理服務(wù)器不同的是,逆向代理服務(wù)器的用戶并不知道它們連接的是代
            理服務(wù)器而不是資源服務(wù)器本身。其結(jié)構(gòu)如下圖所示:
          
            二、配置代理服務(wù)器
          
          
              為了允許Apache作為代理服務(wù)器,需要將ProxyRequests設(shè)為On,然后根據(jù)
            你希望代理服務(wù)器做什么而增加什么附加配置。無論你希望做什么,你所選的
            代理配置都應(yīng)該放入一個(gè)特殊?lt;Directory>容器中。
          
          
            <Directory proxy:*>
          
            …
          
            </Directory>
          
            實(shí)例一:將私有IP網(wǎng)連到互聯(lián)網(wǎng)
          
            假設(shè)私有網(wǎng)上只有一臺(tái)計(jì)算機(jī)被分配了互聯(lián)網(wǎng)上合法的IP地址,這臺(tái)計(jì)算
          
            機(jī)運(yùn)行Apache代理服務(wù)器,ProxyRequest設(shè)置為On,并且不需要附加其他配
            置,所有請求均可由這臺(tái)代理服務(wù)器代理服務(wù)。
          
            實(shí)例二:讓Apache允當(dāng)遠(yuǎn)程WWW站點(diǎn)的緩沖
          
            第一步:將ProxyRequest設(shè)置為On
          
            第二步:創(chuàng)建配置如下:
          
            <Directory proxy:*>
          
            CacheRoot /www/cache
          
            CacheSize 1024
          
            CacheMaxExpire 24
          
            </Directory>
          
            這里的意思是設(shè)置Cache目錄為/www/cache;大小為1024KB,即1MB;緩沖中的
            內(nèi)容在24小時(shí)后失效。
          
            實(shí)例三:建立鏡像站點(diǎn)(其實(shí)這也就是所謂的逆向代理服務(wù)器)
          
            第一步:將ProxyRequest設(shè)置為On
          
            第二步:創(chuàng)建配置如下:
          
            <Directory proxy:*>
          
            ProxyPass / www.mot.com /
          
            CacheRoot /www/cache
          
            CacheDefaultExpire 24
          
            </Directory>
          
            10.3 一些提示
          
            代理服務(wù)器,我們將會(huì)在后面的章節(jié)中詳細(xì)介紹,這里只是針對Apache的功能
            介紹的。用Apache作代理服務(wù)器的性能并不高,效果并不好。不建議使用。
          
            安裝 Apache+PHP+MySQL+imap+GD+Ldap+opens
          
            注意事項(xiàng):
          
            1.如果妳是用 Redhat based 的 Linux 的話,請執(zhí)行 ntsysv 將 httpd 和
            1.Mysql 不要執(zhí)行
          
            2.將 DOWNLOAD 的檔案放到相同的目錄,再用 tar zxvf xxxxxxxx.tar.gz 來
            2.解壓縮,請依照要安裝的軟件進(jìn)入適當(dāng)?shù)哪夸洝?
          
            3.可以到 http://linuxnews.idv.tw/download/ 來下載所需的程序。
          
            MySQL:
          
            ---------------------------------------------------------------
          
            ./configure --prefix=/usr/local/mysql --with-charset=big5
          
            make
          
            make install
          
            cd scripts
          
            ./mysql_install_db
          
            cd /usr/local/mysql/share/mysql/
          
            chmod 611 mysql.server
          
            ./mysql.server start
          
            #編輯 /etc/rc.d/rc.local 加入底下這行以便開機(jī)時(shí)自動(dòng)執(zhí)行 mysql
          
            /usr/local/mysql/share/mysql/mysql.server start
          
            imap:
          
            ---------------------------------------------------------------
          
            make slx
          
            cp ipopd/ipop*.* /usr/sbin
          
            cp imapd/imapd /usr/sbin
          
            cp c-client/c-client.a /usr/local/lib
          
            #請確定你有 /usr/local/include 這個(gè)目錄
          
            cp c-client/rfc822.h /usr/local/include
          
            cp c-client/mail.h /usr/local/include
          
            cp c-client/linkage.h /usr/local/include
          
            GD:
          
            ---------------------------------------------------------------
          
            make
          
            make install
          
            Ldap:
          
            ---------------------------------------------------------------
          
            ./configure --prefix=/usr/local/ldap
          
            make
          
            make depend
          
            cd tests
          
            make
          
            cd ..
          
            make install
          
            Apache:
          
            ---------------------------------------------------------------
          
            ./configure --prefix=/usr/local/apache
          
            openssl:
          
            ---------------------------------------------------------------
          
            ./config
          
            make
          
            make test
          
            make install
          
            mod_ssl:
          
            ---------------------------------------------------------------
          
            ./configure --with-apache=../apache_1.3.19
            --with-ssl=../openssl-0.9.6 --prefix=../apache_1.3.19
          
            php:
          
            ---------------------------------------------------------------
          
            ./configure --with-mysql=/usr/local/mysql
            --with-apache=../apache_1.3.19 --enable-track-vars
            --with-gd=../gd-1.8.4 --with-imap=../imap-4.7c --enable-ftp
            --with-ldap=/usr/local/ldap
          
            make
          
            make install
          
            Apache:
          
            ---------------------------------------------------------------
          
            ./configure --prefix=/usr/local/apache
            --activate-module=src/modules/php4/libphp4.a --enable-module=ssl
          
            make
          
            make certificate
          
            #這時(shí)會(huì)問你一些問題,就是有關(guān)于加密的問題,最后要要求輸入啟動(dòng)的密碼,
            如果輸入密碼的話以后啟動(dòng) httpd 的時(shí)候會(huì)詢問密碼,若不輸
          
            #入密碼的話啟動(dòng)就不會(huì)問了
          
            #PS.啟動(dòng)http
          
            #要加密:apachectl startssl
          
            #不加密:apachectl start
          
            make install
          
            修改 /etc/rc.d/rc.local 加入 /usr/local/apache/bin/apachectl start 來
            開機(jī)時(shí)自動(dòng)啟動(dòng) Apache
          
            再來就是修改 /usr/local/apache/conf/httpd.conf 的設(shè)定檔,將 php 的支
            持加入
          
            建立Apache站點(diǎn)的基本安全機(jī)制
          
            對于WWW服務(wù)來說,在WWW服務(wù)器和WWW瀏覽器之間并不始終維持對話過程。辦要
            WWW服務(wù)器完成對一個(gè)URL請求的服務(wù),連接就斷開了。
          
            在這種情況下,在WWW上保證可以使用的唯一認(rèn)證機(jī)制是由HTTP本身提供 的。
            在標(biāo)準(zhǔn)的Apache服務(wù)器實(shí)現(xiàn)了這樣的認(rèn)證,它能控制哪些主機(jī)可能訪問特定的
            站點(diǎn)或特點(diǎn)的站點(diǎn)的一部分。
          
            這種認(rèn)證可以分為兩種,一種是基于主機(jī)的的認(rèn)證,另一種是基于用戶名/口令
            的認(rèn)證。由于互聯(lián)網(wǎng)上的決大多數(shù)用戶的IP地址是動(dòng)態(tài)獲得的,所以基于主機(jī)
            的認(rèn)證方式并不總適用。所以在大多數(shù)情況下,傳統(tǒng)的基于用戶名/口令的認(rèn)證
            方式更為現(xiàn)實(shí)。下面我們就對這兩種認(rèn)證的實(shí)現(xiàn)做一簡要的介紹。
          
            1. 基于主機(jī)的認(rèn)證方式
          
            在種認(rèn)證模式顧名思義,訪問是用主機(jī)名或主機(jī)IP地址來控制的。支持這種認(rèn)
            證方式的是Apache的mod_access模塊,這個(gè)模塊缺省狀態(tài)下是被安裝了的。該
            模塊用以下幾種Apache命令來提供訪問控制功能。
          
            allow命令
          
            語法:allow from host1 host2 host3 ...
          
            這個(gè)命令定義了允許訪問站點(diǎn)或目錄的主機(jī)清單。主機(jī)清單可以用以下幾
          
            種形式表示:
          
            ALL:代表所有主機(jī);
          
            主機(jī)的全域名,www.mot.com;
          
            主機(jī)的部分域名,如:.mot.com;
          
            完整的IP地址,如:202.98.2.32;
          
            部分IP地址,如:202.98
          
            網(wǎng)絡(luò)地址/網(wǎng)絡(luò)掩碼對,如:202.98.0.0/255.255.0.0
          
            網(wǎng)絡(luò)地址/nn(CIDR定義),如:202.98.0.1/16
          
            deny命令
          
            語法:deny from host1 host2 host3 ...
          
            這個(gè)命令定義了禁止訪問站點(diǎn)或目錄的主機(jī)清單,其他與allow命令相似。
          
            order命令
          
            語法:order deny,allow | allow,deny
          
            這個(gè)命令定義評(píng)價(jià)allow和deny命令的先后順序。
          
            例如:
          
            <Directory /home/httpd/html>
          
            order deny,allow
          
            deny from www.mot.com
          
            allow all
          
            </Directory>
          
            這組命令設(shè)置了www.mot.com訪問/home/httpd/html目錄下的文件。
          
            請大家注意,順序是先deny后allow,如果是:order allow,deny 那么,先允
            許所有的主機(jī)訪問,然后再禁止,這樣是無效的,所有主機(jī)仍然能夠訪問。
          
            2. 基于用戶名/口令的認(rèn)證方式
          
            這種認(rèn)證方式其實(shí)相當(dāng)簡單,當(dāng)WWW瀏覽器請求經(jīng)此認(rèn)證模式保護(hù)的URL
          
            時(shí),將會(huì)出現(xiàn)一個(gè)對話框,要求用戶鍵入用戶名和口令。用戶輸入后,傳給
            WWW服務(wù)器,WWW服務(wù)器驗(yàn)證它的正確性,如果正確,返回頁面,否則返回401錯(cuò)
            誤。要說明的一點(diǎn)是,這種認(rèn)證模式是基本的,并不能用于安全性要求極高的
            場合。
          
            Apache 中有許多模塊可以支持這種認(rèn)證方式,下面我們就介紹一下最基本、最
            標(biāo)準(zhǔn)的mod_auth模塊。正如前面提到的一樣,mod_auth模塊使用存儲(chǔ)在文本文
            件中的用戶名、組名和口令來實(shí)現(xiàn)認(rèn)證。這種方法非常適合處理少量用戶,它
            能工作得很好。如果你需要對大量的用戶,如數(shù)以千計(jì)的用戶做認(rèn)證時(shí),這種
            方法的性能將急劇下降到不可忍受,所以當(dāng)這種情況下,就需要考慮使用
            mod_dbm模塊或mod_mysql模塊來獲得更好的性能。
          
            實(shí)例一:需要用戶名和口令的訪問控制
          
            下面我們就一起來看一下如何建立需要用戶名/口令才能進(jìn)行訪問的目錄。
          
            基本情況: www.xxx.com
          
            的站點(diǎn)有設(shè)置為:
          
            DocumentRoot /home/httpd/html
          
            AccessFileName .htaccess
          
            AllowOverride All
          
            需求:限制/home/httpd/html/backup/目錄的訪問,只允許用戶"super"以口令
            "fill-06"訪問此目錄。
          
            實(shí)現(xiàn)步驟:
          
            使用htpasswd建立用戶文件
          
            htpasswd -c /home/httpd/secr/.htpasswd super
          
            此程序會(huì)詢問用戶"super"的口令,你輸入"fill-06",兩次生效。
          
            建立.htaccess文件
          
            用vi在/home/httpd/html/backup/目錄下建立一個(gè)文件.htaccess,寫入
          
            以下幾行:
          
            AuthName My Friend Only (注:這個(gè)名字是任取的)
          
            AuthType Basic
          
            AuthUserFile /home/httpd/secr/.htpasswd
          
            require user super
          
            設(shè)置文件權(quán)限,確保Apache用戶有讀的權(quán)限
          
            這樣就完成了設(shè)置工作,你可以試一試效果了。
          
            實(shí)例二:允許一組用戶訪問一個(gè)目錄
          
            假設(shè),www.xxx.com想讓myfriend組中的mf1與mf2兩個(gè)用戶分別能
          
            使用口令"mf001-1""mf002-2"訪問/home/httpd/html/backup/目錄。
          
            實(shí)現(xiàn)步驟:
          
            使用htpasswd建立用戶文件
          
            htpasswd -c /home/httpd/secr/.htpasswd mf1
          
            htpasswd -c /home/httpd/secr/.htpasswd mf2
          
            建立組文件
          
            用vi/home/httpd/secr/目錄下建立一個(gè)文件.htgroup,寫入:
          
            myfriend:mf1 mf2
          
            建立.htaccess文件
          
            用vi在/home/httpd/html/backup/目錄下建立一個(gè)文件.htaccess,寫入
          
            以下幾行:
          
            AuthName My Friend Only
          
            AuthType Basic
          
            AuthUserFile /home/httpd/secr/.htpasswd
          
            AuthGroupFile /home/httpd/secr/.htgroup
          
            require group myfriend
          
            配置工作到此結(jié)束,試一試吧!
          
            實(shí)例三:混合使用基于主機(jī)與基于用戶名/口令的認(rèn)證方式
          
            如果你除了只允許讓mf1與mf2兩個(gè)用戶訪問外,還想禁www.mot.com
          
            外的主機(jī)訪問這個(gè)目錄的話,就將/home/httpd/html/backup/.htaccess修改成
            為:
          
            AuthName My Friend Only
          
            AuthType Basic
          
            AuthUserFile /home/httpd/secr/.htpasswd
          
            AuthGroupFile /home/httpd/secr/.htgroup
          
            require group myfriend
          
            order deny,allow
          
            deny from all
          
            allow from www.mot.com
          
          
            不行,這不是我想要找的,我要再搜一搜聲明:本站部分文章收集于網(wǎng)絡(luò),僅
            供個(gè)人學(xué)習(xí)之用,絕無任何商業(yè)目的;
          
          本節(jié)將針對Apache中有關(guān)安全方面的設(shè)置做出詳細(xì)的敘述,涉及到Apache的配置文件、Apache的目錄訪問控制、在Apache上運(yùn)行CGI等安全方面的設(shè)置。
          4.5.1  Apache的配置文件
          
          對于RedHat Linux系統(tǒng),Apache的配置文件放在/etc/httpd/conf/目錄下。如果是自行編譯安裝的Apache,則視編譯時(shí)指定的目錄路徑而定,默認(rèn)是/usr/local/apache/conf。
          
          在conf目錄下有3個(gè)Apache的配置文件:
          
                    httpd.conf
          
                    access.conf
          
                    srm.conf
          
          Apache啟動(dòng)時(shí)先調(diào)用httpd.conf,然后調(diào)用srm.conf,最后調(diào)用access.conf。但現(xiàn)代版本的Apache為避免管理和維護(hù)的混亂,已經(jīng)改為將所有Apache的相關(guān)配置命令放在httpd.conf文件中,不再使用srm.conf和access.conf文件。雖然這兩個(gè)文件仍然存在,但內(nèi)容中沒有任何配置命令,形同虛設(shè)。
          
          httpd.conf文件分為以下3部分:
          
                    Global Environment
          
                    'Main' server configuration
          
                    Virtual Hosts 
          
          下面將講述這3部分的用法和與安全相關(guān)的注意點(diǎn)。
          4.5.1.1  Global Environment
          
                    ServerType standalone
          
          用來指定Apache的啟動(dòng)方式:standalone和inetd。standalone模式是Apache獨(dú)立運(yùn)行,也是默認(rèn)的啟動(dòng)方式。inetd模式是守護(hù)進(jìn)程監(jiān)聽http的連接請求才啟動(dòng)httpd進(jìn)程,請求完畢后就結(jié)束httpd進(jìn)程,這樣服務(wù)器負(fù)擔(dān)很重。
          
                    ServerRoot "/etc/httpd"
          
          Apache的目錄,此處是存放配置、出錯(cuò)記錄、日志文件的根目錄。目錄后面不要加“/”字符。
          
                    LockFile /var/lock/httpd.lock
          
          保留默認(rèn)值,不要更改。
          
                    PidFile /var/run/httpd.pid
          
          指定記錄Apache的父進(jìn)程id的文件名及路徑。
          
                    ScoreBoard /var/run/httpd.scoreboard
          
          指定用于儲(chǔ)存服務(wù)器進(jìn)程處理信息的文件名和路徑。
          
                    #ResourceConfig conf/srm.conf
          
                    #AccessConfig conf/access.conf
          
          在標(biāo)準(zhǔn)的配置中,服務(wù)器啟動(dòng)時(shí)會(huì)處理這兩個(gè)文件。因?yàn)楝F(xiàn)在的Apache只使用httpd.conf文件,摒棄了srm.conf和access.conf文件,所以這兩行用“#”注釋掉。
          
                     Timeout 300
          
          設(shè)置超時(shí)時(shí)間。如果遠(yuǎn)程客戶端超過300秒還沒連上Apache Server,或者Apache Server超過300秒沒有傳送字節(jié)給客戶端,就立即斷開連接。
          
                     KeepAlive On
          
          KeepAlive允許客戶端的每個(gè)連接有多個(gè)請求,設(shè)為Off時(shí)此項(xiàng)無效。
          
                     MaxKeepAliveRequests 100
          
          設(shè)置每次連接期間所允許的最大請求數(shù)目。設(shè)為0時(shí)表示允許無限制數(shù)目。設(shè)置數(shù)字越大,則服務(wù)器性能越高。
          
                     KeepAliveTimeout 15
          
          設(shè)置等待同一個(gè)客戶端的同一個(gè)連接發(fā)出下一個(gè)連接請求超過一定的時(shí)間就斷線。
          
                     MinSpareServers 5
          
                    MaxSpareServers 20
          
          設(shè)置最小的閑置服務(wù)處理程序的數(shù)目和最大的閑置服務(wù)處理程序的數(shù)目。如果實(shí)際數(shù)目少于MinSpareServers,則將增加處理程序;反之,如果實(shí)際數(shù)目超過MaxSpareServers,一些多余的處理程序?qū)⒈粴⒌簟?
          
                     StartServers 8
          
          設(shè)置啟動(dòng)并初始化后啟動(dòng)服務(wù)進(jìn)程的數(shù)目。
          
                     MaxClient 150
          
          設(shè)置服務(wù)運(yùn)行的總數(shù)量。一旦達(dá)到此數(shù)目,新來的客戶端就被拒絕,所以該限制數(shù)目不能設(shè)得太小。
          
                     MaxRequestsPerChild 100
          
          設(shè)置每個(gè)子程序處理結(jié)果前的要求數(shù)目,設(shè)為0表示不限制。
          
                     #Listen 3000
          
          #Listen 12.34.56.78:80
          
          Listen 80
          
          設(shè)置Apache監(jiān)聽的連接端口或IP地址及端口,默認(rèn)是80。
          
                     #BindAddress *
          
          該選項(xiàng)用來支持虛擬主機(jī),并告知服務(wù)器監(jiān)聽哪個(gè)IP地址。可以使用“*”,或具體的IP地址和完整的域名。
          
                     #LoadModule foo_module libexec/mod_foo.so
          
          DSO(Dynamic Shared Object)支持。DSO模塊的概念和作用與Windows的DLL文件極其相似。
          
                     #ExtendedStatus On
          
          當(dāng)“server-status”管理程序被執(zhí)行時(shí),檢查Apache的運(yùn)行狀態(tài)信息。默認(rèn)是Off。
          4.5.1.2  'Main' Server Configuration
          
          如果在第一部分“Global Environment”中的ServerType命令設(shè)為inetd的話,那么這部分就沒有任何效果,直接跳到ServerAdmin命令。
          
                     Port 80
          
          設(shè)置Standalone服務(wù)器監(jiān)聽的連接端口,也可以設(shè)為其他端口,必須小于1 023。必須以root身份才能更改端口。
          
                     User apache
          
                     Group apache
          
          指定運(yùn)行httpd的用戶和用戶組。必須首先以root身份指派。
          
                     ServerAdmin root@localhost
          
          設(shè)置管理員的電子郵件地址,當(dāng)Apache有問題時(shí)會(huì)自動(dòng)發(fā)E-mail通知管理員。
          
                     #ServerName localhost
          
          設(shè)置主機(jī)名稱,可以用域名和IP地址。
          
                     DocumentRoot "/var/www/html"
          
          設(shè)置Apache放置網(wǎng)頁的目錄路徑。
          
                     <Directory/>
          
          Options FollowSymLinks
          
          AllowOverride None
          
          <Directory/>
          
          設(shè)置Apache能夠訪問的每一個(gè)目錄被訪問時(shí)所執(zhí)行的動(dòng)作。本章后面將詳細(xì)敘述Apache的目錄存取方法。
          
                     <Directory "/car/www/html">
          
          Options Indexes Include FollowSymLinks
          
          AllowOverride None
          
          Order allow, deny
          
          Allow from all
          
          </Directory>
          
          此處設(shè)置Apache的網(wǎng)頁目錄的執(zhí)行動(dòng)作。本章節(jié)后面將詳細(xì)敘述目錄的存取方法。
          
                     <Directory/>
          
          AllowOverride None
          
          Options None
          
          Allow from all
          
          </Directory>
          
          此處可以防止用戶創(chuàng)建自己的.htaccess文件。在這個(gè)文件中可以改變?nèi)謪?shù),以致會(huì)影響到整個(gè)系統(tǒng)的安全。可以在httpd.conf文件中加入的命令中都加上上面的代碼。
          
                     UserDir public_html
          
          設(shè)置用戶在自己的目錄下建立public_html放置網(wǎng)頁,即/home/*/public_html/。這樣在瀏覽器地址欄輸入“http://Apache服務(wù)器/用戶名/”就能顯示網(wǎng)頁。設(shè)置的目錄必須告知用戶,否則他們不知道網(wǎng)頁放在什么地方。
          
                     DirectoryIndex index.html index.htm index.shtml index.php index.php4 index.php3 index.cgi
          
          設(shè)置Apache的默認(rèn)首頁文檔。
          
                     AccessFileName .htacess
          
          指定控制存取的文件名稱。Apache默認(rèn)的是.htaccess。本章將在后面詳細(xì)敘述該文件的用法。
          
                     <Files ~ "^\.ht>
          
          Order allow,deny
          
          Deny from all
          
          </Files>
          
          防止用戶端看到ht開頭的文件內(nèi)容。因?yàn)?htaccess記載了相關(guān)信息,.htpasswd記載了密碼信息,不允許其他人訪問這些文件。
          
                     #CacheNegotiatedDocs
          
          指定Proxy服務(wù)器是否將交互產(chǎn)生的文件存在Cache中。將該命令注釋掉則是不指定。
          
                     UseCanonicalName On
          
          設(shè)置是否使用標(biāo)準(zhǔn)的名稱,默認(rèn)是On。
          
                     TypeConfig /etc/mime.types
          
          指定存放MIME文件類型的文件。
          
                     Default Type text/plain
          
          如果Apache不能識(shí)別此文件類型時(shí),則按照預(yù)設(shè)的格式顯示,一般以文本文件顯示。
          
                     <IfModule mod_mine_magic.c>
          
          MIMEMagicFile conf/magic
          
          </ifModule>
          
          mod_mime_magic模塊可以讓Apache由文件內(nèi)容決定其MIME類型。如果存在該模塊,才會(huì)處理MIMEMagicFile這一段。上面3行是當(dāng)沒有該模塊時(shí)就處理這一段。
          
                     HostnameLookups off
          
          設(shè)置Apache是否向名稱服務(wù)器解析該IP地址,記錄此鏈接的名稱(如Hacker.com.cn)。因?yàn)镈NS解析要花一定時(shí)間,所以默認(rèn)設(shè)為off,僅記錄IP。
          
                     ErrorLog /var/log/httpd/error_log
          
          指定Apache發(fā)生錯(cuò)誤時(shí)記錄文件的位置。如果在<VirtualHost>中沒有指定記錄文件,則用/var/log/httpd/error_log,否則使用<VirtualHost>指定的文件。
          
                     LogLevel warn
          
          指定記錄的詳細(xì)等級(jí),有8個(gè)等級(jí):debug、info、notice、warn、error、crit、alert和emerg。按從詳細(xì)到簡略排列。
          
                     LogFormat "%h %l %u %t\"%r"\"%>s%b\"{Referer}I"\"%{UserAgent}I\""combind
          
          Logformat"%h%l%u%t\"%r"\"%>s%b"common
          
          Logformat "%{Referer}I->%U"referer
          
          LogFormat"%{User-agent}I"agint
          
          定義4種格式的別名:combind、commen、referer和agint。
          
                     #CustomLog /var/log/httpd/access_log common
          
          CustomLog /var/log.httpd/access_log combind
          
          指定記錄文件使用哪種自定義的格式。其他不使用的自定義格式將被注釋掉。
          
          以上是關(guān)于日志文件的,將在后面的Apache日志文件中詳細(xì)敘述。
          
                     ServerSignature On
          
          設(shè)為On,當(dāng)Apache產(chǎn)生錯(cuò)誤時(shí),就在網(wǎng)頁上顯示Apache的版本信息、主機(jī)名稱、端口等一行信息。設(shè)為Off,就不顯示相關(guān)的信息。設(shè)為E-mail時(shí),就有“mailto:”給管理員的超鏈接。
          
                     Alias/icons /"var/www/icons/"
          
          使用較短的別名,其格式為:Alias 別名 原名。可以無限制地建立別名。注意別名的后面如果有“/”,那么在使用URL時(shí)也得有“/”。
          
                     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
          
          和Alias類似,設(shè)置服務(wù)器腳本目錄。
          
          應(yīng)該強(qiáng)制性地使用ScriptAlias命令來限定CGI程序位于某個(gè)或者某幾個(gè)特定的位置。一般可以設(shè)置多個(gè)ScriptAlias。必須保證cgi-bin目錄不在html目錄下,這一點(diǎn)非常重要,這樣可以防止黑客通過瀏覽它們而查看CGI程序。
          
                     IndexOptions FancyIndexing
          
          以特定的圖形顯示文件清單。
          
                     AddIconByEncoding (CMP, /icons/compressed.gif) x-compress x-gzip
          
          ……
          
          DefaultIcon /icons/unknown.gif
          
          指定顯示文件清單時(shí)各種文件類型的對應(yīng)圖形。
          4.5.1.3  Virtual Hosts
          
          這部分是設(shè)置虛擬主機(jī)的。所謂虛擬主機(jī),就是指一臺(tái)服務(wù)器作為多域名的Web服務(wù)器。ISP經(jīng)常通過一臺(tái)服務(wù)器為其客戶提供Web服務(wù)。而客戶通常希望主頁以自己的名字出現(xiàn),而不是在該ISP的名字后面,因?yàn)槭褂脝为?dú)的域名和根網(wǎng)址可以看起來更正式一些。傳統(tǒng)上,用戶必須自己設(shè)立一臺(tái)服務(wù)器才能達(dá)到擁有單獨(dú)域名的目的,然而這需要維護(hù)一個(gè)單獨(dú)的服務(wù)器。很多小單位缺乏足夠的維護(hù)能力,更為合適的方式是租用別人維護(hù)的服務(wù)器。ISP也沒有必要為一個(gè)機(jī)構(gòu)提供一個(gè)單獨(dú)的服務(wù)器,完全可以使用虛擬主機(jī)的能力,使服務(wù)器為多個(gè)域名提供Web服務(wù),而且不同的服務(wù)互不干擾,對外就表現(xiàn)為多個(gè)不同的服務(wù)器。虛擬主機(jī)就是解決這種問題的方案,使客戶的域名實(shí)際指向ISP的同一臺(tái)服務(wù)器。
          1.Apache支持虛擬主機(jī)的方式
          
          Apache有兩種支持虛擬主機(jī)的方式。一是為每一個(gè)虛擬主機(jī)設(shè)置單獨(dú)的httpd進(jìn)程,二是為所有的主機(jī)設(shè)置一個(gè)單獨(dú)的httpd進(jìn)程。
          
                     為每一個(gè)虛擬機(jī)設(shè)置單獨(dú)的httpd進(jìn)程
          
          在httpd.conf文件的第一部分Global Environment中的BindAddress命令或Listen命令就是用來指定虛擬主機(jī)的地址和端口的。
          
          BindAddress命令用來指定單一的地址,可以使用域名或IP地址。該命令在httpd.conf文件中只能出現(xiàn)一次。
          
          Listen命令可以讓httpd進(jìn)程監(jiān)聽多個(gè)地址或端口。反復(fù)使用Listen命令就能實(shí)現(xiàn)這個(gè)要求。
          
                     為所有的主機(jī)設(shè)置一個(gè)單獨(dú)的httpd進(jìn)程
          
          這是一個(gè)常用的方法。用戶只要維護(hù)一個(gè)httpd.conf文件。在此文件的第三部分Virtual Host中,用<VirtualHost></VirtualHost>命令來為所有的虛擬主機(jī)進(jìn)行配置。有多個(gè)虛擬主機(jī)就有多個(gè)<VirtualHost>段。在不同的虛擬主機(jī)的<VirtualHost>段中可以指定不同的ServerAdmin、ServerName、DocumentRoot、ErrorLog和TransferLog。
          2.虛擬主機(jī)的實(shí)現(xiàn)方式
          
          虛擬主機(jī)有三種實(shí)現(xiàn)方式:以主機(jī)名稱的方式虛擬、以IP的方式虛擬、以端口的方式虛擬。下面就舉一個(gè)在httpd.conf的第三部分Virtual Host中實(shí)現(xiàn)上面提及的方式的例子。
          
                     以主機(jī)名稱的方式虛擬
          
          如果用戶的一臺(tái)服務(wù)器有多個(gè)域名,Virtual Host文件舉例如下:
          
          NameVirtualHost 210.12.195.6
          
          <VirtualHost hacker.con.cn>
          
          ServerAdmin bright@hacker.com.cn
          
          DocumentRoot /var/www/html/hacker
          
          ServerName hacker.com.cn
          
          </VirtualHost>
          
          <VirtualHost pcfrient.com.cn>
          
          ServerAdmin admin@pcfrient.com.cn
          
          DocumentRoot /var/www/html/pcfrient
          
          Servername pcfrient.com.cn
          
          </VirtualHost>
          
                     以IP的方式虛擬
          
          注冊域名是要花一筆費(fèi)用的。解決方案是可以用IP的方式來虛擬。在Linux中可以為一個(gè)網(wǎng)卡捆綁兩個(gè)IP地址。如服務(wù)器的地址是210.12.195.6,現(xiàn)在有一個(gè)IP地址210.12.195.9沒有使用。將210.12.195.9捆綁到服務(wù)器的網(wǎng)卡中,執(zhí)行下列命令:
          
          #ifconfig eth0:0 210.12.195.9
          
          這樣,服務(wù)器就有兩個(gè)IP地址了。以IP的方式虛擬和以主機(jī)名稱的方式虛擬類似,請看下面的例子:
          
          NameVirtualHost 210.12.195.6
          
          <VirtualHost 210.12.192.6>
          
          ServerAdmin bright@hacker.com.cn
          
          DocumentRoot /var/www/html/hacker
          
          </VirtualHost>
          
          <VirtualHost 210.12.192.9>
          
          ServerAdmin bright@hacker.com.cn
          
          DocumentRoot /var/www/html/pcfrient
          
          </VirtualHost>
          
          以IP的方式虛擬不用NameVirtualHost命令。
          
                     以主機(jī)名稱和IP的方式虛擬
          
          就是上面的兩個(gè)方式的結(jié)合。看下面的例子:
          
          NameVirtualHost 210.12.195.6
          
          <VirtualHost hacker.con.cn>
          
          ServerAdmin bright@hacker.com.cn
          
          DocumentRoot /var/www/html/hacker
          
          ServerName hacker.com.cn
          
          </VirtualHost>
          
          <VirtualHost 210.12.195.6>
          
          ServerAdmin bright@hacker.com.cn
          
          DocumentRoot /var/www/html/pcfrient
          
          </VirtualHost>
          
                     以端口的方式虛擬
          
          http默認(rèn)的端口是80,如果用戶要開設(shè)另一個(gè)端口443作為另一個(gè)虛擬主機(jī),舉例如下:
          
          Listen 80
          
          Listen 443
          
          <VirtualHost 210.12.192.6:80>
          
          ServerAdmin bright@hacker.com.cn
          
          DocumentRoot /var/www/html/hacker
          
          </VirtualHost>
          
          <VirtualHost 210.12.195.6:443>
          
          ServerAdmin suying@hacker.com.cn
          
          DocumentRoot /var/www/html/pcfrient
          
          </VirtualHost>
          
                     以不同的IP和端口的方式虛擬
          
          該方式是以IP的方式虛擬和以端口的方式虛擬的結(jié)合。假設(shè)服務(wù)器捆綁了兩個(gè)IP地址,210.12.192.6和210.12.195.9,后面的IP地址用端口443。舉例如下:
          
          Listen 210.12.192.6:80
          
          Listen 210.12.195.9:443
          
          <VirtualHost 210.12.192.6:80>
          
          ServerAdmin bright@hacker.com.cn
          
          DocumentRoot /var/www/html/hacker
          
          </VirtualHost>
          
          <VirtualHost 210.12.195.9:443>
          
          ServerAdmin suying@hacker.com.cn
          
          DocumentRoot /var/www/html/pcfrient
          
          </VirtualHost>
          


          |----------------------------------------------------------------------------------------|
                                     版權(quán)聲明  版權(quán)所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2006-10-25 16:59 zhyiwww 閱讀(10560) 評(píng)論(0)  編輯  收藏 所屬分類: software
          主站蜘蛛池模板: 金门县| 南阳市| 铜川市| 交城县| 那坡县| 深水埗区| 盐池县| 广南县| 高尔夫| 桃源县| 长春市| 维西| 溧水县| 昭苏县| 普陀区| 天门市| 延边| 宁城县| 霍城县| 淮北市| 林州市| 丰都县| 类乌齐县| 津南区| 赫章县| 桂林市| 临湘市| 长宁区| 澳门| 台南县| 大石桥市| 沙田区| 兴文县| 绥化市| 萨迦县| 于都县| 轮台县| 绥棱县| 乳山市| 陕西省| 五家渠市|