一、 在Apache服务器上运行CGI
1、CGI简介
CGI是独立于语言的网关接口规范,它实际上可以用任何广泛流行的应用程序开发语言来实现,包括C、C++、Perl、Shell脚本甚至Java。 WEB服务器从客户端得到某个URL,它告诉WEB服务器,必须运行一个CGI外部应用程序。那么WEB服务器启动这一应用程序,等待它完成并返回输出结果。最后,它将此应用程序的输出结果传输给另一端的WEB客户。
2、使用mod_cgi模块
mod_cgi模块Apache 2.x 系列的确省安装支持的一个模块,通过它可以在Apache中直接使用CGI程序。可以使用“httpd -M”命令查看mod_cgi是否已经编译。修改apache配置文件的CGI 目录部分为如下:
3、编写一个简单脚本文件,并且赋予权限ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi
#去掉注释
4、打开一个浏览器测试vi /var/www/cg-bin/hello.cgi
!/usr/bin/perl
print “hello world”.\n;
chmod 775 /var/www/cg-bin/hello.cgi
在浏览器的地址栏输入:http://ip/cg-bin/hello.cgi即可,如图-1 。

说明:除此之外还可以使用mod_perl 模块运行cgi。
5、使用Mod_perl模块
mod_perl模块Apache 2.x 系列的确省安装支持的一个模块,通过它可以在Apache中直接使用CGI程序。可以使用“httpd -M”命令查看mod_perl是否已经编译。修改perl配置文件/etc/httpd/conf.d/perl.conf为如下:去掉注释#
6、编写一个简单脚本文件,并且赋予权限Alias /perl /var/www/perl
<Directory /var/www/perl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry::handler
PerlOptions +ParseHeaders
Options +ExecCGI
</Directory>
7、打开一个浏览器测试mkdir /var/www/perl;cd /var/www/perl
vi /var/www/perl/hello.pl
print << EOF;
Hello World.
EOF
chmod 775 /var/www/cg-bin/hello.cgi
在浏览器的地址栏输入:http://ip/ perl/hello.pl 即可,如图-2 。

需要提示的一点:通过网关接口(CGI)已成为服务器端应用程序开发的事实标准。但随着时间的推移,发现在沉重的CGI负担下许多WWW服务器系统的表现不尽人意。这是因为CGI规范存在瓶颈问题:每当客户系统请求CGI应用程序时,WWW服务器就必须启动新的CGI进程,直到完成任务后结束进程。这在负载不高时,会工作正常。但是,在高负载时,繁多的进程将成为性能的瓶颈问题。