一、 在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进程,直到完成任务后结束进程。这在负载不高时,会工作正常。但是,在高负载时,繁多的进程将成为性能的瓶颈问题。
二、 在Apache服务器上运行PHP
1、 php 、msql和apache关系
PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。最新版本PHP 系列支持目前绝大多数数据库(Mysql、PostgreSQL、Oracle,、DB2、Sybase等)。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: //www.php.net)自由下载。PHP拓展了WEB服务器的功能,实现了Web非常好的服务的后端延展界面,如图-3。

2、 安装Mysql
3 、安装PHP 编译
![]()
cd mysql-4.0.15/
../configure –prefix=/usr/local/mysql
make
make install
cd ..
![]()
 增加mysql用户
![]()
adduser -s /bin/false mysql
![]()
 初始化并设置目录权限
![]()
/usr/local/mysql/bin/mysql_install_db
chown –R root /usr/local/mysql/
chown –R mysql /usr/local/mysql/var
chgrp –R mysql /usr/local/mysql/
![]()
 加入库
![]()
echo /usr/local/mysql/lib/mysql/lib >>/etc/ld.so.conf
ldconfig
![]()
 使之启动时自动运行
![]()
echo “/usr/local/mysql/bin/mysqld_safe &” >>/etc/rc.d/rc.local
![]()
 启动MySQL
![]()
/usr/local//mysql/bin/mysqld_safe &
![]()
 安全性设定
![]()
修改MySQL的root密码:
![]()
/usr/local/mysql/bin/mysqladmin –uroot password abcdefg
这种安装方式是将PHP作为Apache的SAPI模块来进行安装,它仅是其中的一种安装方式,更多的方法请参阅相关文档。cd php-5.1.6
../configure–with-apxs2=/usr/local/httpd/bin/apxs –with-mysql=/usr/local/mysql
make
make install
cp php.ini-dist /usr/local/lib/php.ini
4 、安装Apache2.2.3
现在已经将Apache 2.2.3安装到 /usr/local/httpd目录中,安装好的Apache支持可装载模块和标准的MPM prefork。如果安装过程中没有出现错误,便可以使用如下命令启动Apache服务:cd httpd-2.2.3/
../configure --prefix=/usr/local/httpd --enable-so(enable是这里对应于后来需要的关键文件mod_jk2.so)
Make;make install
cd ..
如果启动成功,将启动命令加入rc.local,使之在系统启动时自动运行:/usr/local/httpd/bin/apachectl start
停止Apache服务,并继续安装PHP:echo "/usr/local/httpd/bin/apachectl start &" >>/etc/rc.d/rc.local
5、 PHP和Apache安装后的基本配置/usr/local/httpd/bin/apachectl stop
Apache的配置
PHP的配置vi cd /etc/httpd/conf.d/php.conf(加入两行)
LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php .php3
同时修改DirectoryIndex为:
DirectoryIndex index.html index.php index.php3 index.jsp
Php 语言的配置文件是/usr/local/lib/php.ini,编辑php.ini文件来配置PHP的选项。特别注意的是,安装完成后register_globals变量默认设置为Off,需要将它改成On。否则会出现PHP读不到post的数据的现象。
register_globals=On
其它PHP的选项请参考相关文档。编写一个测试脚本可以写一个简单的PHP文件来测试安装,文件包含下列一行:
<? phpinfo();?>
将其保存为/usr/local/httpd/htdocs/info.php,启动Apache,然后在浏览器中浏览。如图-4 。

如果看到如图4的信息即表示php配置成功了。
三、在Apache上运行JSP
1、 JSP简介
JSP是Sun公司推出的新一代网站开发语言,Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。三者都提供在 HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。在ASP 、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML页面只依赖于Web服务器,而ASP 、PHP、JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP 、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。
2、 tomcat简介
Tomcat是一个 HTTP 服务器,是 Sun 通过 Java Community Process 开发的、对广泛使用的 servlet 和 JavaServer Page(JSP)技术的正式参考实现。tomcat的目录结构如表1

3 、安装JDK和tomcat
JDK和Tomcat下载网址
http://java.sun.com/javase/downloads/index.jsp
http://tomcat.apache.org/
下载的软件包放在/usr/local/目录下。
使用浏览器检查如图-5 。 安装JDK
chmod +x jdk-1_5_0_07-linux-i586.bin
./jdk-1_5_0_07-linux-i586.bin
……安装过程从略
mv jdk1.5.0_07/ /usr/local/java
 设置JDK环境变量
vi /etc/profile
再文件尾部增加以下几句:
JAVA_HOME=/usr/local/java
JRE=$JAVA_HOME/jre
LC_ALL=zh_CN.GBK
PATH=$JAVA_HOME/bin:$JRE/bin:$PATH
CLASSPATH=.:$JAVA_HOME/bin/tools.jar:$JAVA_HOME/lib/dt.jar
export JAVA_HOME JRE LC_ALL CLASSPATH PATH
 查看Java环境变量
java -version
java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b05)
Java HotSpot(TM) Client VM (build 1.5.0_07-b05, mixed mode, sharing)
 安装tomcat
tar xvfz jakarta-tomcat-5.0.25.tar.gz
mv jakarta-tomcat-5.0.25 /usr/local/
ln –s /usr/local/jakarta-tomcat-5.0.25 /usr/local/tomcat
打开/usr/local/tomcat/bin/Catalina.sh 在上面注解的下方加入
JAVA_HOME=/usr/local/java/CATALINA_HOME=”/usr/local/tomcat/”
![]()
 启动tomcat
/usr/local/tomcat5/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
 查看tomcat端口
netstat -ntulp | grep java
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 2669/java
tcp 0 0 :::8009 :::* LISTEN 2669/java
tcp 0 0 :::8080 :::* LISTEN 2669/java

图-5 Tomact界面
关闭Tomcat
4、 整合Apache服务器和Tomcat服务器/usr/local/tomcat5/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME: /usr/java/jdk1.5.0_04
虽然tomcat也可以作web服务器,但其处理静态html的速度比不上apache,且其作为web服务器的功能远不如apache,因此我们想把apache和tomcat集成起来。apache和tomcat的连结器有几种,如表-2 。

下载jakarta-tomcat-connectors-jk2-src.tar.gz
Wget http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/jakarta-tomcat-connectors-jk2-src-current.tar.gz
5 、启动、关闭、测试apache 和tomcat 安裝jk2
cd jakarta-tomcat-connectors-jk2/jk/native2
./buildconf.sh
./configure --with-apxs2=/etc/apache/bin/apxsmake
cp jk/build/jk2/apache2/mod_jk2.so /usr/local/apache/modules
![]()
 复制文件
cp /jakarta-tomcat-connectors-jk2-2.0.2-src/jk/conf/ workers2.properties
/apache/conf/
![]()
 修改配置文件workers2.properties
vi /usr/local/apache/conf/workers2.properties
在最后加上指向tomcat/webapp/下的某个应用目录,例如
[uri:/jsp-examples/**//*]
info=Map the whole webapp
 修改配置文件/usr/local/tomcat/conf/jk2.properties
vi /usr/local/tomcat/conf/jk2.properties
# list of needed handlers.
handler.list=channelSocket,request
# Override the default port for the channelSocket
channelSocket.port=8009
![]()
 重新设置环境变量
vi /etc/profile加入
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/usr/local/tomcat
测试启动apache 和tomcat命令:
/tomcat/bin/catalina.sh start
/apache/bin/apachectl start
关闭apache 和tomcat命令:
/tomcat/bin/catalina.sh stop
/apache/bin/apachectl stop
在一台和Linux 服务器相连的计算机(linux、windows都可以,下面使用的是windows)的浏览器输入http://192.168.1.12/jsp-examples/ 即可,如图-6 。

图-6 JSP测试界面
上面笔者使用的是自己的样例程序进行测试的,也可以自己编写新的项目。如果出现tomcat的jsp-examples/页面,则整合完成。tomcat作为一个servlet(jsp也被编译为servlet执行)容器,其应用前景是非常好的,如果与 jboss结合起来,则可以实现sun的j2ee规范(用jboss作ejb服务器)。