Come integrare, in ambiente Debian Linux un server Web con un server SQL

Di Stefano Salvi

L'installazione passo passo di Postgres

Per prima cosa, fatto login come root, lanceremo dselect, scrivendo dselect dopo il prompt #, e premendo il tasto a capo:

Occorre lanciare DSELECT come root

Quindi sceglieremo la selezione pacchetti:

Entriamo nella SELEZIONE PACCHETTI

Ci verrà mostrata la schermata di aiuto, dalla quale usciremo premendo la barra spaziatrice:

Usciremo dalla SCHERMATA DI HELP con la barra spaziatrice

Raggiungeremo così l'elenco dei pacchetti. Utilizzando la barra (/) entreremo nella ricerca. Cercheremo postgres ed avvieremo la ricerca premendo il tasto a capo:

ricerco POSTGRES con / e poi con A CAPO

Il primo pacchetto che verrà trovato non è quello che ci interessa. Passeremo al successivo utilizzando la barra rovesciata (\):

Il primo trovato non va' bene; contonueremo con \

Continueremo la ricerca utilizzando la barra rovesciata (\) fino a che non troveremo postgresql-doc, che selewioneremo con il tasto ins:

Selezioneremo POSTGRESQL-DOC con il tasto INS

Il pacchetto php4 richiede dei pacchetti aggiuntivi, per essere instllato. Ci viene quindi presentata la relativa schermata di aiuto, dalla quale usciremo premendo la barra spaziatrice:

SCHERMATA DI AIUTO della risoluzione delle dipendenze

Il sistema ci suggerisce che è anche utile installare i pacchetto doc-linux-html, pgdocs-pdf-a4, pgdocs-pdf, e doc-linux-text, quest'ultimo già installato. Spostandoci con le frecce sulla riga di doc-linux-html ci verà appunto detto ceh il pacchetto è suggerito, e lo selezioneremo con il tasto ins, quindi con il tasto a capo passeremo alla fase successiva:

selezioneremo con INS anche il pacchetto suggerito APACHE

Dobbiamo anche selezionare il pacchetto postgresql. Lo cercheremo co il tasto \ e lo selezioneremo con ins:

cerchiamo con / POSTGRESQL

Il pacchetto postgresql richiede dei pacchetti aggiuntivi, per essere instllato. Ci viene quindi presentata la relativa schermata di aiuto, dalla quale usciremo premendo la barra spaziatrice:

SCHERMATA DI AIUTO della risoluzione delle dipendenze

Il sistema ci presenta una lista di pacchetti necessari (già slelzionati) e di pacchetti suggeriti. Dovremo selezionare libpgjava e tomcat4-webapps. Ci sposteremo quindi su questa voce con le frecce e le selezioneremo con il tasto ins:

selezioneremo con INS anche il pacchetto suggerito APACHE

Torneremo così all'elenco dei pacchetti. Utilizzando la barra (/) entreremo nella ricerca. Cercheremo php4-pg ed avvieremo la ricerca premendo il tasto a capo:

ricerco POSTGRES con / e poi con A CAPO

Raggiungiamo quindi il pacchetto php4-pgsql, che selezioneremo con il tasto ins. Passeremo quindi alla fase successiva con il tasto a capo:

Selezioneremo PHP4-PGSQL con il tasto INS

Siamo di nuovo nel menù principale di dselect, ma la voce selezionata è quella del'installazione. La avvieremo con il tasto a capo:

con A CAPO avvieremo l'INSTALLAZIONE

