一. 准备工作 要实现将Linux/Apache/PHP4/FastCGI/Oracle/MySQL环境集成,必需先准备好以下软件包: (一)数据库的Perl接口 1.perl5的Oracle数据库DBI驱动程序:DBD-Oracle-1.03.tar.gz 2.perl5的通用数据库接口程序:DBI-1.13.tar.gz 3.perl5的MySQL数据库DBI驱 一. 准备工作要实现将Linux/Apache/PHP4/FastCGI/Oracle/MySQL环境集成,必需先准备好以下软件包:(一)数据库的Perl接口1.perl5的Oracle数据库DBI驱动程序:DBD-Oracle-1.03.tar.gz2.perl5的通用数据库接口程序:DBI-1.13.tar.gz3.perl5的MySQL数据库DBI驱动程序:Msql-Mysql-modules-1.2209.tar.gz(二)Oracle数据库4.Oracle 8iR2(8.1.6) for Linux安装盘:oracle8161.tar.gz(三)MySQL数据库5.MySQL 3.22.32服务器程序包:MySQL-3.22.32-1.i386.rpm6.MySQL客户端程序包:MySQL-client-3.22.32-1.i386.rpm7.MySQL开发包(头文件/库文件):MySQL-devel-3.22.32-1.i386.rpm8.MySQL共享库程序包:MySQL-shared-3.22.32-1.i386.rpm(四)Apache服务器9.Apache 1.3.12源码包:apache_1.3.12.tar.gz(五)PHP模块10.PHP 4.0.0源码包:php-4.0.0.tar.gz(六)FastCGI模块11.FastCGI模块源码包:mod_fastcgi_2.2.4.tar.gz12.FastCGI的perl开发模块:FCGI-0.53.tar.gz共5页。二. 安装Oracle客户端由于Oracle 8.1.6是在XWindows下安装的,所以必须是事先配置好XWindow,如果你的显卡不支持XWindow,也可以用exceed进行远程安装(这里不提远程如何安装)。在此简单列出操作过程:(一)设置环境变量:在/etc/profile中加入:export ORACLE_HOME=/opt/oracle8i/u01export ORACLE_BASE=/opt/oracle8iexport ORACLE_OWNER=oracleexport ORACLE_SID=ORCLexport ORACLE_TERM=ansiexport PATH=$PATH:$ORACLE_HOME/binexport LD_LIBRARY_PATH=$ORACLE_HOME/libexport ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataexport NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280"(二)建立oracle组和用户#/usr/sbin/groupadd dba#/usr/sbin/useradd -g dba oracle#/usr/bin/passwd oracle(三)创建$ORACLE_HOME目录#mkdir /opt#mkdir /opt/oracle8i#mkdir /opt/oracle8i/u01#chown -R oracle.dba /opt(四)安装reacle 8iR2以oracle用户登录,解开Oracle安装包:$tar zxvf oracle8161.tar.gz$startx 启动XWindow界面,并打开一个rxvt终端窗口$cd Oracle8iR2$./runInstaller此时出现Oracle安装界面,在安装时选择安装client/Application User(如果Oracle服务器不在本机上运行,另有专用机器),安装完毕后配置SQL*Net8并测试连接远程服务器通过即可。共5页。三. 安装MySQL服务器和客户端以root身分进入,安装MySQL各个包:#rpm -ivh MySQL-3.22.32-1.i386.rpm#rpm -ivh MySQL-client-3.22.32-1.i386.rpm#rpm -ivh MySQL-devel-3.22.32-1.i386.rpm#rpm -ivh MySQL-shared-3.22.32-1.i386.rpm四. 安装Perl的数据库接口模块以root身分进入,然后执行:#tar zxvf DBI-1.13.tar.gz#cd DBI-1.13#perl Makefile.PL#make#make test#make install#cd ..#rm -rf DBI-1.13##tar zxvf DBD-Oracle-1.03.tar.gz#cd DBD-Oracle-1.03#perl Makefile.PL#make#make test#make install#cd ..#rm -rf DBD-Oracle-1.03##tar zxvf Msql-Mysql-modules-1.2209.tar.gz#cd Msql-Mysql-modules-1.2209#perl Makefile.PL选择1(MySQL)和y(支持Mysql.pm)#make#make test#make install#五. 安装Apache+PHP+FastCGI(一)解开Apache/PHP/FastCGI包:#tar zxvf apache_1.3.12.tar.gz#tar zxvf php-4.0.0.tar.gz#tar mod_fastcgi_2.2.4.tar.gz(二)编译PHP4配置apache编译参数#cd apache_1.3.12#./configure --prefix=/usr/local/apache配置PHP编译参数#cd ../php-4.0.0#./configure --with-apache=../apache_1.3.12> --with-mysql> --with-oracle=$ORACLE_HOME> --with-oci8=$ORACLE_HOME> --enable-track-vars编译PHP模块:#make#make install创建php.ini参数文件#cp php.ini-dist /usr/local/lib/php.ini#cd ..(三)添加FastCGI模块:#mv mod_fastcgi_2.2.4 apache_1.3.12/src/modules/fastcgi(四)编译安装Apache#cd apache_1.3.12配置编译参数#./configure --prefix=/usr/local/apache> --activate-module=src/modules/php4/libphp4.a> --activate-module=src/modules/fastcgi/libfastcgi.a编译Apache#make安装Apache#make install(五)关闭原有系统自带的Apache#/etc/rc.d/init.d/httpd stop共5页。(六)配置Apache自身参数:1.编辑/usr/local/apache/conf/httpd.conf文件,修改以下参数:ServerName host.mydomain.nameDocumentRoot "/home/httpd/html"Options Indexes FollowSymLinks MultiViews IncludesAllowOverride NoneOrder allow,denyAllow from allScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"AllowOverride NoneOptions NoneOrder allow,denyAllow from allDirectoryIndex index.html index.phtml index.php index.htm index.shtml index.fcgi2.修改自启动链接#cd /etc/rc.d/init.d#ln -fs /usr/local/apache/bin/apachectl httpd(七)配置PHP4.0参数:1.修改/usr/local/apache/conf/httpd.conf文件,,修改以下参数:增加一行:AddType application/x-httpd-php .php .phtml .php32.修改/usr/local/apache/bin/apachectl脚本,使启动支持中文ORACLE环境:在文件中66行("start)")下面加入几行:export ORACLE_HOME=/opt/oracle8i/u01export ORACLE_BASE=/opt/oracle8iexport ORACLE_SID=ORCLexport LD_LIBRARY_PATH=$ORACLE_HOME/libexport ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataexport NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280"3.修改/usr/local/apache/conf/srm.conf以在CGI程序中使用环境变量:PassEnv ORACLE_HOMEPassEnv ORACLE_BASEPassEnv LD_LIBRARY_PATHPassEnv NLS_LANGPassEnv ORACLE_SIDPassEnv PATH(八)配置FastCGI执行环境:1.修改/usr/local/apache/conf/httpd.conf文件,修改以下参数:增加几行:############ FastCGI Configures Begin ##########################AddHandler fastcgi-script .fcg .fcgi .fplSetHandler fastcgi-scriptOrder deny,allowAllow from allOptions ExecCGI Indexes Includes############### FastCGI Configure End ###########################2.创建fcgi的执行目录#mkdir /home/httpd/html/fcgi3.安装FCGI的Perl运行模块:#tar zxvf FCGI-0.53.tar.gz#cd FCGI-0.53#perl Makefile.PL#make#make install共5页。六.启运并测试1.启动Apache服务器:#/etc/rc.d/init.d/httpd start2.编写PHP测试程序:第一个测试程序:/home/httpd/html/t1.php;第二个测试PHP与Oracle连接的PHP程序(表已经建好):查看是否为中文输出;第三个测试PHP与MySQL连接的PHP程序(表已经建好)。3. 编写FastCGI的测试代码: /home/httpd/html/fcgi/test.fcgi#!/usr/bin/perluse FCGI;use DBI;$dbname="oracle";$user="user";$passwd="password";$dbh="";while(FCGI::accept()>=0) {&parse_form();$id=$FORM;$para=$FORM;print "Content-type: text/html ";print " ";if (!$dbh){print "no oracle, need to connect ";$dbh = DBI->connect("dbi:Oracle:$dbname",$user,$passwd);}else{print "OK, oracle aleady connected ";}$sth=$dbh->prepare("select name from testtable where id=15");$sth->execute;@recs=$sth->fetchrow_array;$sth->finish;print "参数id=".$id." and my name is @recs[0] ";print "参数para=".$para." ";}####传入参数处理部分#######sub parse_form {my($buffer);my($pairs);my(@pairs);my($name);my($value);my $meth = $ENV;if ($meth eq "GET" || $meth eq "HEAD") {$buffer = $ENV;}elsif ($meth eq "POST") {read(STDIN, $buffer, $ENV);}undef %FORM;@pairs = split(/&/, $buffer);foreach $pair (@pairs) {($name, $value) = split(/=/, $pair);$value =~ tr/+/ /;$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex())/eg;$value =~ s///g;if ($allow_html != 1) {$value =~ s/]| )*>//g;}$FORM = $value;}}测试看看FastCGI是否正常执行了。