1、前言:
  
  对于unix(linux)来说,apache+php是个不错的选择。对于小型的网站,比较通用的是apache+php+mysql,优点不比说了。但是,对于大型的网站,需要对数据库检索和连接请求高的站点,mysql还是出现了他的局限性。很多门户网站,例如:sina、tom、sohu、china等,都是用了新闻发稿器的生成静态页面。但是这个新闻发稿器,很多都是通过apache+php来完成,大量的资料放在数据库中,用户访问的时候,在由程序生成静态页面。所以,apache+php+oracle是比较合理的选择。
  
  由于平时都是用的sun的sparc机器,这个环境是临时搭建,用的是redhat9,如果有喜欢用redhat ad的朋友,需要自己先测试一下。
  
  2、结构:
  

  主机两台:
  odb 安装oracle server,作为数据存储。
  webapp 安装oracle client和apache+php,php通过oracle client来访问oracle。
  odb ip:192.168.1.2
  webapp ip: 192.168.1.3 211.11.11.11
  优点:安全,odb可以用内网ip,还能实现降低webapp的负载。
  
  3、主机系统相关软件:
  
  redhat9
  oacle9 for liunx
  httpd2.0.50
  php4.32
  
  4、安装软件:
  
  4.1、odb的安装:
  
  这里关于oracle9的redhat9上的安装,大家查看论坛相应的其他文章,这里就不过多写了。为了上下文,这里建立库为odb。
  
  4.2、apache2的安装:
  
  # tar zxvf httpd2.0.49.tar.gz
  # cd httpd2.0.49
  # ./configure prefix=/opt/apache enableso withmpm=worker
  # make
  # make install
  
  4.3、webapp主机上的oracle client安装:
  
  4.3.1 安装好RedHat9.0操作系统,确保安装了以下的RPM开发包
  gcc
  cpp
  glibcdevel
  compatlibstdc++
  glibckernheaders
  binutils
  可以使用命令来查看是否已安装了这些包
  rpm –q gcc cpp compatlibstdc++ glibcdevel glibckernheaders binutils
  
  4.3.2、从Oracle官方网站下载Oracle9i安装文件并使用如下命令解包
  
  # zcat lnx_920_disk1.cpio.gz | cpio –idmv
  # zcat lnx_920_disk2.cpio.gz | cpio –idmv
  # zcat lnx_920_disk3.cpio.gz | cpio –idmv
  然后会有Disk1 Disk2 Disk3三个子目录。
  
  4.3.3、设置内核参数
  # echo 4294967295 > /proc/sys/kernel/shmmax,建议放到/etc/rc.local文件里。
  或编辑/etc/sysctl.conf
  kernel.shmmax=4294967295
  我有512MB内存,所以设置这个数值。可根据实际情况设置。
  
  4.3.4、创建Oracle用户帐号和安装目录
  
  在shell下,作为root
  # groupadd dba
  # groupadd oinstall
  # useradd –g oinstall –G dba oracle
  # passwd oracle
  
  # mkdir /opt/oracle
  # mkdir /opt/oracle/product
  # mkdir /opt/oracle/product/9.2.0
  # chown –R oracle.oinstall /opt/oracle
  # mkdir /var/oracle
  # chown oracle.dba /var/oracle
  # chmod 755 /var/oracle
  
  4.3.5、设置环境变量
  
  # vi /home/oracle/.bash_profile文件,添加下列行
  
  
  export LD_ASSUME_KERNEL=2.4.1
  export ORACLE_BASE=/opt/oracle
  export ORACLE_HOME=/opt/oracle/product/9.2.0
  NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK";export NLS_LANG
  ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
  LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;export LD_LIBRARY_PATH
  PATH=$PATH:$ORACLE_HOME/bin;export PATH
  
  4.3.6、安装
  
  可以重新启动机器,让设置的参数生效,让后用oracle用户登陆,安装oracle。
  
  # ~Disk1
  # ./runInstaller
  
  安装的时候,选择安装client。
  有提示你用root用户执行几个脚本,按照提示做就可以了。
  
  4.4、 php安装
  
  在安装php的时候,php调用oracle9(9.0.2 10 )的时候需要安装一个patch,不然会出现问题。但是oracle8的版本没有问题。oracle的官方网站上有下载,地址如下:
  
  http://otn.oracle.com/products/ias/ohs/htdocs/ociheaders.tar
  
  # cp ociheaders.tar /opt/oracle/product/9.2.0/network/rdbms/demo/
  # cd cd /opt/oracle/product/9.2.0/network/rdbms/demo
  # tar xvf ociheaders.tar
  
  # tar zxvf php4.3.2.tar.gz
  # cd php4.3.2
  # ./configure prefix=/opt/php withzlib
  withapxs2=/opt/apache/bin/apxs disablexml withoutmysql
  withoci8=/opt/oracle/product/9.2.0
  withconfigfilepath=/opt/php/etc/php.ini
  disablerpath withoutpear
  # make
  # make install
  # mkdir /usr/local/php/etc
  # cp /home/peng/php4.3.2/etc/php.inidisk /usr/local/php/etc/php.ini/php.ini
  # vi /usr/local/php/etc/php.ini/php.ini
  
  5 配置软件:
  
  5.1、启动odb主机上的oracle:
  以oracle用户登陆:
  
  启动数据库
  $ Sqlplus “ / as sysdba”
  SQL>startup
  
  启动监听程序
  $ lsnrctl
  
  5.2、配置apache2:
  
  # vi /opt/apache/conf/httpd.conf
  
  添加:AddType application/xhttpdphp .php
  更改下列选项如下:
  Listen 211.11.11.11:80 你的发布主机ip
  User nobody
  Group nobody
  DirectoryIndex index.html index.php
  AddDefaultCharset Off
  
  5.3 配置php:
  
  # vi /usr/local/php/etc/php.ini/php.ini
  更改:
  register_global =Off 为 register_global =On
  
  5.4 配置oracle client:
  # vi /opt/oracle/product/9.2.0/network/admin/tnsnames.ora
  
  
  odb =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = odb)
  )
  )
  
  
  
  到这里,系统已经全部安装成功,需要根据自己情况,配置apache的具体主机设置。
  
  总结:
  
  apche+php+oracle一般的应用情况都是针对数据库访问量比较大,或者经常用到数据库检索的应用。很多都是为应用服务器而搭建的环境。
  
  这里注意一点就是,这个环境的搭建,同样适合oracle10的版本。如果用oracle817以下的版本,是不需要安装ociheaders这个补丁的。对于oracle7,php要用withoracle=的参数。
08-29 20:45