Old:Installazione e configurazione di Apache, PHP e Oracle: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
 
(40 versioni intermedie di 8 utenti non mostrate)
Riga 1: Riga 1:
{{stub}}
{{Old}}
Questa piccola guida nasce con l'idea di rendere meno traumatico l'approccio al mondo debian da parte dell'utente principiante e alle prime armi con sistemi basati su GNU/Linux. L'idea di dare la possibilit� all'utente di installare un sistema debian funzionante sul proprio computer e di apprenderne le basi. In sinstesi, la trascrizione dei primi pensieri e delle prime operazioni nel nuovo sistema operativo.
=Introduzione=
In genere si sente spesso parlare di LAMP (Linux, Apache, MySQL e PHP), con riferimento alla famosa e diffusa piattaforma open per lo sviluppo di applicazioni web based (per informazioni complete e dettagliate sull'impostazione di un sistema LAMP vi invito a leggere la guida, presente su questo sito, [[LAMP: Linux, Apache, MySQL e PHP]]). In questa guida, invece, vorrei proporvi una variante di tale piattaforma in cui il DBMS MySQL viene sostituito da Oracle Server 10g Express Edition, una versione free del più blasonato DBMS commerciale, disponibile anche per il pinguino, seppur con alcune limitazioni di cui parlerò in seguito.
In questa guida si focalizzerà l'attenzione sull'installazione e la configurazione di [http://httpd.apache.org/ Apache], [http://www.php.net/ PHP] ed [http://www.oracle.com/technology/software/products/database/xe/index.html Oracle Database Server 10g XE] e sulle modalità di interazione tra questi software, in modo tale da disporre di una piattaforma completa per lo sviluppo di applicazione web-based.
Tutti i passaggi indicati in questa guida sono stati eseguiti su un sistema Debian GNU/Linux 4.0 R3 Netinst.
Buona lettura!


==Luned�: partizioniamo il disco==
=Oracle Database Server 10g XE=
==Marted�: installiamo la Debian==
==Installazione==
==Mercoled�: tastiera, risoluzione schermo e shell==
Sul sito di Oracle Corp., previa procedura di registrazione, sono disponibili i pacchetti per Debian, Ubuntu, Suse Novell, Red Hat/Fedora e Mandriva di Oracle Database Server 10g XE con una serie di limitazioni rispetto alla versione a pagamento:
Oggi accendo finalmente il pc dopo aver installato la mia prima debian. Un po' di scritte... ecco, adesso posso loggarmi... e finalmente ecco il mio bel desktop! Peccato che la mia eccitazione gi� si arresta appena provo a scrivere due cosettine... i caratteri visualizzati non corrispondono ai tasti premuti... mhmm... lo sapevo che non potevo utilizzare la tastiera del mac...
* se Oracle Database Server 10g XE viene installato su un computer con più di una CPU (incluse anche le CPU dual core), esso utilizzerà esclusivamente le risorse di una sola CPU;
===La tastiera===
* su un singolo computer può essere effettuata l’installazione di una sola copia di Oracle Database Server 10g XE; in aggiunta, gli utenti possono far girare una sola istanza del database Oracle su ciascun computer. Quest’ultima limitazione può comunque essere aggirata in quanto, anche sulla stessa installazione di Oracle Database Server 10g XE possono convivere più schemi, ciascuno dei quali contenente le proprie tabelle. Di fatto, è come se sulla stessa macchina fossero presenti più database simultaneamente;
Per "sintonizzare" la tastiera abbiamo due possibilit�: utilizzare le preferenze di GNOME o modificare il file /etc/X11/xorg.conf
* la quantità massima di dati contenuta in un database Oracle Database Server 10g XE non può superare i 4 gigabytes di spazio disco, tuttavia se i dati degli utenti dovessero superare tale quota, il sistema invierebbe l’errore ORA-12592;
====Preferenze GNOME====
* la quantità massima di memoria RAM che Oracle Database Server 10g XE utilizza non può eccedere un gigabyte, anche se ne è disponibile una quantità maggiore. La quantità di memoria totale utilizzata dal server Oracle viene ricavata come somma della System Global Area (SGA) e della Program Global Area (PGA) aggregata;
Dal menu nella barra superiore scegliere: sistema > preferenze > tastiera. Sotto "Layouts" scegliere il modello (ad es. per mac, macintosh) e la lingua predefinita. Sempre nel caso Apple, per configurare il tasto "Alt-Gr" si pu� andare sotto "Layout Options" > "Third level choosers" e scegliere Left win-key o Right win-key per avere il tasto "mela" di sinistra o destra come un "Alt-Gr".
* il protocollo HTTPS (Secure HTTP) non è supportato nativamente dal listener HTTP presente in Oracle 10g XE, quindi è necessario far uso di un web server, come Apache, che supporti tale protocollo.
====/etc/X11/xorg.conf====
In questo file troviamo la configurazione del sistema grafico. La tastiera la troviamo sotto Identifier "Generic Keyboard" o qualcosa del genere. A destra di Option "XkbModel" avremo il modello, ad esempio "macintosh", con Option "XkbLayout" avremo la lingua, ad esempio "it". Se si volesse ancora una volta abilitare un tasto "mela" con la funzione di "Alt-Gr", bisogner� aggiungere l'opzione Option "XkbOptions" "lv3:lwin_switch" per la "mela" di sinistra o "lv3:rwin_switch" per quella di destra.<br /><br />
A questo punto una domanda � per� lecita: come si modifica il file /etc/X11/xorg.conf? Dalla shell... vediamo quasi subito...
===La risoluzione dello schermo===
In questo caso si pu� scegliere da sistema > preferenze > risoluzione monitor un valore. Se non dovrebbe esserci quello che cerchiamo bisogner� ancora una volta modificare il file /etc/X11/xorg.conf. Questa volta cercheremo la parte con Identifier "Default screen". Nelle susseguenti Subsection "Display" andremo sotto Modes ad inserire la risoluzione cercata.
===La shell===
Giusto per chiarire i termini, la shell � la linea di comando (= terminale). In debian si chiama bash. � uno strumento molto potente e alla base di tutte le impostazioni del sistema operativo. Come citato sopra, utilizzeremo la shell per avere i diritti di superuser per poter modificare il file /etc/X11/xorg.conf. Per prima cosa controlliamo se abbiamo installato sudo (superuser do; questo comando ci permette di fare delle azioni come superuser, senza per� doverci "loggare" in quanto tale):<br />
<pre>~$ su (invio), dare la password, ~# apt-get install sudo</pre>
Se � gi� installato il sistema ci avviser�, altrimenti si potr� installare il programma (maggiori dettagli sull'installazione dei programmi si trovano nell'ultima giornata). Per fare il logout da superuser semplicemente scrivere "exit" ed invio. Poi dobbiamo dare al nostro utente i diritti di superuser. Per fare ci� dovremo loggarci dapprima come superuser e poi modificare il file /etc/sudoers tramite visudo:<br />
<pre>~$ su (invio), dare la password, ~# visudo</pre>
A questo punto otterremo una mini interfaccia grafica; fra le righe troveremo la seguente linea:<br />
<pre>root      ALL=(ALL) ALL ; dove sotto aggiugeremo (spostando il cursore con le frecce)
<nostronomeutente>  ALL=(ALL) ALL</pre>
Per concludere, ctrl+O per salvare ed infine ctrl+X per uscire.
Quando vorremo ora eseguire un'azione con diritti da superuser (amministratore) baster� digitare "sudo" e poi l'azione voluta.<br />
Torniamo ora alla modifica del nostro xorg.conf. Il modo pi� semplice � di modificarlo con gedit (gnome). Daremo il comando:<br />
<pre>~$ sudo gedit /etc/X11/xorg.conf</pre>
Avremo cos� aperto il file con un editor grafico, gedit appunto, e grazie a sudo avremo i diritti di scrittura per modificarlo. Nel capitolo relativo ai permessi vedremo altri comandi base della shell ed un chiarimento sui permessi di scrittura di un file.


==Gioved�: allacciamoci alla rete==
Limitazioni a parte, Oracle Database Server 10g XE resta, a mio avviso, un buon prodotto utilizzato con successo, ad esempio, da varie università sul territorio italiano.
Con il cavo dell'ethernet conficcato nella scheda ho potuto per fortuna installare sudo... ora per� vorrei capire meglio come funziona la rete e come potrei configurarla. E se volessi anche un Wireless? Gi� non ci capisco pi� niente...
Una volta effettuato il download del pacchetto, l'installazione di Oracle Database Server 10g XE si riduce al seguente comando:
===Configurare la rete tramite il file /etc/network/interfaces===
====Rete ethernet cablata====
Per configurare una rete esistono varie applicazioni grafiche (come network-manager), ma il consiglio � quello di configurarla con il file sopracitato (che verr� "caricato" durante l'accensione del pc); una volta capito il sistema non avrete cos� mai un problema. Come prima cosa, onde evitare spiacevoli interazioni con il sistema grafico, andremo a disinstallare il network-manager:<br />
<pre>~$ sudo apt-get remove network-manager network-manager-gnome</pre>
Avendo fatto l'installazione tramite la net-install e la rete diamo per scontato che la scheda ethernet funziona. Per vedere le schede di rete del nostro sistema diamo il comando:
<pre>~$ sudo ifconfig -a</pre>
Otterremo una lista con a sinistra i nome delle interfacce e a destra la loro configurazione (con ifconfig senza "-a" vedremo solo le schede attive). La scheda ethernet dovrebbe avere un nome tipo "eth0" (o "eth1", ...). La scheda con il nome di "lo" al momento la lasceremo perdere, non ci servir�. Per configurare ora la scheda andiamo a editare il file /etc/network/interfaces (alias lo apriamo con gedit in modalit� amministratore, cos� da poterlo modificare; volutamente non vi scrivo come fare, ma � la stessa cosa di come abbiamo fatto con /etc/X11/xorg.conf, vero?). Otterremo qualcosa del genere:<br />
<pre># This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).


# The loopback network interface
<pre>
auto lo
# dpkg –i oracle-xe-10.2.0.1-1.0.deb
iface lo inet loopback
</pre>


# The primary network interface
L'installazione di Oracle Database Server 10g XE richiede la presenza di alcuni pacchetti che vanno installati a parte, se non presenti con il seguente comando:
auto eth0
 
iface eth0 inet dhcp
<pre>
# apt-get install bc libaio1 libxml2 libxml2-dev libxml2-utils python-libxml2
</pre>
</pre>
La scheda viene "caricata" all'accensione del sistema (auto eth0) e viene utilizzata tramite dhcp (inet dhcp). Per configurare una rete con ip fisso vi lascio a guide pi dettagliate, presenti ovunque e dovunque in rete (a partire da debianizzati).
====Rete Wireless====
Come prima cosa dobbiamo installare un pacchetto per la gestione del wireless:<br />
<pre>~$ sudo apt-get install wireless-tools</pre>
Fatto questo, un requisito fondamentale avere una scheda wireless riconosciuta dal sistema. Per verificare daremo il comando:
<pre>~$ sudo iwconfig</pre>
Come abbiamo visto con ifconfig, avremo sulla sinistra le sigle delle interfacce di rete e sulla destra le loro caratteristiche. La scheda ethernet avr la descrizione "no wireless extensions.", cos come "lo". La nostra scheda wireless non avr dunque questa scritta, ma un elenco di parametri (tipo ESSID, Mode, ...). Il nome pu variare a seconda dei drivers utilizzati (wlan0, ra0, eth1, eth2, ...).<br />
'''NB'''.: se la scheda wireless non viene visualizzata bisogna installare dei drivers (o magari anche solo un firmware). La procedura varia molto a seconda della scheda utilizzata. Il procedimento non verr dunque descritto. Un buon inizio dare il comando "lspci" per visualizzare il chipset della scheda e consultare la rete (alias google, forum, ...) per il procedimento d'installazione.<br />
Per vedere le reti wireless accessibili alla nostra scheda diamo il comando:<br />
<pre>~$ sudo iwlist scan</pre>
Sceglieremo poi la rete alla quale vogliamo collegarci e annoteremo il nome ESSID e il numero di canale (Channel). A questo punto, editiamo ancora una volta il nostro file /etc/network/interfaces e aggiungeremo le seguenti righe (ammettiamo di avere la scheda wireless "wlan0":<br />
<pre>auto wlan0                          (vogliamo "caricare" la scheda all'avvio)
iface wlan0 inet dhcp              (chiediamo un ip tramite dhcp)
wirless-essid <nomerete>            (scegliamo a che rete collegarci)
wireless-channel <numerocanale>    (scegliamo il canale)
wireless-key s: <password rete>    (diamo la password se necessario)</pre>
Questo sistema funziona con una rete aperta o con chiave WEP. Per una rete con WPA si pu configurare "wpasupplicant" (divertitevi con le ricerche: google, forum, ...); il metodo forse per pi semplice quello di editare il nostro file nel modo seguente;<br />
<pre>auto wlan0                              (vogliamo "caricare" la scheda all'avvio)
iface wlan0 inet dhcp                  (chiediamo un ip tramite dhcp)
pre-up ifconfig wlan0 up                (carichiamo "al volo" l'interfaccia)
pre-up iwconfig wlan0 essid <nomerete>  (scegliamo a che rete collegarci)
pre-up iwconfig wlan0 mode Managed      (scegliamo il modo [visibile con lo scanning])
pre-up iwconfig wlan0 channel 1        (scegliamo il canale)
pre-up iwpriv wlan0 set AuthMode=WPAPSK (scegliamo il tipo di WPA)
pre-up iwpriv wlan0 set EncrypType=TKIP (scegliamo il tipo di criptazione)
pre-up iwpriv wlan0 set WPAPSK=xxxxxxxx (diamo la password)</pre>
'''IMPORTANTE''': La password deve venire scritta in modo criptato. Per fare ci possiamo installare in ogni caso il pacchetto "wpasupplicant" e poi criptare la nostra password con:<br />
<pre>~$ sudo apt-get install wpasupplicant    ; dopo aver installato il pacchetto digitiamo:
~$ wpa_passphrase <nomerete> <password></pre>
L'output sar la password criptata. Non ci resta che ricopiarla nel nostro /etc/network/interfaces. Per utilizzare ora la nostra scheda dobbiamo riavviare la rete con:<br />
<pre>~$ sudo /etc/init.d/networking restart</pre>
Onde evitare interazioni potete disabilitare la scheda ethernet, mettendo il segno "#" davanti alle righe che la concernono (auto eth0 e iface eth0 inet dhcp). Come gi detto, per la configurazione di wpasupplicant e tutte le reti pi complesse, spazio ad altre guide ;-) !


==Venerd�: permessi e spostamento files/cartelle==
==Configurazione==
Con il week end alle porte sono oggi invogliato a "fare un giretto" nella mia nuova debian. Provo a spostarmi fra le cartelle, ordinare dei file... ma... alcuni file non me li lascia spostare... Non ho i diritti... Ma se il computer � il mio?! Uffa... e adesso che faccio? Vorrei magari viaggiare anche un po' con la shell, ma con tutti questi comandi assurdi, non ci si capisce niente!
Al termine dell'installazione, bisogna configurare opportunamente Oracle Database Server 10g XE lanciando lo script '''oracle-xe''' con l'opzione “configure”. Tale script si trova nella directory <code>/etc/init.d/</code> e va eseguito sempre con i privilegi di root.
Lo script in questione richiede interattivamente all'utente di fornire una serie di informazioni per eseguire Oracle Database Server 10g XE tra cui:
 
* il numero di porta (per default la 8080) tramite cui è possibile raggiungere l’interfaccia web per la configurazione di Oracle all’url http://127.0.0.1:8080/apex
* il numero di porta (per default la 1521) su cui si mette in attesa il “listener” di Oracle Server, ossia un demone preposto a ricevere e servire le richieste di connessione al server Oracle, appunto. Se si dispone di un firewall potrebbe essere necessario configurarlo in modo tale da lasciare passare il traffico sulla porta 1521 o, diversamente, è possibile indicare allo script di configurazione di Oracle Server 10g XE di mettere il listener in ascolto su una porta differente
* quando far partire l’istanza di Oracle Database Server 10g XE; si può decidere se schedulare la partenza di Oracle al boot del sistema, oppure se eseguirla manualmente di volta in volta (io ho optato per la prima opzione, per comodità, ma è pur sempre possibile realizzare uno script bash per gestire l'avvio e l'arresto di Oracle in modo manuale).
 
==Impostazione delle variabili d’ambiente di Oracle Server 10g XE==
Al termine dell'installazione di Oracle Server 10g XE è necessario settare le variabili d'ambiente indispensabili per il funzionamento di tool come, ad esempio, SQL*Plus, utilizzato per le classiche operazioni di gestione del database come inserimenti, modifiche, cancellazioni, consultazioni di dati e così via.
Per procedere in questo senso, è sufficiente lanciare uno script di configurazione delle variabili d’ambiente di Oracle Database Server 10g XE, disponibile in due distinte versioni dipendentemente dalla shell in uso. I due script si trovano nella directory <code>/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/</code> e sono:
 
* <code>oracle_env.sh</code> (valido anche per le shell Bourne e Korn)
* <code>oracle_env.csh</code> (valido anche per le shell C e tsh)


===comandi base shell===
Lo script oracle_env.sh, si occupa di impostare una serie di variabili d'ambiente tra cui:


A met� settimana abbiamo imparato i primi comandi della shell (sudo e editare un testo con diritti d'amministratore); oggi vedremo dei comandi semplici per muoverci all'interno del sistema.
* ORACLE_HOME: il path dell’installazione di Oracle 10g XE
* ORACLE_SID: il nome del database (XE)
* NLS_LANG: il character set, rilevato in base alle impostazioni in uso sul sistema operativo, che verrà utilizzato per la memorizzazione dei dati nel database
* PATH: il percorso che porta alla directory contenente gli eseguibili di Oracle Server 10g XE
* LD_LIBRARY_PATH: il percorso della directory contenente le librerie principali per Oracle Server 10g XE


<pre>~$ cd [percorso] => per spostarci fra le cartelle.</pre>
{{Warningbox|Va ricordato che riavviando il computer, i settaggi impostati con lo script <code>oracle_env.sh</code> vengono persi, perciò è buona norma inserire la stringa:
Ad es. cd /home/[nostro nome utente] ci porter� nella nostra cartella d'utente (quella che di default � "selezionata" quando apriamo una sessione di shell), cd / ci porter� nella cartella principale del sistema. Con il comando cd .. "retrocediamo" di una cartella. Non hai capito? Prova...<br />


Per "percorrere" le cartelle esiste un metodo molto pratico che ci far� risparmiare tempo ed errori: il tasto "TAB" (quello per fare i rientri, sulla tastiera in alto a sinistra), che completer� automaticamente le parole. Ad es. per editare il file /etc/network/interfaces "tippiamo": sudo ged [tab] /e [tab] net [tab] / in [tab].
<pre>/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh</pre>


<pre>~$ ls => ci mostra il contenuto della cartella attuale.</pre>Con il comando ls -a vedremo anche le cartelle o i file nascosti (preceduti da un punto), con ls -l vediamo dei dati supplementari per ogni elemento della cartella (dettagli in "permessi").
all’interno del file <code>.bash_profile</code>; inoltre, per poter mantenere le stesse impostazioni all’apertura di ogni nuova shell durante la sessione corrente, è conveniente aggiungere l'istruzione precedente anche all’interno del file <code>.bashrc</code>.}}


<pre>~$ mv [file/cartella] [nuova location o nuovo nome file] => sposta o rinomina un file o una cartella.</pre>
Bene, l'installazione e la configurazione di Oracle Database Server 10g XE sono complete! Per assicurarsi che Oracle sia partito correttamente, è possibile lanciare il comando seguente:
� anche possibile eseguire entrambe le operazioni dando un nuovo nome al file/cartella ed una nuova location. Attenzione ai permessi... (vedi sotto).


<pre>~$ rm [file] => rimuove un file. Per rimuovere cartelle, rm -r [cartella].</pre>
<pre>
Attenzione ai permessi... (vedi sotto).
# /etc/init.d/oracle-xe status


<pre>~$ cp [file] [location e nome file] => copia un file. Per copiare cartelle, cp -r [cartella] [location e nome cartella].</pre>
LSNRCTL for Linux: Version 10.2.0.1.0 - Beta on 14-FEB-2007 10:14:01
Come con mv, � possibile rinominare "al volo" (dando un nuovo nome) la copia del file. Attenzione ai permessi... (vedi sotto).<br />
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Beta
Start Date 14-FEB-2007 10:13:44
Uptime 0 days 0 hr. 0 min. 17 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/listener.ora
Listener Log File /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/log/listener.log
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary…
Service “PLSExtProc” has 1 instance(s).
Instance “PLSExtProc”, status UNKNOWN, has 1 handler(s) for this service…
The command completed successfully
</pre>


Per tutti gli altri comandi troverete istruzioni su debianizzati e nella rete. Per capire la sintassi di un comando o visualizzare le opzioni possibili esistono due comandi molto comodi:
Come si può notare dall'output dello script, il listener Oracle ha un'istanza attiva sulla porta 1521, come stabilito in fase di configurazione.


<pre>~$ man [comando] => mostra il funzionamento del comando. Ad es. man cp (premere "q" per uscire).
=Apache e PHP=
~$ [comando] --help => pi� o meno la stessa cosa, forse qualche dettaglio in meno.</pre>
Il secondo passo consiste nell'installazione e configurazione di Apache e PHP con supporto al DBMS Oracle. È possibile installare il web server Apache e il linguaggio di scripting serverside PHP tramite i pacchetti forniti dalla propria distribuzione, oppure ricompilare il tutto da sorgenti. La possibilità di compilare questi due software da sorgenti consente di scegliere autonomamente le opzioni di compilazione più adatte alle proprie necessità (ad esempio, il supporto per Oracle, oppure per MySQL, per LDAP, per la libreria di compressione zlib e così via).


===Permessi===
==Installazione e configurazione di Apache==
I comandi seguenti consentono il download, la scompattazione e la compilazione del web server Apache sulla propria Linux box:


Per avere un'idea, proviamo a dare il comando ls -l nella cartella principale (sapete come "andarci", vero?). Fra tutte le cartelle prendiamo in analisi la home:
<pre>
$ wget -c http://apache.fis.uniroma2.it/httpd/httpd-2.2.3.tar.gz
# tar xzf httpd-2.2.3.tar.gz /usr/local/src/


<pre>drwxr-xr-x  3 root root  4096 2007-12-05 17:41 home</pre>
# cd /usr/local/src/httpd-2.2.3/
# ./configure --prefix=/usr/local/apache2/
# make && make install
</pre>


Da sinistra verso destra otteniamo le segunti informazioni:
il parametro <code>'''--prefix'''</code> passato al comando configure richiede il path in cui verrà installato il web server Apache. Dalla documentazione del web server si legge che il percorso di default da indicare è <code>/usr/local/apache2/</code>.
Le impostazioni del server web Apache risiedono nel file <code>'''httpd.conf'''</code> (che si trova nella directory <code>/usr/local/apache2/conf/</code> nel caso sia stata effettuata l'installazione da sorgenti); tale file può essere modificato, disponendo dei privilegi di root, con un qualsiasi editor di testi.
Le direttive da impostare nel file <code>httpd.conf</code> per ottenere un funzionamento minimale del web server Apache sono:


* d: sta per directory -> l'elemento � una cartella.
* <code>Listen</code>: consente ad Apache di porsi in ascolto su un determinato indirizzo IP e/o porta
* <code>ServerName</code>: il nome del server, o l'indirizzo IP e il numero di porta che il server utilizza per identificare se stesso
* <code>DocumentRoot</code>: la directory contenente le pagine web delle proprie applicazioni. È anche possibile indicare un alias, o un link simbolico per puntare ad altre locazioni del filesystem.


Le prossime lettere si leggono a tre a tre, rispettivamente per proprietario, gruppo, tutti gli altri. Le lettere significano:
Una volta salvate le modifiche apportate al file <code>httpd.conf</code>, si può far partire Apache con il comando:


* r: sta per read -> � possibile leggere l'elemento.
<pre>
* w: sta per write -> � possibile scrivere/manipolare l'elemento.
# /usr/local/apache2/bin/apachectl start
* x: sta per executable -> � possibile far eseguire l'elemento.
</pre>


Nel nostro esempio, la home ha i seguenti attributi:
quindi, puntando il proprio browser web all'indirizzo specificato anche con la direttiva <code>'''ServerName'''</code> precedentemente citata, si dovrebbe poter visualizzare la pagina di benvenuto di Apache.


* proprietario: pu� leggere, scrivere/manipolare e "eseguire" l'elemento.
==Installazione e configurazione di PHP==
* gruppo: pu� leggere e "eseguire" l'elemento, ma non scriverlo/manipolarlo.
PHP è un linguaggio di scripting serverside che consente di integrare il codice HTML al fine di realizzare pagine web dinamiche, ossia il cui contenuto varia in base alle azioni intraprese dagli utenti. Poiché lo scopo di questa guida è quello di realizzare un server web in grado di interagire con una base di dati Oracle, è necessario che PHP disponga del supporto per tale DBMS. Ancora una volta, per poter abilitare esclusivamente le funzionalità richieste di PHP, si è optato per la compilazione dei sorgenti di questo software.
* tutti: possono leggere e "eseguire" l'elemento, ma non scriverlo/manipolarlo.


* 3: sta per il numero degli elementi inclusi. Se � una cartella � il numero dei file in essa, se � un file i valore sar� 1.
<pre>
$ wget -c http://it2.php.net/get/php5.1.6.tar.gz/from/it.php.net/mirror
# tar xzf php-5.1.6.tar.gz /usr/local/src/
# cd /usr/local/src/php5.1.6/


* root: � il nome del proprietario del file o della cartella.  
# ./configure --prefix=/usr/local/php \
* root: (il secondo nome) � il nome del gruppo al quale appartiene l'elemento.
--with-apxs2=/usr/local/apache2/bin/apxs \
* 4096: � la dimensione dell'elemento in bytes. N.B. per una cartella, non si tratta della somma di tutti gli elementi in essa, ma solo dello spazio che occupa la cartella vuota.
--with-config-file-path=/usr/local/apache2/conf \
* 2007-12-05 17:41: data e orario di creazione/modifica.
--with-oci8=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server \
* home: nome dell'elemento.
--enable-sigchild \
--without-mysql


A questo punto capiamo perch� non ci era possibile modificare il file /etc/network/interfaces; questo appartiene a root (-rw-r--r-- 1 root root  719 2007-12-11 10:21 interfaces) e solo root pu� scriverlo. Perci� dobbiamo avere i privilegi da root (ottenuti con sudo, grazie al file /etc/sudoers) per modificarlo. La stessa cosa vale per spostare dei files dei quali non siamo il proprietario. In generale, l'unica cartella del sistema che ci appartiene (come utente) � la cartella /home/[nostro nome utente] con tutto il suo contenuto.
# make && make install
</pre>


====Cambiare permessi/proprietario====
Come si può notare dal codice precedente, il comando <code>'''configure'''</code> è seguito da una serie di opzioni da attivare nella successiva fase di compilazione:


Per cambiare i permessi di un elemento abbiamo il comando chmod. Questo comando ha due sintassi possibili: una con ugo+/-rwx e l'altra con 3 numeri (4,2,1). In questa guida vi indicher� come si utilizza il sistema "numerico", per l'altro metodo, vi ricordate come si "studia" un comando? man...<br />
* <code>--prefix</code>: permette di indicare in quale directory installare PHP;
I numeri rappresentano i permessi:  
* <code>--with-apxs2</code>: indica che si vuole compilare PHP come un moulo condiviso di Apache;
* <code>--with-config-file-path</code>: indica il percorso dei file di configurazione di Apache;
* <code>--with-oci8</code>: abilita il supporto per il DBMS Oracle di cui è necessario indicare il path dell'installazione;
* <code>--enable-sigchild</code>: abilita il gestore dei segnali proprio di PHP;
* <code>--without-mysql</code>: disabilita il supporto al DBMS MySQL, non necessario, visto che si vuole utilizzare Oracle Database Server.


* 4: sta per read -> leggere.
Il parametro <code>'''--with-oci8'''</code> richiede di specificare il percorso, sul filesystem locale, dell'installazione di Oracle Database Server, se tale installazione è stata effettuata sullo stesso server fisico di Apache e PHP. Se, invece, web server e db server risiedono su due macchine distinte, come spesso accade, allora sulla macchina che funge da server web deve essere installato l'[http://www.oracle.com/technology/tech/oci/instantclient/index.html Oracle Instant Client].
* 2: sta per write -> scrivere/manipolare.
I passi da seguire per installare tale software sono molto semplici:
* 1: sta per executable -> eseguibile.


Per dare i permessi ad un elemento non faremo nient'altro che calcolare la somma dei permessi che si vogliono attribuire e darli nell'ordine: proprietario, gruppo, altri. Per dare un esempio, per dare i permessi ad un file uguali alla cartella home (vedi sopra), daremo:
* Scaricare, dal link sopra indicato, i package '''Basic''' e '''SDK'''
* Scompattare i file scaricati in una directory a piacere (ad es. <code>/usr/local/src/</code>)


<pre>~$ chmod 755 [file] ; per una cartella ~$ chmod -R 755 [cartella]</pre>
<pre>
# mkdir /usr/local/src/instantclient
# cd /usr/local/src/instantclient
# unzip instantclient-basic-linux32-10.2.0.1-20050713.zip
# unzip instantclient-sdk-linux32-10.2.0.1-20050713.zip
</pre>
 
* Creare un link simbolico alle librerie <code>libclntsh.so.10.1</code> e <code>libocci.so.10.1</code>
 
<pre>
ln -s libclntsh.so.10.1 libclntsh.so
ln -s libocci.so.10.1 libocci.so
</pre>
 
La scompattazione dei due file precedenti crea una directory, contenente i file dell'Oracle Instant Client. Nel mio caso, tale directory si chiama <code>instantclient_11/</code>, ma il nome potrebbe differire, quindi '''ATTENZIONE'''.
Il comando configure precedentemente lanciato per PHP va quindi modificato indicando, con la direttiva <code>'''--with-oci8'''</code>, il percorso in cui è stato installato l'Oracle Instant Client:
 
<pre>
# ./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/apache2/conf \
--with-oci8=instantclient,/usr/local/src/instantclient/instantclient_11/ \
--enable-sigchild \
--without-mysql
</pre>
 
Per concludere l’installazione di PHP è sufficiente inserire il percorso <code>/usr/local/php/lib/php</code> all’interno del file <code>'''php.ini'''</code>, il quale deve essere successivamente copiato dalla directory dei sorgenti di PHP nella directory <code>/usr/local/lib</code> e in <code>/usr/local/apache2/conf/</code> (se Apache è stato compilato da sorgenti).
Se la compilazione di PHP è andata a buon fine, nel file httpd.conf sarà stata aggiunta in automatico la seguente stringa:
 
<pre>
LoadModule php5_module modules/libphp5.so
</pre>
 
Questa riga indica che Apache ha caricato il modulo per il funzionamento delle pagine web contenenti codice PHP (nella versione 5), tuttavia, per far sì che i browser web interpretino correttamente il codice PHP, è necessario modificare nuovamente il file <code>httpd.conf</code> di configurazione del web server Apache aggiungendo le due righe seguenti all'interno della sezione <code>'''<IfModule mime_module>'''</code>
 
<pre>
<IfModule mime_module>
[...]
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
</IfModule>
</pre>
 
Di default, PHP offre il supporto per il DBMS MySQL, mentre nel caso di questa guida esso è stato sostituito con il supporto ad Oracle. Questo richiede di modificare alcune direttive presenti nel file <code>php.ini</code> per rendere PHP aderente alla sintassi utilizzata da Oracle. In particolare, MySQL ed Oracle considerano il carattere apice(<code>’</code>) come delimitatore di stringhe, o di date. Se si deve memorizzare una stringa all’interno di una tabella e questa stringa contiene una o più occorrenze del carattere apice, entrambi i DBMS ritorneranno un errore a meno di non eseguiate un escape di tale carattere jolly. Questa operazione si rende, ovviamente, necessaria anche per i dati che gli utenti inseriscono, ad esempio, tramite i form di un sito e che poi andranno inseriti all’interno di un database, ma con una importante differenza: MySQL effettua l’escape del carattere apice tramite il carattere backslash (<code>\</code>),  mentre Oracle utilizza un ulteriore apice.
PHP consente l’escape del carattere apice, se presente nei dati passati tramite GET, POST o persino cookie, per mezzo delle seguenti direttive contenute nel <code>php.ini</code>:
 
<pre>
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of ').
magic_quotes_sybase = On
</pre>
 
Impostando <code>magic_quotes_gpc</code> e <code>magic_quotes_sybase</code> a <code>On</code> si ottiene l’escape del carattere apice alla maniera di Oracle, mentre se <code>magic_quotes_sybase</code> viene impostato a <code>Off</code> si ottiene l’escape alla maniera di MySQL.
 
=PEAR=
PHP mette a disposizione delle funzioni che consentono la comunicazione con una base di dati, ma esse dipendono strettamente dal tipo di DBMS con cui le pagine web scritte in PHP devono interagire. Per questo motivo è necessario servirsi del framework [http://pear.php.net/ PEAR] (PHP Extension and Application Repository), ossia un repository di package con cui è possibile estendere le funzionalità del linguaggio PHP. In particolare, il [http://pear.php.net/package/DB package DB], fornisce un’API che si frappone tra PHP e il DBMS sottostante, permettendo di slegare un'applicazione web dal DBMS in uso. Il vantaggio è che se dovesse rendersi necessaria una migrazione del database verso un DBMS diverso da quello attuale non vi sarà l'obbligo di modificare tutte le funzioni che PHP utilizza per interagire con la base di dati, ma solo il protocollo do comunicazione utilizzato (oci8 per Oracle, oppure mysql per MySQL, ecc).
 
{{ Warningbox | Attualmente, il package DB è stato sostituito dal [http://pear.php.net/package/MDB2 package MDB2] che si consiglia di utilizzare.}}
 
==Configurazione di PEAR==
Conclusa la configurazione di PHP, è necessario passare a quella del framework PEAR quindi, aggiungendo i pacchetti necessari per la comunicazione con una base di dati gestita tramite Oracle. Le API messe a disposizione da PEAR potranno poi essere sfruttate nelle proprie pagine PHP per slegarsi dal DBMS in uso.
L'aggiunta di un pacchetto in PEAR si esegue con il comando:
 
<pre>
pear install [nome_pacchetto]
</pre>
 
tramite cui si può installare un package prelevandolo direttamente dai repository di PEAR.
Di seguito vengono indicati i comandi necessari per installare sia il package DB, sia MDB2:
Per il package DB:
 
<pre>
# ./pear install DB
</pre>
 
Per il nuovo package MDB2, invece:
 
<pre>
# ./pear install MDB2
# ./pear install pear/MDB2#oci8
</pre>


Mi sembra inutile aggiungere che per modificare i diritti di un elemento bisogna essere il proprietario o averne i diritti (v. sudo).<br />
{{Box|Nota Bene:|è necessario ricordarsi di includere il file <code>DB.php</code>, oppure <code>MDB2.php</code>, a seconda del pacchetto installato, all'interno delle proprie pagine PHP per poter utilizzare le funzioni messe a disposizione da questo package per l'interazione con una base di dati Oracle.
L'istruzione da utilizzare all'inizio del codice PHP è la seguente:


Per cambiare il proprietario o il gruppo di un elemento abbiamo il comando chown:
<pre>require_once ('MDB2.php');</pre>}}


<pre>~$ chown [nuovo nome proprietario]:[nome nuovo gruppo] ; per una cartella chown -R [nuovo nome proprietario]:[nome nuovo gruppo]</pre>
=Conclusioni=
Bene, a questo punto disponiamo di un web server con Apache e PHP configurati per comunicare con una base di dati Oracle sottostante e il tutto in salsa open source!


==Sabato: repository... ?==
{{Autori
==Domenica: installiamo i programmi==
|Autore = [[Utente:Hydra|Hydra]] 04:10, 15 Mar 2008 (CDT)
}}

Versione attuale delle 10:56, 12 giu 2016

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.


Introduzione

In genere si sente spesso parlare di LAMP (Linux, Apache, MySQL e PHP), con riferimento alla famosa e diffusa piattaforma open per lo sviluppo di applicazioni web based (per informazioni complete e dettagliate sull'impostazione di un sistema LAMP vi invito a leggere la guida, presente su questo sito, LAMP: Linux, Apache, MySQL e PHP). In questa guida, invece, vorrei proporvi una variante di tale piattaforma in cui il DBMS MySQL viene sostituito da Oracle Server 10g Express Edition, una versione free del più blasonato DBMS commerciale, disponibile anche per il pinguino, seppur con alcune limitazioni di cui parlerò in seguito. In questa guida si focalizzerà l'attenzione sull'installazione e la configurazione di Apache, PHP ed Oracle Database Server 10g XE e sulle modalità di interazione tra questi software, in modo tale da disporre di una piattaforma completa per lo sviluppo di applicazione web-based. Tutti i passaggi indicati in questa guida sono stati eseguiti su un sistema Debian GNU/Linux 4.0 R3 Netinst. Buona lettura!

Oracle Database Server 10g XE

Installazione

Sul sito di Oracle Corp., previa procedura di registrazione, sono disponibili i pacchetti per Debian, Ubuntu, Suse Novell, Red Hat/Fedora e Mandriva di Oracle Database Server 10g XE con una serie di limitazioni rispetto alla versione a pagamento:

  • se Oracle Database Server 10g XE viene installato su un computer con più di una CPU (incluse anche le CPU dual core), esso utilizzerà esclusivamente le risorse di una sola CPU;
  • su un singolo computer può essere effettuata l’installazione di una sola copia di Oracle Database Server 10g XE; in aggiunta, gli utenti possono far girare una sola istanza del database Oracle su ciascun computer. Quest’ultima limitazione può comunque essere aggirata in quanto, anche sulla stessa installazione di Oracle Database Server 10g XE possono convivere più schemi, ciascuno dei quali contenente le proprie tabelle. Di fatto, è come se sulla stessa macchina fossero presenti più database simultaneamente;
  • la quantità massima di dati contenuta in un database Oracle Database Server 10g XE non può superare i 4 gigabytes di spazio disco, tuttavia se i dati degli utenti dovessero superare tale quota, il sistema invierebbe l’errore ORA-12592;
  • la quantità massima di memoria RAM che Oracle Database Server 10g XE utilizza non può eccedere un gigabyte, anche se ne è disponibile una quantità maggiore. La quantità di memoria totale utilizzata dal server Oracle viene ricavata come somma della System Global Area (SGA) e della Program Global Area (PGA) aggregata;
  • il protocollo HTTPS (Secure HTTP) non è supportato nativamente dal listener HTTP presente in Oracle 10g XE, quindi è necessario far uso di un web server, come Apache, che supporti tale protocollo.

Limitazioni a parte, Oracle Database Server 10g XE resta, a mio avviso, un buon prodotto utilizzato con successo, ad esempio, da varie università sul territorio italiano. Una volta effettuato il download del pacchetto, l'installazione di Oracle Database Server 10g XE si riduce al seguente comando:

# dpkg –i oracle-xe-10.2.0.1-1.0.deb

L'installazione di Oracle Database Server 10g XE richiede la presenza di alcuni pacchetti che vanno installati a parte, se non presenti con il seguente comando:

# apt-get install bc libaio1 libxml2 libxml2-dev libxml2-utils python-libxml2

Configurazione

Al termine dell'installazione, bisogna configurare opportunamente Oracle Database Server 10g XE lanciando lo script oracle-xe con l'opzione “configure”. Tale script si trova nella directory /etc/init.d/ e va eseguito sempre con i privilegi di root. Lo script in questione richiede interattivamente all'utente di fornire una serie di informazioni per eseguire Oracle Database Server 10g XE tra cui:

  • il numero di porta (per default la 8080) tramite cui è possibile raggiungere l’interfaccia web per la configurazione di Oracle all’url http://127.0.0.1:8080/apex
  • il numero di porta (per default la 1521) su cui si mette in attesa il “listener” di Oracle Server, ossia un demone preposto a ricevere e servire le richieste di connessione al server Oracle, appunto. Se si dispone di un firewall potrebbe essere necessario configurarlo in modo tale da lasciare passare il traffico sulla porta 1521 o, diversamente, è possibile indicare allo script di configurazione di Oracle Server 10g XE di mettere il listener in ascolto su una porta differente
  • quando far partire l’istanza di Oracle Database Server 10g XE; si può decidere se schedulare la partenza di Oracle al boot del sistema, oppure se eseguirla manualmente di volta in volta (io ho optato per la prima opzione, per comodità, ma è pur sempre possibile realizzare uno script bash per gestire l'avvio e l'arresto di Oracle in modo manuale).

Impostazione delle variabili d’ambiente di Oracle Server 10g XE

Al termine dell'installazione di Oracle Server 10g XE è necessario settare le variabili d'ambiente indispensabili per il funzionamento di tool come, ad esempio, SQL*Plus, utilizzato per le classiche operazioni di gestione del database come inserimenti, modifiche, cancellazioni, consultazioni di dati e così via. Per procedere in questo senso, è sufficiente lanciare uno script di configurazione delle variabili d’ambiente di Oracle Database Server 10g XE, disponibile in due distinte versioni dipendentemente dalla shell in uso. I due script si trovano nella directory /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/ e sono:

  • oracle_env.sh (valido anche per le shell Bourne e Korn)
  • oracle_env.csh (valido anche per le shell C e tsh)

Lo script oracle_env.sh, si occupa di impostare una serie di variabili d'ambiente tra cui:

  • ORACLE_HOME: il path dell’installazione di Oracle 10g XE
  • ORACLE_SID: il nome del database (XE)
  • NLS_LANG: il character set, rilevato in base alle impostazioni in uso sul sistema operativo, che verrà utilizzato per la memorizzazione dei dati nel database
  • PATH: il percorso che porta alla directory contenente gli eseguibili di Oracle Server 10g XE
  • LD_LIBRARY_PATH: il percorso della directory contenente le librerie principali per Oracle Server 10g XE
Warning.png ATTENZIONE
Va ricordato che riavviando il computer, i settaggi impostati con lo script oracle_env.sh vengono persi, perciò è buona norma inserire la stringa:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

all’interno del file .bash_profile; inoltre, per poter mantenere le stesse impostazioni all’apertura di ogni nuova shell durante la sessione corrente, è conveniente aggiungere l'istruzione precedente anche all’interno del file .bashrc.


Bene, l'installazione e la configurazione di Oracle Database Server 10g XE sono complete! Per assicurarsi che Oracle sia partito correttamente, è possibile lanciare il comando seguente:

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

LSNRCTL for Linux: Version 10.2.0.1.0 - Beta on 14-FEB-2007 10:14:01
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Beta
Start Date 14-FEB-2007 10:13:44
Uptime 0 days 0 hr. 0 min. 17 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/listener.ora
Listener Log File /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/log/listener.log
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary…
Service “PLSExtProc” has 1 instance(s).
Instance “PLSExtProc”, status UNKNOWN, has 1 handler(s) for this service…
The command completed successfully

Come si può notare dall'output dello script, il listener Oracle ha un'istanza attiva sulla porta 1521, come stabilito in fase di configurazione.

Apache e PHP

Il secondo passo consiste nell'installazione e configurazione di Apache e PHP con supporto al DBMS Oracle. È possibile installare il web server Apache e il linguaggio di scripting serverside PHP tramite i pacchetti forniti dalla propria distribuzione, oppure ricompilare il tutto da sorgenti. La possibilità di compilare questi due software da sorgenti consente di scegliere autonomamente le opzioni di compilazione più adatte alle proprie necessità (ad esempio, il supporto per Oracle, oppure per MySQL, per LDAP, per la libreria di compressione zlib e così via).

Installazione e configurazione di Apache

I comandi seguenti consentono il download, la scompattazione e la compilazione del web server Apache sulla propria Linux box:

$ wget -c http://apache.fis.uniroma2.it/httpd/httpd-2.2.3.tar.gz
# tar xzf httpd-2.2.3.tar.gz /usr/local/src/

# cd /usr/local/src/httpd-2.2.3/
# ./configure --prefix=/usr/local/apache2/
# make && make install

il parametro --prefix passato al comando configure richiede il path in cui verrà installato il web server Apache. Dalla documentazione del web server si legge che il percorso di default da indicare è /usr/local/apache2/. Le impostazioni del server web Apache risiedono nel file httpd.conf (che si trova nella directory /usr/local/apache2/conf/ nel caso sia stata effettuata l'installazione da sorgenti); tale file può essere modificato, disponendo dei privilegi di root, con un qualsiasi editor di testi. Le direttive da impostare nel file httpd.conf per ottenere un funzionamento minimale del web server Apache sono:

  • Listen: consente ad Apache di porsi in ascolto su un determinato indirizzo IP e/o porta
  • ServerName: il nome del server, o l'indirizzo IP e il numero di porta che il server utilizza per identificare se stesso
  • DocumentRoot: la directory contenente le pagine web delle proprie applicazioni. È anche possibile indicare un alias, o un link simbolico per puntare ad altre locazioni del filesystem.

Una volta salvate le modifiche apportate al file httpd.conf, si può far partire Apache con il comando:

# /usr/local/apache2/bin/apachectl start

quindi, puntando il proprio browser web all'indirizzo specificato anche con la direttiva ServerName precedentemente citata, si dovrebbe poter visualizzare la pagina di benvenuto di Apache.

Installazione e configurazione di PHP

PHP è un linguaggio di scripting serverside che consente di integrare il codice HTML al fine di realizzare pagine web dinamiche, ossia il cui contenuto varia in base alle azioni intraprese dagli utenti. Poiché lo scopo di questa guida è quello di realizzare un server web in grado di interagire con una base di dati Oracle, è necessario che PHP disponga del supporto per tale DBMS. Ancora una volta, per poter abilitare esclusivamente le funzionalità richieste di PHP, si è optato per la compilazione dei sorgenti di questo software.

$ wget -c http://it2.php.net/get/php5.1.6.tar.gz/from/it.php.net/mirror
# tar xzf php-5.1.6.tar.gz /usr/local/src/
# cd /usr/local/src/php5.1.6/

# ./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/apache2/conf \
--with-oci8=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server \
--enable-sigchild \
--without-mysql

# make && make install

Come si può notare dal codice precedente, il comando configure è seguito da una serie di opzioni da attivare nella successiva fase di compilazione:

  • --prefix: permette di indicare in quale directory installare PHP;
  • --with-apxs2: indica che si vuole compilare PHP come un moulo condiviso di Apache;
  • --with-config-file-path: indica il percorso dei file di configurazione di Apache;
  • --with-oci8: abilita il supporto per il DBMS Oracle di cui è necessario indicare il path dell'installazione;
  • --enable-sigchild: abilita il gestore dei segnali proprio di PHP;
  • --without-mysql: disabilita il supporto al DBMS MySQL, non necessario, visto che si vuole utilizzare Oracle Database Server.

Il parametro --with-oci8 richiede di specificare il percorso, sul filesystem locale, dell'installazione di Oracle Database Server, se tale installazione è stata effettuata sullo stesso server fisico di Apache e PHP. Se, invece, web server e db server risiedono su due macchine distinte, come spesso accade, allora sulla macchina che funge da server web deve essere installato l'Oracle Instant Client. I passi da seguire per installare tale software sono molto semplici:

  • Scaricare, dal link sopra indicato, i package Basic e SDK
  • Scompattare i file scaricati in una directory a piacere (ad es. /usr/local/src/)
# mkdir /usr/local/src/instantclient
# cd /usr/local/src/instantclient
# unzip instantclient-basic-linux32-10.2.0.1-20050713.zip
# unzip instantclient-sdk-linux32-10.2.0.1-20050713.zip
  • Creare un link simbolico alle librerie libclntsh.so.10.1 e libocci.so.10.1
ln -s libclntsh.so.10.1 libclntsh.so
ln -s libocci.so.10.1 libocci.so

La scompattazione dei due file precedenti crea una directory, contenente i file dell'Oracle Instant Client. Nel mio caso, tale directory si chiama instantclient_11/, ma il nome potrebbe differire, quindi ATTENZIONE. Il comando configure precedentemente lanciato per PHP va quindi modificato indicando, con la direttiva --with-oci8, il percorso in cui è stato installato l'Oracle Instant Client:

# ./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/apache2/conf \
--with-oci8=instantclient,/usr/local/src/instantclient/instantclient_11/ \
--enable-sigchild \
--without-mysql

Per concludere l’installazione di PHP è sufficiente inserire il percorso /usr/local/php/lib/php all’interno del file php.ini, il quale deve essere successivamente copiato dalla directory dei sorgenti di PHP nella directory /usr/local/lib e in /usr/local/apache2/conf/ (se Apache è stato compilato da sorgenti). Se la compilazione di PHP è andata a buon fine, nel file httpd.conf sarà stata aggiunta in automatico la seguente stringa:

LoadModule php5_module modules/libphp5.so

Questa riga indica che Apache ha caricato il modulo per il funzionamento delle pagine web contenenti codice PHP (nella versione 5), tuttavia, per far sì che i browser web interpretino correttamente il codice PHP, è necessario modificare nuovamente il file httpd.conf di configurazione del web server Apache aggiungendo le due righe seguenti all'interno della sezione <IfModule mime_module>

<IfModule mime_module>
[...]
AddType application/x-httpd-php .php .phtml 
AddType application/x-httpd-php-source .phps
</IfModule>

Di default, PHP offre il supporto per il DBMS MySQL, mentre nel caso di questa guida esso è stato sostituito con il supporto ad Oracle. Questo richiede di modificare alcune direttive presenti nel file php.ini per rendere PHP aderente alla sintassi utilizzata da Oracle. In particolare, MySQL ed Oracle considerano il carattere apice() come delimitatore di stringhe, o di date. Se si deve memorizzare una stringa all’interno di una tabella e questa stringa contiene una o più occorrenze del carattere apice, entrambi i DBMS ritorneranno un errore a meno di non eseguiate un escape di tale carattere jolly. Questa operazione si rende, ovviamente, necessaria anche per i dati che gli utenti inseriscono, ad esempio, tramite i form di un sito e che poi andranno inseriti all’interno di un database, ma con una importante differenza: MySQL effettua l’escape del carattere apice tramite il carattere backslash (\), mentre Oracle utilizza un ulteriore apice. PHP consente l’escape del carattere apice, se presente nei dati passati tramite GET, POST o persino cookie, per mezzo delle seguenti direttive contenute nel php.ini:

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of ').
magic_quotes_sybase = On

Impostando magic_quotes_gpc e magic_quotes_sybase a On si ottiene l’escape del carattere apice alla maniera di Oracle, mentre se magic_quotes_sybase viene impostato a Off si ottiene l’escape alla maniera di MySQL.

PEAR

PHP mette a disposizione delle funzioni che consentono la comunicazione con una base di dati, ma esse dipendono strettamente dal tipo di DBMS con cui le pagine web scritte in PHP devono interagire. Per questo motivo è necessario servirsi del framework PEAR (PHP Extension and Application Repository), ossia un repository di package con cui è possibile estendere le funzionalità del linguaggio PHP. In particolare, il package DB, fornisce un’API che si frappone tra PHP e il DBMS sottostante, permettendo di slegare un'applicazione web dal DBMS in uso. Il vantaggio è che se dovesse rendersi necessaria una migrazione del database verso un DBMS diverso da quello attuale non vi sarà l'obbligo di modificare tutte le funzioni che PHP utilizza per interagire con la base di dati, ma solo il protocollo do comunicazione utilizzato (oci8 per Oracle, oppure mysql per MySQL, ecc).

Warning.png ATTENZIONE
Attualmente, il package DB è stato sostituito dal package MDB2 che si consiglia di utilizzare.


Configurazione di PEAR

Conclusa la configurazione di PHP, è necessario passare a quella del framework PEAR quindi, aggiungendo i pacchetti necessari per la comunicazione con una base di dati gestita tramite Oracle. Le API messe a disposizione da PEAR potranno poi essere sfruttate nelle proprie pagine PHP per slegarsi dal DBMS in uso. L'aggiunta di un pacchetto in PEAR si esegue con il comando:

pear install [nome_pacchetto]

tramite cui si può installare un package prelevandolo direttamente dai repository di PEAR. Di seguito vengono indicati i comandi necessari per installare sia il package DB, sia MDB2: Per il package DB:

# ./pear install DB

Per il nuovo package MDB2, invece:

# ./pear install MDB2 
# ./pear install pear/MDB2#oci8 
Info.png Nota Bene:
è necessario ricordarsi di includere il file DB.php, oppure MDB2.php, a seconda del pacchetto installato, all'interno delle proprie pagine PHP per poter utilizzare le funzioni messe a disposizione da questo package per l'interazione con una base di dati Oracle.

L'istruzione da utilizzare all'inizio del codice PHP è la seguente:

require_once ('MDB2.php');


Conclusioni

Bene, a questo punto disponiamo di un web server con Apache e PHP configurati per comunicare con una base di dati Oracle sottostante e il tutto in salsa open source!




Guida scritta da: Hydra 04:10, 15 Mar 2008 (CDT) Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized