beeman.nl
Als je nix doet is het goed…

Oracle XE, Apache en PHP op CentOS!

November 24th, 2005 by beeman


1 CentOS


1.1 CentOS Downloaden

Download de ‘boot.iso’ van de laaste versie van CentOS (dat is op moment van schrijven versie 4.2) van deze locatie: boot.iso (ftp://ftp.nluug.nl/pub/os/Linux/distr/CentOS/4.2/os/i386/images/boot.iso)

Deze iso is 4.8MB en start de installatie op de PC op, om de rest van de instrallatie-bestanden van internet op te halen.


1.2 CentOS Installeren

  • Brand de iso op een CD (of boot de iso in VMware of Qemu)
  • Boot van de CD
  • Druk op [enter] om de installatie te starten
  • Kies taal (English)[enter] en keyboard settings (us)[enter]
  • Kies de installatiemethode (FTP)[enter]
  • IP Adres via DHCP? (Yes)[enter]
  • FTP-server: ftp.nluug.nl [tab], CentOS dir: pub/os/Linux/distr/CentOS/4.2/os/i386, dan [enter]
  • Kies [Next], kies [Custom] dan [Next]
  • Kies Automatically partition, en [Next]
  • Klik op [Next] en [YES] om de partities aan te maken.

LET OP: Hiermee wordt alle eventuele data van de harde schijf gewist!

  • Kies [Yes], [Next], [Next]
  • Kies ‘No Firewall’ voor interne (LAN) installatie’s [enter]
  • Kies [proceed]
  • Druk op [enter] om alleen Engels als systeem-taal te installeren
  • Kies je locatie en druk op [Next]
  • Voer twee maal het gewenste ‘root’ wachtwoord in, en druk op [next]

Je gaat nu bepalen wat er geinstalleerd gaat worden op de machine.

  • Vink alle opties uit en selecteer alleen de optie ‘minimal’… Hiermee heb je de installatie teruggebracht van 2475MB naar 679MB !!
  • Klik op [Next] om het installeren te laten beginnen.
  • Hierna is de installatie voltooid. Haal de installatie-cd uit de pc en druk op [reboot].

CentOS is na het booten klaar voor gebruik!

2 Oracle


2.1 Oracle downloaden

oracle-xe-10.2.0.1-0.1.i386.rpm (http://download.oracle.com/otn/linux/oracle10g/xe/oracle-xe-10.2.0.1-0.1.i386.rpm)


2.2 Oracle installeren

# rpm -i oracle-xe-10.2.0.1-0.1.i386.rpm

Daarbij kreeg ik de volgende melding:

error: Failed dependencies:
       libaio >= 0.3.96 is needed by oracle-xe-10.2.0.1-0.1.i386
   Suggested resolutions:
       libaio-0.3.103-3.i386.rpm

Dit wordt opgelost door dit commando:

# yum install libaio

Daarna kan je de installatie hervatten:

# rpm -i oracle-xe-10.2.0.1-0.1.i386.rpm
You must run '/etc/init.d/oracle-xe configure' as root user to configure the database.

Nu werkt het wel!


2.3 Oracle configureren

# /etc/init.d/oracle-xe configure

Druk nu op [enter], [enter], vul twee keer je password in (let op, die heb je later nog nodig) en kies vervolgens [y] om Oracle-XE bij het booten te laten starten.

Als alles goed gegaan is krijg je onder andere deze melding:

Starting Oracle Net Listener.
Starting Oracle Database 10g Express Edition Instance.

Nice going… Tijd om Apache en PHP erop te knallen!


3 Apache


3.1 Apache downloaden en uitpakken

# wget http://apache.nedmirror.nl/httpd/apache_1.3.34.tar.gz
# tar xvzf apache_1.3.34.tar.gz
# cd apache_1.3.34


3.2 Apache compileren en installeren

# ./configure --prefix=/usr/local/apache --enable-module=so

Toen kreeg ik de volgende foutmeling:

Error: could not find any of these C compilers
 anywhere in your PATH:  gcc cc acc c89

Het volgende commando deed wonderen:

# yum install gcc

Daarna nogmaals de ‘configure’ actie:

# ./configure --prefix=/usr/local/apache --enable-module=so

Yessss, nu is het wel gelukt… Het compileren kan gaan beginnen!

# make
# make install

Er wordt een hoop output gegenereerd, aan het eind zou een dergelijke melding moeten komen:

You now have successfully built and installed the  Apache 1.3 HTTP server.

Dit gaan we natuurlijk even testen:

# /usr/local/apache/bin/apachectl start
/usr/local/apache/bin/apachectl start: httpd started

Mooi, hij zegt dat hij gestart is! Ga met je browser naar het ip van je machine om het zeker te weten!

We stoppen de webserver nog even, totdat PHP er bij in zit.

# /usr/local/apache/bin/apachectl stop

Nu even netjes de source opruimen…

# cd ..
# rm -rf apache_1.3.34*

En we kunnen verder met PHP!


4 PHP


4.1 PHP downloaden en uitpakken

Download de PHP source

# wget http://nl3.php.net/distributions/php-4.4.1.tar.gz

# tar xvzf php-4.4.1.tar.gz
# cd php-4.4.1


4.2 PHP compileren en installeren

Om de Oracle client goed in PHP te kunnen compileren moet je aan het configure-script opgeven waar je ‘ORACLE_HOME’ is, m.a.w. waar Oracle geinstalleerd is.

Om dit te testen kan je het volgende commando uitvoeren:

# set | grep ORA

Als je nu geen output krijg is deze variabele niet gezet. Voer het volgende commando uit:

# source /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

En testen of het nu wel goed gaat:

# set | grep ORA
 ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
 ORACLE_SID=XE

Yep! Mooi, verder met het configureren!

# ./configure --with-oci8=$ORACLE_HOME --with-apxs=/usr/local/apache/bin/apxs --enable-sigchild

Kijk, daar komt weer een error… But it ain’t a thing that we can’t fix… De error die je krijgt is uiteindelijk:

lex: command not found

Dit commando lost dat op:

# yum install flex

Goed, flex geinstalleerd, nogmaals de ‘configure’ uitvoeren:

# ./configure --with-oci8=$ORACLE_HOME --with-apxs=/usr/local/apache/bin/apxs --enable-sigchild

Eerst een hoop text in beeld, en dan uiteindelijk:

Thank you for using PHP.

Graag gedaan… Compileren die hap:

# make
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).

Mooi, installeren maar:

# make install

PHP is nu geinstalleerd. Nu moeten we er alleen nog voor zorgen dat Apache met PHP gaat werken. Eerst even de ‘php.ini’ op de juiste plek droppen:

# cp php.ini-dist /usr/local/lib/php.ini

Nu gaan we de httpd.conf van Apache wijzigen zodat de php module geladen wordt:

# nano /usr/local/apache/conf/httpd.conf

Voeg de volgende regels toe (ik heb dit helemaal aan het eind van het bestand gedaan):

LoadModule php4_module        libexec/libphp4.so
<IfModule mod_php4.c>
 AddType application/x-httpd-php .php
 AddType application/x-httpd-php .phtml
 AddType application/x-httpd-php-source .phps
</IfModule>

Sla het bestand op ( Ctrl-X, Y, Enter ).

Nu nog even netjes de source opruimen…

# cd ..
# rm -rf php-4.4.1*


5 Het geheel testen!

We gaan even een scriptje maken dat Apache, php en oracle kan testen.

# nano /usr/local/apache/htdocs/info.php

Voeg de volgende regels toe:

<?php
  phpinfo();
?>

Sla het bestand op (Ctrl-X, Y, Enter) en start de webserver

# /usr/local/apache/bin/apachectl start

Bezoek met je browser de link http://jouw.ip-of-host.name/info.php om te kijken of apache het doet.

Als het goed is gegaan krijg je een paars scherm, waarin de instellingen van PHP worden samengevat.

Nu tot slot even de PHP-Oracle-connectiviteit testen:

# nano /usr/local/apache/htdocs/ora-info.php

Voeg hier de volgende regels aan toe: (i.p.v. PASSWORD vul je uiteraard het wachtwoord in dat je tijdens de configuratie van de Oracle-server hebt opgegeven).

<?php
 $db_conn = ocilogon( "SYSTEM", "PASSWORD" );
 $cmdstr = "select * from dba_users";

 $parsed = ociparse($db_conn, $cmdstr);
 ociexecute($parsed);
 $nrows = ocifetchstatement($parsed, $results);

 echo '<pre>';
 print_r($results);
 echo '</pre>';
?>

Als het allemaal heeft gewerkt krijg je nu bij het bezoeken van http://jouw.ip-of-host.name/ora-info.php een mooie lijst met gegevens vanuit Oracle. Mocht er nu een foutmelding op het scherm komen is het slim om even te kijken of je wel het goede wachtwoord hebt opgegeven. Het wachtwoord van Oracle users is case-sensitive!


6 Resources

Deze HOWTO had niet bestaan zonder deze site:
http://www.oracle.com/technology/tech/php/htdocs/inst_php_apache_linux.html