摘要:通用网关接口(CGI)提供了使用任何语言生成动态网站的简易方法。我安装Apache并写了一些简单的HTML网页,网页上列出了一些关于我的业务的重要信息,比如产品概览以及如何联系我。这是一个静态网站,因为内容很少改变。由于网站的内容很少发生改变这一性质,因此维护起来也很简单。
回到互联网的开端,当我第一次创建了我的第一个商业网站,生活是如此的美好。
我安装Apache并写了一些简单的HTML网页,网页上列出了一些关于我的业务的重要信息,比如产品概览以及如何联系我。这是一个静态网站,因为内容很少改变。由于网站的内容很少发生改变这一性质,因此维护起来也很简单。
静态内容
静态内容很简单,同时也很常见。让我们快速的浏览一些静态网页的例子。你不需要一个可运行网站来执行这些小实验,只需要把这些文件放到家目录,然后使用浏览器打开。你所看到的内容将和通过Web服务器提供这一文件看到的内容一样。
对于一个静态网站,你需要的第一件东西就是index.html文件,该文件通常放置在/var/www/html目录下。这个文件的内容可以非常简单,比如可以是像“Hello,world”这样一句短文本,没有任何HTML标记。它将简单的展示文本串内容。在你的家目录创建index.html文件,并添加“hello,world”作为内容(不需要引号)。在浏览器中通过下面的链接来打开这一文件:
file:///home/<你的家目录>/index.html
所以HTML不是必须的,但是,如果你有大量需要格式化的文本,那么,不用HTML编码的网页的结果将会令人难以理解。
所以,下一步就是通过使用一些HTML编码来提供格式化,从而使内容更加可读。下面这一命令创建了一个具有HTML静态网页所需要的绝对最小标记的页面。你也可以使用你最喜欢的编辑器来创建这一内容。
echo"<h1>HelloWorld</h1>">test1.html
现在,再次查看index.html文件,将会看到和刚才有些不同。
当然,你可以在实际的内容行上添加大量的HTML标记,以形成更加完整和标准的网页。下面展示的是更加完整的版本,尽管在浏览器中会看到同样的内容,但这也为更加标准化的网站奠定了基础。继续在index.html中写入这些内容并通过浏览器查看。
<!DOCTYPEHTMLPUBLIC"-//w3c//DDHTML4.0//EN">
<html>
<head>
<title>MyWebPage</title>
</head>
<body>
<h1>HelloWorld</h1>
</body>
</html>
我使用这些技术搭建了一些静态网站,但我的生活正在改变。
动态网页
我找了一份新工作,这份工作的主要任务就是创建并维护用于一个动态网站的CGI(公共网关接口CommonGatewayInterfaceM)代码。字面意思来看,动态意味着在浏览器中生成的网页所需要的HTML是由每次访问页面时不同的数据所生成的。这些数据包括网页表单中的用户输入,以用来在数据库中进行数据查找,结果数据被一些恰当的HTML包围着并展示在所请求的浏览器中。但是这不需要非常复杂。
通过使用CGI脚本,你可以创建一些简单或复杂的交互式程序,通过运行这些程序能够生成基于输入、计算、服务器的当前条件等改变的动态页面。有许多种语言可以用来写CGI脚本,在这篇文章中,我将谈到的是Perl和Bash,其他非常受欢迎的CGI语言包括PHP和Python。
这篇文章不会介绍Apache或其他任何web服务器的安装和配置。如果你能够访问一个你可以进行实验的Web服务器,那么你可以直接查看它们在浏览器中出现的结果。否则,你可以在命令行中运行程序来查看它们所创建的HTML文本。你也可以重定向HTML输出到一个文件中,然后通过浏览器查看结果文件。
使用Perl
Perl是一门非常受欢迎的CGI脚本语言,它的优势是强大的文本操作能力。
为了使CGI脚本可执行,你需要在你的网站的httpd.conf中添加下面这行内容。这会告诉服务器可执行CGI文件的位置。在这次实验中,不必担心这个问题。
ScriptAlias/cgi-bin/"/var/www/cgi-bin/"
把下面的Perl代码添加到文件index.cgi,在这次实验中,这个文件应该放在你的家目录下。如果你使用Web服务器,那么应把文件的所有者更改为apache.apache,同时将文件权限设置为755,因为无论位于哪,它必须是可执行的。
#!/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";
在命令行中运行这个程序并查看结果,它将会展示出它所生成的HTML内容
现在,在浏览器中查看index.cgi文件,你所看到的只是文件的内容。浏览器需要将它看做CGI内容,但是,Apache不知道需要将这个文件作为CGI程序运行,除非Apache的配置中包括上面所展示的ScriptAlias定义。没有这一配置,Apache只会简单地将文件中的数据发送给浏览器。如果你能够访问Web服务器,那么你可以将可执行文件放到/var/www/cgi-bin目录下。
如果想知道这个脚本的运行结果在浏览器中长什么样,那么,重新运行程序并把输出重定向到一个新文件,名字可以是任何你想要的。然后使用浏览器来查看这一文件,它包含了脚本所生成的内容。
上面这个CGI程序依旧生成静态内容,因为它总是生成相同的输出。把下面这行内容添加到CGI程序中“Hello,world”这一行后面。Perl的system命令将会执行跟在它后面的shell命令,并把结果返回给程序。此时,我们将会通过free命令获得当前的内存使用量。
system"free|grepMemn";
现在,重新运行这个程序,并把结果重定向到一个文件,在浏览器中重新加载这个文件。你将会看到额外的一行,它展示了系统的内存统计数据。多次运行程序并刷新浏览器,你将会发现,内存使用量应该是不断变化的。
使用Bash
Bash可能是用于CGI脚本中最简单的语言。用Bash来进行CGI编程的最大优势是它能够直接访问所有的标准GNU工具和系统程序。
把已经存在的index.cgi文件重命名为Perl.index.cgi,然后创建一个新的`index.cgi文件并添加下面这些内容。记得设置权限使它可执行。
#!/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
在命令行中执行这个文件并查看输出,然后再次运行并把结果重定向到一个临时结果文件中。然后,刷新浏览器查看它所展示的网页是什么样子。
结论
创建能够生成许多种动态网页的CGI程序实际上非常简单。尽管这是一个很简单的例子,但是现在你应该看到一些可能性了。
相关文章推荐
网站谷歌评分90+意味着什么?2022-09-06
怎样将不安全网站变成安全网站访问?2022-09-26
网站排名下降,可能跟算法更新没关系2022-09-20
网站如何设置高质量的网页标题?2022-09-14
做外贸网站选哪些语言?法语、德语最吃香2022-09-13