【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的简要说明。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值