發(fā)布時間:2023-5-1 分類: 行業(yè)資訊
通用網(wǎng)關(guān)接口(CGI)提供了一種以任何語言生成動態(tài)網(wǎng)站的簡便方法。
回到互聯(lián)網(wǎng)的開頭,當(dāng)我第一次創(chuàng)建我的第一個商業(yè)網(wǎng)站時,生活是如此美好。
我安裝了Apache并編寫了一些簡單的HTML頁面,其中列出了有關(guān)我的業(yè)務(wù)的一些重要信息,例如產(chǎn)品概述以及如何與我聯(lián)系。這是一個靜態(tài)網(wǎng)站,因為內(nèi)容很少改變。由于網(wǎng)站內(nèi)容很少更改,因此很容易維護。
靜態(tài)內(nèi)容
靜態(tài)內(nèi)容簡單而常見。讓我們快速瀏覽一下靜態(tài)網(wǎng)頁的一些例子。您不需要可運行的網(wǎng)站來執(zhí)行這些小型實驗,只需將這些文件放在主目錄中并使用瀏覽器打開它們即可。您看到的內(nèi)容與您通過Web服務(wù)器看到的內(nèi)容相同。
靜態(tài)網(wǎng)站需要的第一件事是index.html文件,它通常放在/var/www/html目錄中。這個文件的內(nèi)容可以很簡單,例如,它可以是一個簡短的文字,如“Hello,world”。沒有任何HTML標(biāo)記。它只會顯示文本字符串內(nèi)容。在您的主目錄中創(chuàng)建一個index.html文件并添加“hello,world”作為內(nèi)容(不需要引號)。使用以下鏈接在瀏覽器中打開此文件:
文件: ///home /<您的主目錄> /index.html
所以HTML不是必需的,但是如果你有很多需要格式化的文本,那么不使用HTML編碼的頁面結(jié)果將很難理解。
因此,下一步是通過使用一些HTML編碼來提供格式化,以使內(nèi)容更具可讀性。以下命令創(chuàng)建一個頁面,其中包含HTML靜態(tài)網(wǎng)頁所需的絕對最小標(biāo)記。您也可以使用自己喜歡的編輯器創(chuàng)建此內(nèi)容。
Echo'< h1> Hello World</h1>' > test1.html
現(xiàn)在,再次查看index.html文件,您將看到與剛才不同的東西。
當(dāng)然,您可以在實際內(nèi)容行中添加大量HTML標(biāo)記,以形成更完整和標(biāo)準(zhǔn)的網(wǎng)頁。下面顯示的是一個更完整的版本,雖然瀏覽器中會顯示相同的內(nèi)容,但它也為更標(biāo)準(zhǔn)化的網(wǎng)站奠定了基礎(chǔ)。繼續(xù)在index.html中編寫此內(nèi)容并通過瀏覽器查看。
<!DOCTYPE HTML PUBLIC' - //w3c //DD HTML 4.0 //EN'>
< HTML>
< HEAD>
< title>我的網(wǎng)頁</title>
< /頭>
<身體GT;
< h1> Hello World</h1>
< /體>
</HTML>
我使用這些技術(shù)來構(gòu)建一些靜態(tài)網(wǎng)站,但我的生活正在改變。
動態(tài)網(wǎng)頁
我找到了一份新工作,這項工作的主要任務(wù)是為動態(tài)網(wǎng)站創(chuàng)建和維護CGI(Common Gateway InterfaceM)代碼。從字面上看,動態(tài)意味著每次訪問頁面時,瀏覽器中生成的網(wǎng)頁所需的HTML都是由不同的數(shù)據(jù)生成的。數(shù)據(jù)包括用于在數(shù)據(jù)庫中進行數(shù)據(jù)查找的Web表單中的用戶輸入,并且結(jié)果數(shù)據(jù)被一些適當(dāng)?shù)腍TML包圍并顯示在所請求的瀏覽器中。但這并不需要非常復(fù)雜。
通過使用CGI腳本,您可以創(chuàng)建簡單或復(fù)雜的交互式程序,這些程序可以根據(jù)輸入,計算,服務(wù)器當(dāng)前條件等的變化生成動態(tài)頁面。有許多語言可用于編寫CGI腳本。在本文中,我將討論Perl和Bash。其他流行的CGI語言包括PHP和Python。
本文不涉及Apache或任何其他Web服務(wù)器的安裝和配置。如果您可以訪問可以試驗的Web服務(wù)器,則可以直接查看它們在瀏覽器中顯示的結(jié)果。否則,您可以在命令行上運行該程序以查看它們創(chuàng)建的HTML文本。您還可以將HTML輸出重定向到文件,并通過瀏覽器查看生成的文件。
使用Perl
Perl是一種非常流行的CGI腳本語言,具有強大的文本操作優(yōu)勢。
為了使CGI腳本可執(zhí)行,您需要將以下行添加到站點的httpd.conf中。這告訴服務(wù)器在哪里執(zhí)行CGI文件。在這個實驗中,不要擔(dān)心這個問題。
ScriptAlias/cgi-bin /'/var/www/cgi-bin /'
將以下Perl代碼添加到文件index.cgi中。在此實驗中,此文件應(yīng)放在您的主目錄中。如果使用Web服務(wù)器,則應(yīng)將文件的所有者更改為apache.apache,并將文件權(quán)限設(shè)置為755,因為無論文件位于何處,它都必須是可執(zhí)行文件。
!的/usr /斌/perl的
打印'內(nèi)容類型: text/html“;
打印'< html>< body>“;
打印'< h1> Hello World</h1>“;
打印'使用Perl< p>“;
打印'</body></html>“;
在命令行上運行此程序并查看結(jié)果,它將顯示它生成的HTML內(nèi)容
現(xiàn)在查看瀏覽器中的index.cgi文件,您看到的只是文件的內(nèi)容。瀏覽器需要將其視為CGI內(nèi)容,但Apache不知道它需要作為CGI程序運行,除非Apache配置包含上面顯示的ScriptAlias定義。如果沒有這種配置,Apache只會將文件中的數(shù)據(jù)發(fā)送到瀏覽器。如果您可以訪問Web服務(wù)器,則可以將可執(zhí)行文件放在/var/www/cgi-bin目錄中。
如果您想知道此腳本在瀏覽器中的結(jié)果,請重新運行程序并將輸出重定向到具有所需名稱的新文件。然后使用瀏覽器查看此文件,其中包含腳本生成的內(nèi)容。
上面的CGI程序仍然生成靜態(tài)內(nèi)容,因為它總是產(chǎn)生相同的輸出。將以下行添加到CGI程序“ Hello,world”在這條線后面。 Perl的系統(tǒng)命令將執(zhí)行它后面的shell命令并將結(jié)果返回給程序。此時,我們將使用free命令獲取當(dāng)前內(nèi)存使用情況。
系統(tǒng)'免費| grep Mem“;
現(xiàn)在重新運行程序并將結(jié)果重定向到文件并在瀏覽器中重新加載該文件。您將看到一個額外的行,顯示系統(tǒng)的內(nèi)存統(tǒng)計信息。多次運行程序并刷新瀏覽器,您會發(fā)現(xiàn)內(nèi)存使用情況應(yīng)該不斷變化。
使用Bash
Bash可能是CGI腳本最簡單的語言。使用Bash進行CGI編程的最大優(yōu)點是可以直接訪問所有標(biāo)準(zhǔn)GNU工具和系統(tǒng)程序。
將現(xiàn)有的index.cgi文件重命名為Perl.index.cgi,然后創(chuàng)建一個新的`index.cgi文件并添加以下內(nèi)容。請記住設(shè)置權(quán)限以使其可執(zhí)行。
!/斌/慶典
Echo'Content-type: text/html'
回聲''
Echo'< html>'
Echo'< head>'
Echo'< meta http-equiv='Content-Type'content='text/html;字符集=UTF-8' >”
Echo'< title> Hello World</title>'
Echo'</head>'
Echo'< body>'
Echo'< h1> Hello World</h1>< p>'
Echo'使用Bash< p>'
免費| grep Mem
Echo'</body>'
Echo'</html>'
退出0
在命令行上執(zhí)行此文件并查看輸出,然后再次運行它并將結(jié)果重定向到臨時結(jié)果文件。然后,刷新瀏覽器以查看其顯示的頁面。
結(jié)論
創(chuàng)建生成多種動態(tài)網(wǎng)頁的CGI程序?qū)嶋H上非常簡單。雖然這是一個非常簡單的例子,但你現(xiàn)在應(yīng)該看到一些可能性。
周一周五 8:30 - 18:00
客服QQ