国产毛片午夜福利,国产黄网,国产亚洲天堂,97国产精品

  •  
    淺析Apache服務(wù)器中SSI和CGI的設(shè)定方法
    發(fā)布時(shí)間:2005-03-28   瀏覽次數(shù):1185947
    出處:塞迪網(wǎng)
    作者:cool007
    由于Apache具有相當(dāng)高的可移植性,它支持超過30種操作系統(tǒng),包括Unix、Windows 及Darwin等系統(tǒng),所以目前在網(wǎng)絡(luò)上已注冊(cè)的網(wǎng)域里大部份是使用Apache網(wǎng)頁服務(wù)器。目前ApacheSoftware Foundation 正致力于發(fā)展現(xiàn)在已進(jìn)入alpha測(cè)試階段的Apache2.0。在這里,我和大家探討如何修改服務(wù)器選項(xiàng)讓服務(wù)器能提供簡(jiǎn)單的動(dòng)態(tài)網(wǎng)頁內(nèi)容,也是支持CGI程序及 Server-Side Include(SSI)程序。

    1、準(zhǔn)備工作
    首先,我假設(shè)你已經(jīng)安裝好Apache而且你的Apache能提供靜態(tài)網(wǎng)頁供瀏覽。Apache的安裝會(huì)自動(dòng)附上靜態(tài)的HTML測(cè)試頁,也是說如果能看到那測(cè)試頁,代表你的Apache能正常運(yùn)作了;景惭b下的Apache僅能提供靜態(tài)的HTML網(wǎng)頁。然而,你可以通過使用模塊(modules)來提升它的功能。在原始的設(shè)定下,Apache的編譯會(huì)包含mod_include 及 moc_cgi 這兩個(gè)模塊。你可以在bin子目錄下執(zhí)行./httpd -l來查看你的Apache是否裝有這兩個(gè)模塊。執(zhí)行的輸出會(huì)是一長(zhǎng)串Apache現(xiàn)在安裝的所有模塊。如果mod_include及moc_cgi 這兩個(gè)模塊不在清單里,你必須重新編譯服務(wù)器。重新編譯時(shí),確定依照如何含括 mod_include、moc_cgi 模塊的說明。此外你還必需有提供實(shí)時(shí)網(wǎng)頁的Server-Side Includes(相關(guān)資料網(wǎng)址:http://www.oreilly.com/catalog/apache/excerpt/ch10.html)。有了 server-side includes (SSI)支持,你能制作出實(shí)時(shí)的動(dòng)態(tài)網(wǎng)頁。接下來,我先從服務(wù)器的SSI支持設(shè)定開始,然后進(jìn)入CGI的編寫。

    2、Apache的設(shè)定
    首先你必須先找到Apache這個(gè)設(shè)定文件。Apache的原始安裝目錄在 Unix下是/usr/local/apache,在Windows下則是 c:\Program Files\Apache。接著在conf子目錄下你會(huì)找到httpd.conf 文件。這是Apache的設(shè)定檔。這個(gè)設(shè)定文件是個(gè)純文字文件,所以你可以使用一般的文字編輯器,如vi或Notepad 等,來編輯。首先要注意的是在這個(gè)設(shè)定檔里有些行的起始文字是#符號(hào),這表示這行的文字全為批注。適當(dāng)?shù)卦谀愕脑O(shè)定檔內(nèi)做批注是個(gè)好習(xí)慣,因?yàn)槟菐湍阌浀媚阍隽四男┰O(shè)定以及為什么。

    3、執(zhí)行 SSI 程序
    開啟設(shè)定文件并尋找以下這些文字:
    #
    # To use server-parsedHTMLfiles
    #
    #AddType text/html .shtml
    #AddHandler server-parsed .shtml 

    刪除AddType及AddHandler這兩行指令前的#符號(hào)。AddType指令會(huì)要求服務(wù)器在傳回任何附屬檔名為.shtml的網(wǎng)頁時(shí),以 text或HTML做為傳回文件的內(nèi)容格式。AddHandler 則是用來指示服務(wù)器將文件內(nèi)容送交給mod_include 處理。之后,mod_include 會(huì)判斷該如何響應(yīng)這樣的文件。接下來,尋找以下文字: 
    <Directory "/usr/local/apache/htdocs">
    在這行文字及對(duì)應(yīng)的</Directory> 間會(huì)有一行選項(xiàng)行(options line)。原始的設(shè)定是:
    Options Indexes FollowSymLinks MultiViews
    在這行尾端加上Includes ,結(jié)果看起來會(huì)是這樣:
    Options Indexes FollowSymLinks MultiViews Includes
    這是要求Apache在htdocs子目錄里執(zhí)行 server-side includes 程序。為了讓這些修改生效,我們必須重新啟動(dòng)服務(wù)器。在 Unix 下重新,執(zhí)行"kill -HUP `cat /usr/local/apache/logs/httpd.pid`"。在 Windows 下,執(zhí)行"Apache-k restart",F(xiàn)在我們來試試剛才的設(shè)定結(jié)果。在/usr/local/apache/htdocs 目錄里新增一個(gè)文件 test.shtml。這個(gè)文件必須要包含以下程序代碼:
    <!--#include virtual="hello.txt" --> The file hello.txt is <!--#fsize virtual="hello.txt"--> long and it was last modified on <!--#flastmod virtual="hello.txt" --> 

    這段 SSI 程序會(huì)去讀取一個(gè)稱為 hello.txt 文件,并將該文件的大小以及最近一次的修改日期輸出到網(wǎng)頁上。顯然的,我們還必須在 htdocs 目錄下新增這個(gè)hello.txt 文件。在我的hello.txt 文件里只有一行文字:HOW ARE YOU!。完成新增這些文件后,打開你慣用的瀏覽器并開啟http://localhost/test.shtml網(wǎng)頁。如果你服務(wù)器的安裝并不是通過root用戶,你可能必須改為開啟http://localhost:8080/test.shtml。之后將得到如下結(jié)果:
    HOW ARE YOU! The file hello.txt is 1k bytes long and it was last modified on Wednesday, 02-Aug-00 :18:28 PDT
    另外一種可以支持SSI程序的方法稱為XbitHack設(shè)定(相關(guān)資料網(wǎng)址:http://www.apache.org/docs/mod/mod_include.html#xbithack )。這個(gè)方法的由來是當(dāng)你將文本文件的使用者可執(zhí)行位(user-executable bit)設(shè)為可執(zhí)行狀態(tài)后,Apache會(huì)將那些文件視為 SSI 程序文件。
    要這樣的功能必須將以下指令(directive)放在所有目錄的 .htaccess 文件里:XbitHack status on (or full) status 的值可以設(shè)為on 、off 或是full。on 的設(shè)定會(huì)強(qiáng)制服務(wù)器將所有使用者可執(zhí)行的文件視為SSI項(xiàng)。Off則使服務(wù)器完全忽略使用者可執(zhí)行的設(shè)定狀態(tài)。若是設(shè)定為Full,服務(wù)器會(huì)視所有使用者可執(zhí)行檔為SSI項(xiàng),同時(shí)也會(huì)檢查組可執(zhí)行(group-executable bit)。如果組可執(zhí)行項(xiàng)設(shè)定為可執(zhí)行時(shí),傳回header的last modified time的值會(huì)被設(shè)定為該文件最近一次被修改的時(shí)間。這樣的設(shè)定可以讓客戶端的瀏覽器及代理服務(wù)器(proxy)進(jìn)行緩存(caching)。不過在使用這樣的功能時(shí)必須要小心。例如說,如果你的網(wǎng)頁有提供輪替式廣告看板你不會(huì)想要設(shè)定群組可執(zhí)行位為開啟的狀態(tài),因?yàn)槟敲醋鰰?huì)讓個(gè)下載的廣告被快取起來,導(dǎo)致使用者再也看不到其它頁的廣告。

    4、執(zhí)行CGI程序
    在Apache原始安裝里,cgi-bin子目錄下附有兩組CGI程序,test-cgi 以及printenv,只不過這兩組程序有潛在的漏洞。但是由于我們只是要做設(shè)定測(cè)試,并且我們不會(huì)將這樣的原始安裝設(shè)定直接放在主運(yùn)行服務(wù)器(live server),所以我們還是會(huì)其中一組CGI程序,看看Apache當(dāng)初是如何被設(shè)定來執(zhí)行這組程序。我們會(huì)自己撰寫一支簡(jiǎn)單的CGI程序。
    首先,要確定這組程序是能執(zhí)行的。進(jìn)入cgi-bin子目錄,確定程序文件被設(shè)定為使用者(服務(wù)器執(zhí)行時(shí)使用者)可執(zhí)行以及使用組(服務(wù)器執(zhí)行時(shí)使用組)可執(zhí)行。對(duì) Windows系統(tǒng)來說,這一步應(yīng)該是非必要的。接著,對(duì)服務(wù)器要求這樣的內(nèi)容:
    http://localhost:8080/cgi-bin/test-cgi
    注意:只有在通過非root使用者進(jìn)行服務(wù)器安裝的情況下才需要指定8080端口(port)。這支Apache內(nèi)建的test-cgi程序會(huì)列出CGI程序會(huì)存取的變量值。CGI支持是設(shè)定在httpd.conf設(shè)定文件內(nèi)的ScriptAlias 指令區(qū)段。這個(gè)指令區(qū)段的原始設(shè)定值是:
    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
    這行指令是告訴Apache如果要求的網(wǎng)頁路徑是以cgi-bin為起始,這些文件可在/usr/local/apache/cgi-bin/ 目錄下找得到。這行指令同時(shí)也告訴Apache要在這個(gè)目錄下執(zhí)行文件。在下面我準(zhǔn)備了一個(gè)會(huì)輸出"How are you!"的簡(jiǎn)單CGI程序。我將它命名為 how.sh。
    #!/bin/sh
    echo "Content-type: text/html"
    echo
    echo "How are you!" 

    修改這個(gè)文件的權(quán)限使其成為可執(zhí)行文件并且向你的服務(wù)器提出以下的要求:
    http://localhost:8080/cgi-bin/how.sh
    雖然這組CGI是采用shell script來編寫,其實(shí)它可以用任何適用于該系統(tǒng)的語言來撰寫。至于關(guān)于CGI程序的撰寫如果有機(jī)會(huì)我會(huì)和大家作更深入的探討。

    結(jié)論:
    Apache支持的所有SSI 指令可以在Apachedocumentation 里找到,Apache所有的功能都可以通過設(shè)定文件 (config file)進(jìn)行調(diào)試。在這里我所介紹的僅只是設(shè)定文件相關(guān)知識(shí)的皮毛。設(shè)定文件的原始設(shè)定有著非常詳盡的說明文件,而且每一個(gè)系統(tǒng)版本都附有核心模塊及標(biāo)準(zhǔn)模塊的說明文件,如果你花些時(shí)間在這些文件里摸索,你會(huì)找到任何你想要的功能。
    下一篇: 兩只蝴蝶
    立即預(yù)約