Il sistema ci indica quanto dovrà essere recuperato dai CD (o dalla rete, se stiamo effettuando un'installazione di rete) e ci chiede se vogliamo procedere. Inseriremo il CD e premeremo il tasto a capo per proseguire:

con A CAPO accetteremo di installare

Il sistema ci chiede quindi di inserire il quarto CD della distribuzione. Con il tasto a capo avviseremo che è inserito e che il sistema lo piò leggere:

vengono richiesti i CD della distribuzione. Li inseriremo nel lettore e procederemo con A CAPO

Allo stesso modo ci verranno chiesti anche il CD 1 ed il 2, che noi inseiremo nel lettore e faremo leggere premendo il tasto a capo. Alla fine ci verrà chiesto se vogliamo aggiugere una riga che richiami il modulo Postgres alla configurazione di PHP. Con il tasto a capo accetteremo la risposta Y (yes) proseguiremo:

accettiamo con A CAPO di aggiungere il modulo per Postgres a PHP

Ci viene poi chiesta la codifica di default per il testo in Postgres. Con il tasto a capo accetteremo la risposta NSQL_ASCII proseguiremo:

accettiamo con A CAPO di aggiungere il modulo per Postgres a PHP

Alla fine ci verrà chiesto se vogliamo cancellare i file temporanei eventualmente scaricati se si usa la rete come sorgente. Con il tasto a capo accetteremo la risposta Y (Si) termineremo l'installazione:

accettiamo con A CAPO di cancellare i file temporanei eventualmente scaricati sul computer

Ci viene chiesto ancora di premere il tasto a capo per proseuire:

ci viene chiesto un ltro A CAPo per proseguire

Premendo il tasto q ed il tasto a capo terminiamo l'installazione:

terminiamo premendo Q e A CAPO

Ora il software necessario è installato. Non ci resta che collaudarlo. Per fare questo dovremo creare un utente del database per il web server, che usa l'utente www-data. Dovremo quindi entrare nell'utente Postgres e, con il comando createuser creare l'utente www-data:

Creu l'utente WWW-DATA in postgres

Adesso dobbiamo entrare nell'utente www-data, creare il database www-data, entrare nell'interattivo psql, creare una tabella prova con due colonne, una chiamata nome di tipo text ed una chiamata numero di tipo integer. Inseriremo poi un paio di righe nella tabella:

Creo un database, una tabella e la popolo

A questo punto,con il nostro editor preferito, modifichialo il file public_html/index.php, con il contenuto che segue:

<html>
<head>
<title>Pagina di prova PHP4</title>
</head>
<body>
<?php
  $connessione = pg_connect("dbname=www-data");
  $risultato = pg_exec ($connessione, "select * from prova;");

  print "<table align=center>\n";
  print "<tr><th>Nome</th><th>Numero</th></tr>\n";

  for ($i=0; $riga=@pg_fetch_object ($risultato,$i); $i++) {
    print "<tr><td>$riga->nome</td><td>$riga->numero</td></tr>\n";
  }

?>
</body>
</html>

Per attivare le modifiche, dovremo ricaricare il i moduli di apache, con il comando /etc/init.d/apache reload come nella schermata qui sotto:

riavviamo APACHE

Con la configurazione di default, puntando un browser sull'indirizzo IP della macchina/~utente/ (se è in rete) oppure lanciando un browser nella macchina stessa (se è installato X11 ed un browser) e puntandolo all'indirizzo localhost/~utente/, potremo vedere la pagina personale di ogni utente, che è in public_html/index.php nella directory home dell'utente:

Veniamo alla configurazione della driver JDBC per Tomcat. La driver si trova nel file /usr/share/java/postgresql.jar. Per farla vedere a Tomcat, dovremo creare un link alla libreira nella directory /usr/share/tomcat4/lib. Dopo aver fatto login come root, ci sposteremo nella directory destinazione con il comando cd /usr/share/tomcat4/lib e creeremo un soft link alla driver con il comando ln -s /usr/share/java/postgresql-7.2.jar postgresql.jar:

Creo in /USR/SHARE/TOMCAT4/LIB il link a /USR/SHARE/JAVA/POSTGRESQL-7.2.JAR

Occorre poi concedere alle applicazioni WEB i diritti di connettersi al port del JDBC, aggiungendo nel file /usr/share/tomcat4/conf/policy.d/04webapps.policy le righe in verde come segue:

// The permission granted to the scrape taglib
// grant codeBase "file:${catalina.home}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
//      permission java.net.SocketPermission "*.noaa.gov:80", "connect";
// };

// The permission granted to your JDBC driver
Grant codeBase "file:${catalina.home}/lib/postgresql.jar!/-" {
     permission java.net.SocketPermission "127.0.0.1:5432", "connect";
     permission java.net.SocketPermission "127.0.0.1:5432", "resolve";
};

Occorre anche consentire connessioni senza controllare l'utente per Postgres, da Localhost, modificando il file /etc/postgresql/pg_hba.conf, modificando la riga in rosso:

# Put your actual configuration here
# ----------------------------------

# This default configuration allows any local user to connect as himself
# without a password, either through a Unix socket or through TCP/IP; users
# on other machines are denied access.

local        all                                           ident sameuser
host         all         127.0.0.1     255.0.0.0           ident sameuser
host         all         0.0.0.0       0.0.0.0             reject

come indicato nella riga in blu ed aggiungendo quella in verde:

# Put your actual configuration here
# ----------------------------------

# This default configuration allows any local user to connect as himself
# without a password, either through a Unix socket or through TCP/IP; users
# on other machines are denied access.

local        all                                           ident sameuser
## host         all         127.0.0.1     255.0.0.0           ident sameuser
host         all         127.0.0.1     255.255.255.255     trust
host         all         0.0.0.0       0.0.0.0             reject

Potremo poi creare, con il nostor editor preferito, nella directory /var/lib/tomcat4/webapps/examples/jsp/postgres il file vi postgres.jsp con il seguente contenuto:

<html>
<head>
<title>Pagina di Prova JSP/Postgres</title>
</head>
<%@ page language="java" import="java.sql.*" %>
<body>
<%

 Class.forName("org.postgresql.Driver");

 Connection myConn=DriverManager.getConnection("jdbc:postgresql://127.0.0.1/www-data?user=www-data");

%>
  <table align=center>
  <tr><th>Nome</th><th>Numero</th></tr>

<%
   Statement dbst = myConn.createStatement();
   ResultSet rs = dbst.executeQuery("select * from prova;");
   while(rs.next()) {
      String nome = rs.getString("nome");
      int numero = rs.getInt("numero");
%>  <tr><td><%= nome %></td><td><%= numero %></td></tr>
<%
   }
   rs.close();  // Occorre sempre chiudere quando abbiamo finito
 %>


  </table>

</body>
</html>

Raggiungeremo la pagina scritta puntando un browser sull'indirizzo IP della macchina:8180//examples/jsp/postgres/postgres.jsp (se è in rete) oppure lanciando un browser nella macchina stessa (se è installato X11 ed un browser) e puntandolo all'indirizzo localhost//examples/jsp/postgres/postgres.jsp: