【Web】CGI简介
什么是CGI
CGI的全称是Common Gateway Interface,通用网关接口。粗略地说,CGI就是位于服务器端的处理网页请求的程序。CGI程序本身是服务器操作系统上的一个简单的应用程序,它接受输入进行处理并输出内容,这些输入输出都又通过Web服务器软件(比如apache)处理,最终完成需要的功能。下图是CGI在整个网页服务中的位置:
CGI的编写
下面是一个CGI的基本示例:
#include <stdio.h>
int main()
{
printf("Content-Type: text/html\n\n");
printf("hello world!\n");
return 0;
}
这里使用了c语言的实现,可以看到它其实没有什么特别之处,但是还是需要说明几点:首先这里使用的printf就是往标准输出输出字符,不过Web服务器会进行处理转发,实际上当然不会打印到我们的终端;其次这里有一句特殊的打印“Content-Type: text/html\n\n”,它是告诉浏览器接收到的文件格式的,必须要加上否则会报错(500 Internal Server Error)。
之后编译也是使用最普通的方式:
gcc test.c -o test.cgi
只是文件名称稍微修改了下。
为了使用该CGI程序,需要相关的浏览器和Web服务器支持,浏览器通常没有问题,Web服务器则需要安装,这里使用apache服务器。
安装apche和配置CGI
使用Ubuntu2004搭建服务器,首先需要安装httpd:
不过可以看到不能直接安装httpd,而是需要安装对应的软件包,这里就安装apache2,它是最常用的开源服务器,安装如下:
安装完成之后可以查看是否打开apache2服务器:
从上图可以看到已经打开了。为了进一步证明,最好的办法就是打开apache服务器的网页,我们可以直接使用本机的IP(127.0.0.1或localhost)来访问该服务器,如图所示:
到这里就说明apache服务器已经正常搭建。上述的网页其实就存放在如下的目录,当我们打开网页并输入本机地址之后,apache服务器就将该网页输出:
之后是配置CGI。apche服务器是支持CGI的,但是默认没有开启,注意下图中的两个目录:
mode-enabled目录下是当前开启的,而mod-available是当前支持的,如下所示,这里是有cgi相关的支持的:
我们需要将上面的cgid.conf,cgid.load和cgi.load映射到mod-enabled目录中,下面是具体的命令,注意需要使用root权限:
ln -s /etc/apache2/mods-available/cgid.conf /etc/apache2/mods-enabled/cgid.conf
ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load
ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
之后重启apache服务:
/etc/init.d/apache2 restart
默认存放cgi程序的目录是/usr/lib/cgi-bin,后面新建的程序放在该目录即可使用,对应的网页是/cgi-bin/xxx.cgi。这里是相对路径,xxx.cgi是程序名。
CGI的使用
前面已经编译出了需要的CGI程序,只需要将该文件放到apache服务器指定的目录(cgi程序默认存放目录/usr/lib/cgi-bin)即可。之后就可以通过浏览器和apache服务器访问该CGI,如下所示:
以上就是CGI的简要说明。
还没有评论,来说两句吧...