靜態(tài)內(nèi)容
靜態(tài)內(nèi)容很簡單,同時也很常見。讓我們快速的瀏覽一些靜態(tài)網(wǎng)頁的例子。你不需要一個可運(yùn)行網(wǎng)站來執(zhí)行這些小實(shí)驗(yàn),只需要把這些文件放到家目錄,然后使用瀏覽器打開。你所看到的內(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)容(不需要引號)。在瀏覽器中通過下面的鏈接來打開這一文件:
file:///home/<你的家目錄>/index.html
所以HTML不是必須的,但是,如果你有大量需要格式化的文本,那么,不用HTML編碼的網(wǎng)頁的結(jié)果將會令人難以理解。
所以,下一步就是通過使用一些HTML編碼來提供格式化,從而使內(nèi)容更加可讀。下面這一命令創(chuàng)建了一個具有HTML靜態(tài)網(wǎng)頁所需要的絕對最小標(biāo)記的頁面。你也可以使用你最喜歡的編輯器來創(chuàng)建這一內(nèi)容。
echo"<h1>HelloWorld</h1>">test1.html
現(xiàn)在,再次查看index.html文件,將會看到和剛才有些不同。
當(dāng)然,你可以在實(shí)際的內(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)容并通過瀏覽器查看。
<!DOCTYPEHTMLPUBLIC"-//w3c//DDHTML4.0//EN">
<html>
<head>
<title>MyWebPage</title>
</head>
<body>
<h1>HelloWorld</h1>
</body>
</html>
我使用這些技術(shù)搭建了一些靜態(tài)網(wǎng)站,但我的生活正在改變。
動態(tài)網(wǎng)頁
我找了一份新工作,這份工作的主要任務(wù)就是創(chuàng)建并維護(hù)用于一個動態(tài)網(wǎng)站的CGI(公共網(wǎng)關(guān)接口CommonGatewayInterfaceM)代碼。字面意思來看,動態(tài)意味著在瀏覽器中生成的網(wǎng)頁所需要的HTML是由每次訪問頁面時不同的數(shù)據(jù)所生成的。這些數(shù)據(jù)包括網(wǎng)頁表單中的用戶輸入,以用來在數(shù)據(jù)庫中進(jìn)行數(shù)據(jù)查找,結(jié)果數(shù)據(jù)被一些恰當(dāng)?shù)?span lang="EN-US">HTML包圍著并展示在所請求的瀏覽器中。但是這不需要非常復(fù)雜。
通過使用CGI腳本,你可以創(chuàng)建一些簡單或復(fù)雜的交互式程序,通過運(yùn)行這些程序能夠生成基于輸入、計算、服務(wù)器的當(dāng)前條件等改變的動態(tài)頁面。有許多種語言可以用來寫CGI腳本,在這篇文章中,我將談到的是Perl和Bash,其他非常受歡迎的CGI語言包括PHP和Python。
這篇文章不會介紹Apache或其他任何web服務(wù)器的安裝和配置。如果你能夠訪問一個你可以進(jìn)行實(shí)驗(yàn)的Web服務(wù)器,那么你可以直接查看它們在瀏覽器中出現(xiàn)的結(jié)果。否則,你可以在命令行中運(yùn)行程序來查看它們所創(chuàng)建的HTML文本。你也可以重定向HTML輸出到一個文件中,然后通過瀏覽器查看結(jié)果文件。
使用Perl
Perl是一門非常受歡迎的CGI腳本語言,它的優(yōu)勢是強(qiáng)大的文本操作能力。
為了使CGI腳本可執(zhí)行,你需要在你的網(wǎng)站的httpd.conf中添加下面這行內(nèi)容。這會告訴服務(wù)器可執(zhí)行CGI文件的位置。在這次實(shí)驗(yàn)中,不必?fù)?dān)心這個問題。
ScriptAlias/cgi-bin/"/var/www/cgi-bin/"
把下面的Perl代碼添加到文件index.cgi,在這次實(shí)驗(yàn)中,這個文件應(yīng)該放在你的家目錄下。如果你使用Web服務(wù)器,那么應(yīng)把文件的所有者更改為apache.apache,同時將文件權(quán)限設(shè)置為755,因?yàn)闊o論位于哪,它必須是可執(zhí)行的。
#!/usr/bin/perl
print"Content-type:text/htmlnn";
print"<html><body>n";
print"<h1>HelloWorld</h1>n";
print"UsingPerl<p>n";
print"</body></html>n";
在命令行中運(yùn)行這個程序并查看結(jié)果,它將會展示出它所生成的HTML內(nèi)容
現(xiàn)在,在瀏覽器中查看index.cgi文件,你所看到的只是文件的內(nèi)容。瀏覽器需要將它看做CGI內(nèi)容,但是,Apache不知道需要將這個文件作為CGI程序運(yùn)行,除非Apache的配置中包括上面所展示的ScriptAlias定義。沒有這一配置,Apache只會簡單地將文件中的數(shù)據(jù)發(fā)送給瀏覽器。如果你能夠訪問Web服務(wù)器,那么你可以將可執(zhí)行文件放到/var/www/cgi-bin目錄下。
如果想知道這個腳本的運(yùn)行結(jié)果在瀏覽器中長什么樣,那么,重新運(yùn)行程序并把輸出重定向到一個新文件,名字可以是任何你想要的。然后使用瀏覽器來查看這一文件,它包含了腳本所生成的內(nèi)容。
上面這個CGI程序依舊生成靜態(tài)內(nèi)容,因?yàn)樗偸巧上嗤妮敵?。把下面這行內(nèi)容添加到CGI程序中“Hello,world”這一行后面。Perl的system命令將會執(zhí)行跟在它后面的shell命令,并把結(jié)果返回給程序。此時,我們將會通過free命令獲得當(dāng)前的內(nèi)存使用量。
system"free|grepMemn";
現(xiàn)在,重新運(yùn)行這個程序,并把結(jié)果重定向到一個文件,在瀏覽器中重新加載這個文件。你將會看到額外的一行,它展示了系統(tǒng)的內(nèi)存統(tǒng)計數(shù)據(jù)。多次運(yùn)行程序并刷新瀏覽器,你將會發(fā)現(xiàn),內(nèi)存使用量應(yīng)該是不斷變化的。
使用Bash
Bash可能是用于CGI腳本中最簡單的語言。用Bash來進(jìn)行CGI編程的最大優(yōu)勢是它能夠直接訪問所有的標(biāo)準(zhǔn)GNU工具和系統(tǒng)程序。
把已經(jīng)存在的index.cgi文件重命名為Perl.index.cgi,然后創(chuàng)建一個新的`index.cgi文件并添加下面這些內(nèi)容。記得設(shè)置權(quán)限使它可執(zhí)行。
#!/bin/bash
echo"Content-type:text/html"
echo""
echo\\\'<html>\\\’
echo\\\'<head>\\\’
echo\\\'<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">\\\’
echo\\\'<title>HelloWorld</title>\\\’
echo\\\'</head>\\\’
echo\\\'<body>\\\’
echo\\\'<h1>HelloWorld</h1><p>\\\’
echo\\\’UsingBash<p>\\\’
free|grepMem
echo\\\'</body>\\\’
echo\\\'</html>\\\’
exit0
在命令行中執(zhí)行這個文件并查看輸出,然后再次運(yùn)行并把結(jié)果重定向到一個臨時結(jié)果文件中。然后,刷新瀏覽器查看它所展示的網(wǎng)頁是什么樣子。
結(jié)論
創(chuàng)建能夠生成許多種動態(tài)網(wǎng)頁的CGI程序?qū)嶋H上非常簡單。盡管這是一個很簡單的例子,但是現(xiàn)在你應(yīng)該看到一些可能性了。
更多關(guān)于云服務(wù)器,域名注冊,虛擬主機(jī)的問題,請訪問西部數(shù)碼官網(wǎng):www.ps-sw.cn