Oracle XE, Apache en PHP op CentOS!
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
