【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的简要说明。
【Web】CGI简介相关推荐
- 第一章 Web MVC简介 —— 跟开涛学SpringMVC
第一章 Web MVC简介 -- 跟开涛学SpringMVC Web MVC简介 1.1.Web开发中的请求-响应模型: 在Web世界里,具体步骤如下: 1. Web浏览器(如IE)发起请求,如访问 ...
- 第一章 Web MVC简介 —— 跟开涛学SpringMVC 博客分类: 跟开涛学SpringMVC webmvcjavaeespring跟开涛学SpringMVC Web MVC简介 1.1、We
第一章 Web MVC简介 -- 跟开涛学SpringMVC 博客分类: 跟开涛学SpringMVC webmvcjavaeespring跟开涛学SpringMVC Web MVC简介 1.1.Web ...
- web安全简介_Web安全:HTTP简介
web安全简介 by Alex Nadalin 通过亚历克斯·纳达林 Web安全:HTTP简介 (Web Security: an introduction to HTTP) This is part ...
- Tim Berners-Lee重新分散的新Web SOLID简介
by Arnav Bansal 通过Arnav Bansal Tim Berners-Lee重新分散的新Web SOLID简介 (An introduction to SOLID, Tim Berne ...
- 《jQuery与JavaScript入门经典》——第 1 章 动态Web编程简介 1.1理解Web服务器浏览器范式...
本节书摘来自异步社区<jQuery与JavaScript入门经典>一书中的第1章,第1.1节,作者:[美]Brad Dayley著,更多章节内容可以访问云栖社区"异步社区&quo ...
- web API简介(二):客户端储存之document.cookie API
概述 前篇:web API简介(一):API,Ajax和Fetch 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据.document.cook ...
- J2EE基础之Web服务简介
J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...
- JavaScript(五)—— Web APIs 简介/JavaScript 必须掌握的 DOM 操作 (丰富案例 + 思维导图)
本篇为 JavaScript 系列笔记第五篇,将陆续更新后续内容.参考:黑马程序员JavaScript核心教程,前端基础教程 系列笔记: JavaScript(一)-- 初识JavaScript / ...
- amazeui学习笔记二(进阶开发2)--Web组件简介Web Component
amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...
- Web APIs 简介
Web APIs 简介 1 Web APIs 和 JS 基础关联性 1.1 JS 的组成 1.2 JS 基础阶段以及 Web APIs 阶段 JS 基础阶段 我们学习的是 ECMAScript 标准规 ...
最新文章
- zw版【转发·台湾nvp系列Delphi例程】HALCON SmoothImage
- ssh mysql环境搭建_搭建一个MySQL高可用架构集群环境
- Python:赋值语句和布尔值
- 【Python基础】用Python制作漂亮的流动桑基图
- 案例展示快做好了(更新)
- springmvc使用freemarker
- 【HAOI2010】工厂选址题解
- 第一步_安装VMware虚拟机和搭载ubuntu系统
- Android UI(一)Layout 背景局部Shape圆角设计
- python读取excel在web中显示_在网页中预览excel表格文件
- JavaScript学习指南(非常详细)
- TCP长连接开发相关,调试工具SocketTool与框架GatewayWorker
- struts2上传 zip和rar文件类型
- 小米盒子 android 投影仪,小米盒子连接投影仪方法
- Coverity 2018,Coverity2019使用教程
- 通过 BT 种子 Hash 值从 BitComet 服务器上下载种子文件
- 解析g代码c语言程序
- 国内IT界5大女神程序员,你知道几个
- 深入探究 null 和 undefined 区别
- 一键重装系统win8图文教程
热门文章
- Android视频录制
- 投稿英文国际会议论文经验总结
- mysql 备份 access_备份access数据库
- 华为云买网站买另外服务器,华为云网站在买其他服务器
- python画一个正方形和圆_python用正方形画圆|怎么用matlab画出一个正方形?
- Qt自定义控件--QQ表情
- 利用C++创建一个游戏(1)窗口框架(代码+注释)
- linux bin目录在哪,Linux 基础知识 /bin,/sbin,/usr/sbin,/usr/bin 目录 区别详解
- 通讯录管理系统(C语言版)
- [RK3288][Android6.0] 用户空间对音频寄存器的控制