
 
 | 
| 技术资料  > PHP技术 > 入门教程 : 如何集成Linux、Apache、PHP4、FastCGI、Oracle、MySQ |  
如何集成Linux、Apache、PHP4、FastCGI、Oracle、MySQ March 25,2004 |  
 (作者:张宏 2000年10月30日 18:03)  
 一. 准备工作  
  要实现将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驱动程序: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.rpm  
 
  6.MySQL客户端程序包:MySQL-client-3.22.32-1.i386.rpm  
 
  7.MySQL开发包(头文件/库文件):MySQL-devel-3.22.32-1.i386.rpm  
 
  8.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.gz  
 
  12.FastCGI的perl开发模块:FCGI-0.53.tar.gz  
 
  二. 安装Oracle客户端  
  由于Oracle 8.1.6是在XWindows下安装的,所以必须是事先配置好XWindow,如果你的显卡不支持XWindow,也可以用exceed进行远程安装(这里不提远程如何安装)。  
 
在此简单列出操作过程:  
 
  (一)设置环境变量:  
 
  在/etc/profile中加入:  
 
  export ORACLE_HOME=/opt/oracle8i/u01  
 
  export ORACLE_BASE=/opt/oracle8i  
 
  export ORACLE_OWNER=oracle  
 
  export ORACLE_SID=ORCL  
 
  export ORACLE_TERM=ansi  
 
  export PATH=$PATH:$ORACLE_HOME/bin  
 
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib  
 
  export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data  
 
  export 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并测试连接远程服务器通过即可。  
 
  三. 安装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  
 
  (六)配置Apache自身参数:  
 
  1.编辑/usr/local/apache/conf/httpd.conf文件,修改以下参数:  
 
  ServerName host.mydomain.name  
 
  DocumentRoot "/home/httpd/html"  
 
  Options Indexes FollowSymLinks MultiViews Includes  
 
  AllowOverride None  
 
  Order allow,deny  
 
  Allow from all  
 
  ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"  
 
  AllowOverride None  
 
  Options None  
 
  Order allow,deny  
 
  Allow from all  
 
  DirectoryIndex index.html index.phtml index.php index.htm index.shtml index.fcgi  
 
  2.修改自启动链接  
 
  #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 .php3  
 
  2.修改/usr/local/apache/bin/apachectl脚本,使启动支持中文ORACLE环境:  
 
  在文件中66行("start)")下面加入几行:  
 
  export ORACLE_HOME=/opt/oracle8i/u01  
 
  export ORACLE_BASE=/opt/oracle8i  
 
  export ORACLE_SID=ORCL  
 
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib  
 
  export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data  
 
  export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280"  
 
  3.修改/usr/local/apache/conf/srm.conf以在CGI程序中使用环境变量:  
 
  PassEnv ORACLE_HOME  
 
  PassEnv ORACLE_BASE  
 
  PassEnv LD_LIBRARY_PATH  
 
  PassEnv NLS_LANG  
 
  PassEnv ORACLE_SID  
 
  PassEnv PATH  
 
  (八)配置FastCGI执行环境:  
 
  1.修改/usr/local/apache/conf/httpd.conf文件,修改以下参数:  
 
  增加几行:  
 
  ############ FastCGI Configures Begin ##########################  
 
  AddHandler fastcgi-script .fcg .fcgi .fpl  
 
  SetHandler fastcgi-script  
 
  Order deny,allow  
 
  Allow from all  
 
  Options ExecCGI Indexes Includes  
 
  ############### FastCGI Configure End ###########################  
 
  2.创建fcgi的执行目录  
 
  #mkdir /home/httpd/html/fcgi  
 
  3.安装FCGI的Perl运行模块:  
 
  #tar zxvf FCGI-0.53.tar.gz  
 
  #cd FCGI-0.53  
 
  #perl Makefile.PL  
 
  #make  
 
  #make install  
 
  六.启运并测试  
  1.启动Apache服务器:  
 
  #/etc/rc.d/init.d/httpd start  
 
  2.编写PHP测试程序:  
 
  第一个测试程序:/home/httpd/html/t1.php;  
 
  第二个测试PHP与Oracle连接的PHP程序(表已经建好):查看是否为中文输出;  
 
  第三个测试PHP与MySQL连接的PHP程序(表已经建好)。  
 
  3. 编写FastCGI的测试代码: /home/httpd/html/fcgi/test.fcgi  
 
  #!/usr/bin/perl  
 
  use FCGI;  
 
  use DBI;  
 
  $dbname="oracle";  
 
  $user="user";  
 
  $passwd="password";  
 
  $dbh="";  
 
    while(FCGI::accept()>=0) {  
 
  &parse_form();  
 
  $id=$FORM{"id"};  
 
  $para=$FORM{"para"};  
 
  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{"REQUEST_METHOD"};  
 
    if ($meth eq "GET" || $meth eq "HEAD") {  
 
  $buffer = $ENV{"QUERY_STRING"};  
 
  }  
 
  elsif ($meth eq "POST") {  
 
  read(STDIN, $buffer, $ENV{"CONTENT_LENGTH"});  
 
  }  
 
  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($1))/eg;  
 
  $value =~ s///g;  
 
    if ($allow_html != 1) {  
 
  $value =~ s/]| )*>//g;  
 
  }  
 
  $FORM{$name} = $value;  
 
  }  
 
  }  
 
  测试看看FastCGI是否正常执行了。  
 
(转载自LinuxAid)  
 
原作者:张宏    
来源:LinuxAid、赛迪网    
         |  
 
 | 
  
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved