Linux+Apache+C+MySQL CGI编程的一些总结

来源:互联网 发布:java同步synchronized 编辑:程序博客网 时间:2024/05/20 05:09

CGI——Common Gateway Interface(公用网关接口)的缩写,它规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序在CGI web编程中主要用来对网页提交来的表单内容做处理,然后通过分析客户提交的内容,来确定对数据库的操作,为前台页面与数据库之间建立连接,用C语言来写的CGI程序,具有高效性,安全性和平台无关性。现在就在这次的编程实验中的一些知识做一下总结。

“工欲善其事,必先利其器”,当然在我们开始CGI编程之旅之前,我们必须先要做一些基础性的准备工作,服务器平台的搭建和C编译器的选择,在此我们采取了Linux下的Apache作为我们的Web服务器,使用GNU/GCC作为C编译器,对于数据库我采用MySQL。可以看见这里的一切都是免费开源的,我们可以不花一分钱而搭建一个非常稳健的服务器。接下来我们就来配置我们的服务平台吧,

服务器设置

首先,在网上下载Apache的linux源码安装包,这里用的是httpd-2.2.14.tar.gz不过这个好像不是正式版的,但是是最新的,

在安装的时候先查看一下自己的系统里是否已经安装,如果有可以将其卸载,也可以直接用,如果没找着,而且在安装后启动服务器是提示端口冲突,那么就是装重了,或者是有其他的web服务程序。可以检查一下/var/和/usr/local/如果在/var/下有www的目录那么就是装的以前的版本的Apache了,在/usr/local/下有Apache*的目录那也说明安装着另一版本的Apache。

1.以超级用户登陆,将源码包拷贝到桌面上,然后打开终端进行解压

2.进入解压后的目录



3.执行安装步骤:

具体的安装步骤在INSTALL中,也有可能在README中。一般的步骤如下:

#./configure--prefix=PREFIX

(--prefix=PREFIX,此选项为指定目标安装路径,可以默认,可以自定义,                 不同的版本缺省路径不同,此版本的缺省路径为/usr/local/apache2/)

#make

#make install

#PREFIX/bin/apachectl start(启动Apache服务)

在以前的版本中Apache的启动文件,配置文件在/etc/httpd/下,启动方式是service        httpd start。其他的文件在/var/www/下,请根据不同的版本做选择。

4.做一些有用的配置,Apache比其他WEB程序(如windows的IIS)的一个好处就是配置特别灵活,一个配置文件就能完成很多有意义,且重要的事。下面是我们需要修改的几个地方,这样可以让他为我所用。

#这里是web服务器的端口,默认为80,也可以是8080如果没有什么冲突的话就  

#不要改了

#Listen 12.34.56.78:80

Listen 80

#管理员邮箱,如果你的服务器真的要介入网络的话,这个是非常重要的客户可以 #通过它反馈给你一些服务器的信息

ServerAdmin light@light.com

#如果你有DNS注册的域名可以在下面填上域名,没有的话直接填IP就行了

#ServerName www.light.com:80

#这个可是重中之重,它是此Web服务器的根对于网页文件,图片文件等都需要放

#在这里,这根是区别于Linux的根的,我们在做的时候曾遇到这样的问题,在用  

#C语言向打印一个网页时,里面有一张图片,在程序里写的路径是cgi-bin/head.jpg

#也就是当前路径下的head.jpg,可是硬是弄了半天也出来,改成绝对路径为

#/usr/local/apache2/cgi-bin/head.jpg后也不行,将head.jpg剪到htdocs下将路径改为#/head.jpg后竟然出来了,其实这是没有理解下面这段代码的原因。

#当然这个路径也可以改成其他的

DocumentRoot"/usr/local/apache2/htdocs

#下面这里说了"/"的具体事宜

<Directory/>

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

</Directory>

#这里提示说可以更改根路径

<Directory"/usr/local/apache2/htdocs">

#

#Possible values for the Options directive are"None","All",

#or any combination of:

#Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

#

#Note that"MultiViews"must be named*explicitly*---"Options All"

#doesn't give it to you.

#

#The Options directive is both complicated and important.Please see

#http://httpd.apache.org/docs/2.2/mod/core.html#options

#for more information.

#

Options Indexes FollowSymLinks

#

#AllowOverride controls what directives may be placed in.htaccess files.

#It can be"All","None",or any combination of the keywords:

#Options FileInfo AuthConfig Limit

#

AllowOverride None

#

#Controls who can get stuff from this server.

#

Order allow,deny

Allow from all

</Directory>

#

#DirectoryIndex:sets the file that Apache will serve if a directory

#is requested.

#这里在设置网站的索引页

<IfModule dir_module>

DirectoryIndex index.html

</IfModule>

#这里的设置可以说是我们最重要的地方了,这里说明了CGI程序的路径,

#只有在这里做了设置,Apache才能识别并运行我们的CGI程序

#这个路径也是可以更改的。

ScriptAlias/cgi-bin/"/usr/local/apache2/cgi-bin/"

#

#"/usr/local/apache2/cgi-bin"should be changed to whatever your ScriptAliased

#CGI directory exists,if you have that configured.

#

<Directory"/usr/local/apache2/cgi-bin">

AllowOverride None

#Apache是默认不执行CGI程序的只要将下面的None改成EexcCGI就能行了

Options None改为ExecCGI

Order allow,deny

Allow from all

</Directory>

#这里可以设置CGI程序的后缀名,让Apache识别。

AddHandler cgi-script .cgi .exe .pl

保存后重启Apache,我们简单的web服务器就配置好了,当然这样很垃圾,因为我们只做学习CGI使用,所以其他的方面并没有考虑,这方面可以参考Apache的中文手册。

原创粉丝点击