LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 0 L inux A pache M ySQL P PHP Piattaforma di sviluppo per sistemi integrati tra Web e Database © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp0.php [01/10/04 12.51.24] LAMP - Linux, Apache, MySQL, PHP lamp1 Piattaforma di sviluppo per sistemi LAMP Web/Database 1 L A M P 1 Componenti 3 2 Tecnologia World Wide Web Dettaglio Architettura client/server HyperText Transfer Protocol HyperText Markup Language Sistema Web/Database Unix - Linux Apache RDBMS MySQL Script Language PHP FORM HTML Sequenza installazioni Bibliografia - Sitografia Installazione Luglio 2001 © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp1.php?backfile=lamp0.php [01/10/04 12.51.36] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 2 Componenti Una piattaforma come strumento per la divulgazione di informazioni ad attivita' scientifiche. Caratteristiche di base LAMP : relative ● ● ● affidabile economica di facile realizzazione Combinazione di 4 componenti quali: Linux Sistema Operativo Apache HTTP Server MySQL Relational DataBase Management System (RDBMS) PHP Script Language Il software della combinazione LAMP e' software di tipo Open Source, vale a dire software che puo' essere utilizzato da chiunque purche' continui a riconoscere esplicitamente il contributo di chi ha scritto il codice sorgente. The Free Software Foundation (FSF - GNU Project) © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp2.php?backfile=lamp1.php [01/10/04 12.51.38] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 3 Tecnologia World Wide Web E' oramai naturale pubblicare documenti ed accedere informazioni usando il Web. Sicuramente l'integrazione di questa tecnologia, con le potenzialita' offerte dei motori per la gestione dei database, rappresenta lo strumento di diffusione dell'informazione piu' potente sia nella comunita' scientifica che nella comunita' dei navigatori della rete Internet. ● ● ● ● ● Ha rivoluzionato il mercato dell'informazione E' indipendente dall'hardware e dal software Con pontenzialita' in continua evoluzione ....... ....... Alla base della tecnologia WWW c'e' : ● ● ● ● Architettura client/server HyperText Transfer Protocol (HTTP) HyperText Markup Language (HTML) Browser © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp3.php?backfile=lamp2.php [01/10/04 12.51.49] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 4 Architettura di tipo Client/Server Architettura utilizzata in ambiente distribuito. Un programma e' composto da due parti distinte e fra loro indipendenti. Client richiede il servizio (interfaccia utente che accetta le richieste, ne verifica la correttezza e compone un messaggio di richiesta al server). Server ● ● ● ● ● ● ● ● ● fornisce il servizio Le due parti interagiscono utilizzando un protocollo (serie di comandi che seguono delle regole sintattiche e temporali ben precise). Il codice della parte del programma server di una applicazione puo' cambiare senza che si debba modificare la parte client. Le due componenti possono essere ottimizzati ciascuno per il suo compito indipendentemente. Il client ed il server possono essere programmi strutturalmente diversi, purche' riconoscano lo stesso protocollo (es. HTTP). Alcuni servizi con architettura client/server : Posta elettronica Database SQL Server Printer server © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp4.php?backfile=lamp3.php [01/10/04 12.51.51] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 5 HyperText Transfer Protocol - HTTP Protocollo utilizzato per lo scambio di risorse tra il client ed il Web server. Vengono applicati meccanismi di casching locale per memorizzare le ultime pagine consultate. ● Riduce al minimo indispensabile gli accessi alla rete. ● La connessione viene chiusa al termine del trasferimento della pagina. ● Transizione: 1. apertura della connessione 2. invio da parte del client della richiesta ❍ metodo ■ GET - recupera l'informazione identificata dall'URL (Gli eventuali parametri passati al server sono visibili nell'URL del browser, a seguire il "?") POST - i parametri passati al server sono passati come appendice della richiesta, dopo gli header e la riga vuota ❍ risorsa 3. risposta da parte del server ■ ❍ intestazione comprendente il modo in cui l'informazione allegata deve essere interpretata dal client 4. chiusura della connessione Esempio di richiesta: Risposta: GET /index.html HTTP/1.0 HTTP/1.0 200 Ok User-Agent: Mozilla/4.6 Date: Mon, 10 May 2001 14:00:00 GMT Accept: image/gif,image/jpeg, */* Server: Apache/1.3.9 Last-Modified:Tue, 8 Apr 2001 09:04:00 GMT Content-Length: 203123 Content-Type: text/html ● ● ● Protocollo HTTP 1.1 Connessioni permanenti: la connessione e' attiva fino a quando non viene esplicitamente chiusa da una delle due parti tramite l'invio di un apposito Connection Header : Connection: close Richieste piu' chiare: Request Header deve essere obbligatoriamente incluso in ogni richiesta, specifica quale e' il server da contattare e su quale porta. Gestione della cache: viene definita la validita' di ogni risorsa utilizzando un nuovo Response header http://www.polarnet.cnr.it/CORSI/LAMP/lamp5.php?backfile=lamp4.php (1 di 2) [01/10/04 12.51.53] LAMP - Linux, Apache, MySQL, PHP ● ● Expires: Thu, 01 May 2001 16:00:00 GMT che fornisce l'indicazione diretta della data oltre la quale, il dato in cache, non sara' piu' affidabile. Il controllo sulle variazioni del dato originale viene affidato a dei Validators. Nuovi comandi:Options - Put - Delete - Trace. Nuovi codici di stato e di warning. © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp5.php?backfile=lamp4.php (2 di 2) [01/10/04 12.51.53] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 6 HyperText Markup Language - HTML Nato al CERN alla fine degli anni ottanta, l' HTML e' un linguaggio definito utilizzando SGML (Standard Generalized Markup Language), standard per la definizione di linguaggi di marcatura. ● ● ● ● ● ● ● Evoluzione dell'HTML : plugin; linguaggi di scripting; supporto a Java; XML (Extensible Markup Language), W3C XML Web site; DHTML (Dynamic HyerText Markup Language); Approccio statico: utilizzato, solitamente, per la creazione di un sito di piccole dimensioni; (il contenuto delle pagine cambia raramente). Approccio dinamico: obbligatorio quando si vuole realizzare un sito che, oltre a gestire pagine di tipo statico, gestisce, ad esempio, pagine il cui contenuto deriva da dati prelevati da un database. Una tecnica consiste nell'integrare il codice HTML con altri linguaggi di scripting utilizzando dei tag speciali. Script = programma, normalmente scritto con un linguaggio interpretato, che puo' risiedere sia sul client che sul server e che, interangendo con essi e/o con altri applicativi, fornisce un servizio. © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp6.php?backfile=lamp5.php [01/10/04 12.51.54] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 7 Sistema Web/Database La tecnologia Web/Database permette agli utenti, da qualunque host della rete essi siano collegati, di accedere ad una quantita' enorme di informazioni organizzate in sistemi di gestione di base di dati. ● ● ● La gestione e/o consultazione dei dati e' indipendente dalla dislocazione fisica nella rete delle informazioni. Il browser (interfaccia grafica user-friendly) diventa lo strumento per interagire con il database. Con controllo di sicurezza, si possono effettuare: ❍ operazioni di amministrazione e gestione del database; ❍ operazioni di aggiornamento, convalida e popolamento. © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp7.php?backfile=lamp6.php [01/10/04 12.51.55] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database Linux 8 Linux - SuSE Apache HTTP Server MySQL RDBMS (Relational DataBase Management System) PHP Script Language © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp8.php?backfile=lamp7.php [01/10/04 12.51.57] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database ● ● ● ● ● ● ● ● 9 UNIX - Storia 1965 - Bell Telephone Laboratories e General Electric Company collaborano al progetto MAC (MIT Project on Mathematics Computation) per sviluppare un nuovo sisistema operativo; fine anni 60 - prima versione di Unix in monoprogrammazione sviluppata presso i Bell Telephone Laboratories; 1971 - prima versione in multiprogrammazione per l'elaboratore PDP-11 (Digital); 1973 - prima versione scritta in linguaggio C; 1974 - viene pubblicato materiale tecnico dagli autori; tra gli anni '70 e '80 vengono prodotti varie versioni commerciali (System III, IV...); contemporanemente, presso l'universita' di Berkeley viene sviluppata una variante di Unix detta BSD (Berkeley Software Distribution); vengono apportati dei miglioramenti tra i quali l'editor VI, la C Shell, programma Sendmail e il supporto per il protocollo TCP/IP; 1985 - nasce la Free Software Foundation (FSF) con lo scopo di creare e diffondere la filosofia del software libero visto come possibilita' data agli utenti di distribuire e modificare il software a seconda delle proprie esigenze e di poter distribuire anche le modifiche apportate (contratto di licenza d'uso GPL - General Public License). Tutte le versioni attuali di Unix derivano dall'esperienza maturata nel corso degli anni dalle versioni base BSD e System V. ● ● ● ● Caratteristiche del sistema operativo: multitasking: permette di eseguire piu' processi simultaneamente; multiuser: piu' utenti possono collegarsi ed utilizzare il sistema allo stesso tempo; di tipo time sharing: il sistema assegna l'unita' centrale di elaborazione per un certo tempo a turno ad ognuno degli utenti che ne fanno richiesta; costituito da due parti: ❍ ❍ la shell : interpreta i comandi dell'utente e ne richiede l'esecuzione al kernel; il kernel (nucleo): si prende carico dellagestione delle risorse a livello operativo piu' basso. http://www.polarnet.cnr.it/CORSI/LAMP/lamp9.php?backfile=lamp8.php (1 di 2) [01/10/04 12.51.58] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 10 Linux ● ● ● ● ● ● ● 1991 - Linus Benedict Torvalds, studente dell'universita' di Helsinky, inizia a sviluppare un kernel che sfrutta le nuove possibilita' offerte dal processore Intel 80386, vale a dire il multitasking. Linus riscrive interamente il kernel, in base alle regole della GNU Free Software Foundation, e nell' ottobre annucia la prima versione ufficiale di Linux 0.02. Linux in breve tempo coinvolge un numero elevato di persone e diviene presto il prodotto simbolo del progetto GNU. La fortuna di Linux e' stata quella di adottare la licenza GNU-GPL che garantisce una libera diffusione del software. Linux e' un sistema operativo UNIX disponibile su diverse piattaforme (x86 Intel, AMD, Cyrix) con capacita' multiutente e multitasking. Linux puo' convivere con altri sistemi operativi quali WindowsXX, Windows NT, Windows 2000 oppure OS/2. LILO, il Boot-manager di Linux, e' una procedura che permette di avviare, in fase di accensione della macchina, il sistema operativo desiderato. Documentazione disponibile on-line nelle sezioni FAQs, HowTo, ManPages e nei vari Newsgroups. Distribuzioni Set di uno o piu' CD con kernel ed applicativi gia' compilati e con un setup di aiuto per l'installazione. ● Slackware, Debian, RedHat, Mandrake, Caldera etc. ● LINUX - Distribuzione SuSE © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp10.php?backfile=lamp9.php [01/10/04 12.51.59] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 11 Apache - HTTP Server Project The Apache Software Foundation http://www.apache.org ● ● ● ● ● ● ● Prodotto Open Source distribuito con il codice sorgente; A patchy server - nato dalle modifiche apportate al server della NCSA (National Center for Supercomputing Application); prima versione rilasciata nel 1995; ad oggi il piu' diffuso Web server non solo per piattaforme Unix; struttura modulare; stabilita' di esecuzione; assistenza fornita dalla stessa comunita' di utilizzatori, gruppi di discussione, mailing lists, etc. presenti nella rete. Lucidi del Corso Apache © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp11.php?backfile=lamp10.php [01/10/04 12.52.01] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 12 RDBMS (Relational Data Base Management System) (1) ● ● Data Base (DB) : collezione di dati logicamente correlati e rappresentati in modo omogeneo, ai quali si puo' accedere da diverse applicazioni; Data Base Management System (DBMS) : sistema di gestione di basi di dati; programma che interfaccia un DB con le applicazioni che lo utilizzano. Caratteristiche di un DBMS: ● ● ● capacita' di gestire grandi quantita' di dati (limiti sono del supporto fisico); dati condivisibili da piu' applicazioni e da piu' utenti; utilizzo di sistemi di protezione ed autorizzazione; ● ● Tipi di DBMS a seconda del modello, vale a dire a seconda della struttura logica con cui sono organizzati i dati: ● ● ● ● gerarchico reticolare relazionale ad oggetti © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp12.php?backfile=lamp11.php [01/10/04 12.52.03] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 13 RDBMS (Relational Data Base Management System) (2) Modello Relazionale ● ● 1970 - E.F.Cood, ricercatore presso l'IBM, introduce il modello di database relazionale descrivendone il modello matematico (basato sulla teoria degli insiemi) e dando le basi per un linguaggio di creazione ed interrogazione quale SQL (Structured Query Language); IBM/DB2 primo database relazionale. Il modello relazionale rappresenta il database come un insieme di tabelle a 2 dimensioni. ● ● in ogni tabella (o relazione) sono contenuti i dati relativi ad un fenomeno (entita'): le righe ne esprimono le ricorrenze; le colonne rappresentano i campi o proprieta' dei dati. Ogni entita' e' individuata da un insime finito di valori detti attributi. © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp13.php?backfile=lamp12.php [01/10/04 12.52.04] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 13.b RDBMS (Relational Data Base Management System) (3) Linguaggio SQL (Structured Query Language) ● ● Linguaggio di interrogazione e gestione per basi di dati relazionali; origini risalgono agli anni '70; (inizialmente, era stato progettato per essere usato in modo convenzionale da un terminale interattivo; in seguito, fu completato aggiungendo la possibilità di essere richiamato dall'interno di programmi scritti in linguaggi ad alto livello così da consentire lo sviluppo di vere e proprie applicazioni orientate alle specifiche esigenze degli utenti.) ● linguaggio di tipo non procedurale, consente di operare sui dati tramite frasi con parole chiave prese dal linguaggio corrente. Ogni sistema RDBMS fa uso di un proprio dialetto, nonostante sia definito uno standard ANSI (American National Standard Institute) e ISO (International Standards Organization). Istruzioni di base del linguaggio ● ● ● Data 1. 2. 3. 4. Data 1. 2. 3. Data 1. 2. Manipulation Language (DML) SELECT (estrae le informazioni dal database) INSERT (aggiunge nuovi dati in una tabella o vista) UPDATE (modifica i valori esistenti in una tabella o DELETE (cancella da una tabella o vista) Definition Language (DDL) CREATE (crea tabelle, indici, viste nel database) ALTER (modifica la definizione di una tabella) DROP (cancella tabelle, indici, viste dal database) Control Language (DCL) GRANT (attiva privilegi su tabelle o viste) REVOKE (revoca privilegi su tabelle o viste) vista) © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp1313.php?backfile=lamp13.php [01/10/04 12.52.05] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 14 MySQL MySQL AB Laboratory http://www.mysql.com Relational DataBase Management System (RDBMS). Software di tipo Open Source distribuito con il codice sorgente con licenza GPL. ● ● ● ● ● ● Caratteristiche: prestazioni di alto livello; intregrazione con librerie standard; supporto di intefacce driver ODBC, driver PHP; librerie per C e C++; tools integrati per l'amministrazione; ricca manualistica. Lucidi del Corso Mysql © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp14.php?backfile=lamp13.php [01/10/04 12.52.07] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 15 PHP - Hypertext Preprocessor Caratteristiche ● ● ● ● Linguaggio di scripting open-source, HTML-embedded che consente di generare contenuti dinamici ed interfacciarsi ai piu' comuni database in maniera rapida ed efficace. Linguaggio di scripting dal lato server, i cui comandi vengono inseriti nella sintassi HTML. E' utilizzabile su piu' piattaforme. Le istruzioni in codice PHP vengono lette ed interpretate dal Web server (es. APACHE). Puo' esser configurato per essere eseguito come : 1. modulo del Web server (disponibile per il Web Server APACHE su sistemi UNIX) 2. script CGI separato (eseguibile su tutti i Web server in ambiente Unix e Windows9X/Me/NT/2000) Lucidi del Corso PHP © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp15.php?backfile=lamp14.php [01/10/04 12.52.09] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 16 Script Language (1) Programma, scritto normalmente per un interprete, che puo' risiedere sia sul client che sul server e che, interagendo con essi o con altri applicativi, fornisce un servizio. Operazioni possibili ● ● ● ● ● validazione di form : e' possibile controllare i dati inseriti in una o piu' form contenute nelle pagine web ed inviarli al server in modo corretto; risoluzione di problemi di compatibilita' : si puo' verificare quale browser l'utente utilizza e generare il codice HTML opportuno; generazione dinamica di pagine : e' possibile generare pagine on the fly in modo da gestire in maniera efficiente ogni modifica del sito; accesso a database : si puo' accedere ad informazioni, contenute in database, estratte con query anche molto complesse; controlli di sicurezza : e' possibile fornire, solo ad alcuni utenti, l'accesso a determinate risorse. © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp16.php?backfile=lamp15.php [01/10/04 12.52.13] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 17 Script Language (2) Script che risiede sul Client ● Lato Client : lo script e' contenuto all'interno del codice HTML con un specifico tag < script > .... < /script > ❍ ❍ ❍ ❍ L' esecuzione e' affidata ad un interprete integrato nel browser (es. Javascript). Lo script deve compiere azioni non troppo complesse che possono essere compiute dalla macchina client. Evitare quando si interagisce con un database essendo i dati contenuti all'interno del server. Il codice e' visibile all'interno della pagina. © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp17.php?backfile=lamp16.php [01/10/04 12.52.15] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 18 Script Language (3) Script che risiede sul Server ● Lato Server: e' utilizzato nel caso di un sostanzioso scambio di informazioni tra il client ed il server. Modalita' per realizzare pagine dinamiche (on- the-fly). Al client arriva solo la pagina contenente il risultato finale dell'elaborazione. Si applica usando : ❍ ❍ Script CGI - Common Gateway Interface. Specifiche introdotte, dopo la nascita del WWW, per fornire un insieme di regole secondo le quali i programmi sul server inviano informazioni, attraverso il server web, al client. Le specifiche CGI furono accompagnate anche da cambiamenti nell'HTML e nell'HTTP, per introdurre la capacita' di produrre delle maschere (FORM). Web Server Extension: un'estensione del Web server che abilita l'inserimento del codice all'interno delle pagine HTML). Sequenza di funzionamento ■ ■ ■ ■ Il Web server, prima di inviare al client la pagina HTML richiesta mediante una GET, esegue un parsing del documento; vengono indivuate istruzioni diverse dall'HTML; viene invocato l'opportuno interprete; vengono restituiti al browser, via standard input, i dati provenienti dall'esecuzione. © (2000 - 2004) Daniela Beatrici - CNR/IIA POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp18.php?backfile=lamp17.php [01/10/04 12.52.16] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 19 Script Language (4) Attivazione ● ● URL nel campo location del browser o con l'attributo <a href="....">testo</a> Esempio: <a href="....">prova.php</a> l'attributo action di un FORM HTML , attivazione via submit. La comunicazione, tra il client (browser) ed il server (script eseguito dal web server), avviene secondo due metodi: ❍ metodo GET (i dati vengono assegnati alla variabile d'ambiente QUERY_STRING); ❍ metodo POST (i dati vengono inviati allo script mediante l'uso dello standard input). © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp19.php?backfile=lamp18.php [01/10/04 12.52.18] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database 20 FORM HTML (1) Tramite le FORM l'utente puo' interagire con il Web server (impostando richieste, inviando dati, compilando moduli etc..). Il rapporto utente/pagina-Web diventa bidirezionale e questo e' possibile solo grazie all'intervento di programmi CGI (Common Gateway Interface) oppure di programmi creati con linguaggi di scripting residenti sul Web server. Le FORM sono state introdotte dalla versione HTML 2.0. ● ● La creazione di una FORM consta di due fasi : impostazione dei tag per la creazione della form, dei campi e del bottone di submit creazione dello script sul Web server <FORM> ........... </FORM> Tag che indica l'inzio e la fine della form. All'interno della form sono previsti tre attributi: 1. ACTION identifica l'URL o il percorso relativo al programma o script CGI al quale vengono inviati i dati; 2. METHOD identifica il metodo con il quale vengono inviati i dati della form ■ GET - i dati vengono inviati al Web server attraverso la variabile d'ambiente QUERY_STRING (max 255 caratteri) ■ POST - i dati vengono ricevuti direttamente dallo script senza un preventivo processo di decodifica attraverso lo standard input (no limite) 3. ENCTYPE identifica il metodo di codifica dei dati ● ● ● ELEMENTI DELLA FORM < INPUT> < SELECT> < TEXTAREA> © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp20.php?backfile=lamp19.php [01/10/04 12.52.19] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database < FORM> ........... </FORM> 21 (2) < INPUT> Determina il modo con il quale l'utente immette i dati nella form. ATTRIBUTI type = text|password|checkbox|radio|submit|reset|file|hidden|image|button 1. TEXT - singola linea dove si puo' inserire il testo da immettere 2. PASSWORD - il testo immesso non viene visualizzato 3. CHECKBOX - rettangolo da selezionare o deselezionare (per selezioni multiple) 4. RADIO - pulsante di selezione (singola selezione) 5. SUBMIT - pulsante per invio dati della form al server web 6. RESET - pulsante per ripristinare, ai valori di default, i campi della form 7. FILE - indica il nome di un file che viene inviato al server web 8. HIDDEN - determina un campo invisibile nel quale si possono passare dei dati 9. IMAGE - indica l'immagine da visualizzare come pulsante name = nome Associa ai dati immessi un nome value = "nome" Utilizzato per determinare un valore predefinito; con SUBMIT e RESET visualizza il testo sul bottone size = n Determina la lunghezza del campo maxlength = n Determina la lunghezza massima del campo checked Preselezione per i campi RADIO e CHECKBOX src = url URL dell'immagine da usare nel tipo IMAGE http://www.polarnet.cnr.it/CORSI/LAMP/lamp21.php?backfile=lamp20.php (1 di 2) [01/10/04 12.52.21] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database FORM HTML 22 (3) ....Esempio .... Il codice riportato, si riferisce solo al campo ISSN <FORM ACTION="lista.php" METHOD=POST> <input type=hidden name=kissn value="<?echo"$kissn"?>"> <table border=0 cellpadding=3> < tr> <td align=right>ISSN : <td><INPUT name="kissn" size=9 maxlength=9> ............. ............. ............. </tr><tr><td><INPUT TYPE=submit value=" CERCA "> </tr></table> </FORM> PAGINA WEB Riviste E' possibile effettuare la ricerca selezionando uno dei seguenti campi: http://www.polarnet.cnr.it/CORSI/LAMP/lamp22.php?backfile=lamp21.php (1 di 2) [01/10/04 12.52.22] LAMP - Linux, Apache, MySQL, PHP © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp22.php?backfile=lamp21.php (2 di 2) [01/10/04 12.52.22] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database FORM HTML ....Esempio.... 23 (4) <FORM action="http://somesite.com/prog/adduser" method="post"> <P> First name:<INPUT type="text" name="firstname"><BR> Last name: <INPUT type="text" name="lastname"><BR> email: <INPUT type="text" name="email"><BR> <INPUT type="radio" name="sex" value="Male"> Male<BR> <INPUT type="radio" name="sex" value="Female"> Female<BR> <INPUT type="submit" value="Send"> <INPUT type="reset"> </P> </FORM> This form might be rendered as follows: © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp23.php?backfile=lamp22.php [01/10/04 12.52.24] LAMP - Linux, Apache, MySQL, PHP LAMP Piattaforma FORM HTML di sviluppo per sistemi Web/Database 24 (5) <SELECT> <OPTION>........ </SELECT> Visualizza un menu di scelte per l'utente. Ogni elemento viene preceduto dall'attributo <OPTION> ATTRIBUTI di SELECT name = nome Associa ai dati immessi un nome size = n Indica quante opzioni alla volta vengono visualizzate multiple Indica che si puo' sceglire piu' di una opzione ATTRIBUTI di OPTION value = nome Utilizzato per determinare un valore predefinito selected preselezione voce corrispondente ....Esempio.... <FORM ACTION="prog.php" METHOD=POST> ........... <SELECT NAME=qualifica size=1 align=left> <OPTION>On.<OPTION>On.Prof. <OPTION>Prof.<OPTION>Prof.ssa <OPTION>Rag. </SELECT> ........... <INPUT TYPE=SUBMIT VALUE="SALVA"> <input type=RESET VALUE="RESET"> </FORM> © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp24.php?backfile=lamp23.php [01/10/04 12.52.26] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database FORM HTML 25 (6) <TEXTAREA> .....</TEXTAREA> Permette all'utente di immettere blocchi di testo Attributi name = nome Associa ai dati immessi un nome rows = n numero di righe visibili per il rettagolo da visualizzare cols = n numero di colonne visibili per il rettagolo da visualizzare (rows e cols non indicano un limite reale per la lunghezza dei dati inviati) ....Esempio.... <FORM action="http://somesite.com/prog/text-read" method="POST"> Inserire i dati: <TEXTAREA name="thetext" rows="3" cols="40"> </TEXTAREA> <INPUT type="submit" value="Send"> <INPUT type="reset"> </FORM> © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamp25.php?backfile=lamp24.php [01/10/04 12.52.31] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database Installazioni ● MySQL ❍ ● Step 1 APACHE ❍ ❍ ● Step 1 Step 2 PHP ❍ ❍ Step 1 Step 2 © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/inst.html [01/10/04 12.52.50] MySQL - A Relational Database Management System Sistema di gestione di basi relazionale MySQL dati 5 Steps per l'INSTALLAZIONE in ambiente UNIX ● ● gzip -d mysql-3.22.27.tar.gz (unzip del file compresso) tar -C /usr/local -xvf mysql-3.22.27.tar (installazione : del codice sorgente nella directory mysql-3.22.27) ● ● ● ● ● ● cd mysql-3.22.27 (posizionamento sulla directory di installazione) ./configure --prefix=/usr/local/mysql --with-unix-socketpath=/tmp/mysql.sock (genera i make files adatti al sistema) make (compilazione) make install (installazione) cd /usr/local/mysql/bin (posizionamento sulla directory) ./mysql_install_db (inizializzazione del database - Script per la creazione automatica delle tabelle di gestione quali: user, db, host, tables_priv, columns_priv nel database chimato mysql) ● ./safe_mysqld & (attiva il daemon in background) Lo script safe_mysqld e' uno script di Bourne shell che si puo' modificare per cambiare i valori di default; ogni opzione passata a safe_mysqld viene passata al daemon stesso di MySQL. Lo script lancia in esecuzione mysqld e verifica continuamente che continui a vivere; se MySQL muore per qualsiasi motivo, lo script provvede a far ripartire il daemon. Per questo motivo e' consigliato far partire il daemon utilizzando lo script safe_mysqld. Per far partire MySQL all'avvio di Linux si aggiunge uno script nella directory dove sono memorizzati gli scripts di avvio (solitamente si trovano nella directory /etc o /etc/rc.d; ad esempio per Linux SuSE potrebbe essere /etc/rc.d/rc2.d/S41MySQL). #! /bin/sh # Automatic startup for daemon MySQL PATH=/sbin:/usr/sbin:/usr/bin export PATH /usr/local/mysql/bin/safe_mysqld & EXIT 0 Un comando per provare il motore MySQL potrebbe essere: ● /usr/local/mysql/bin/mysqlshow (lista i databases disponibili) Per tutti i problemi legati alla sicurezza ed alla gestione dei privilegi di accesso si rimanda al capitolo 6. The MySQL access privilege system del MySQL Reference Manual. http://www.polarnet.cnr.it/CORSI/MYSQL/mysql5.php (1 di 2) [01/10/04 12.53.05] APACHE - HTTP Server Project APACHE 4 HTTP Server Project Installazione Nel sito ufficiale www.apache.org, o nei vari download sites sparsi sulla rete, si trova il codice sorgente o il codice binario (precompilato) per le piu' svariate piattaforme Unix e, dalla versione 1.3, anche per ambiente Windows. Il codice sorgente utilizzato e' : apache_1.3.9.tar.gz Steps per l'installazione: ● ● gzip -d apache_1.3.9.tar.gz (unzip del file compresso) tar -C /usr/local -xvf apache_1.3.9.tar (installazione del codice sorgente nella directory apache_1.3.9) ● cd apache_1.3.9 (posizionamento sulla directory di installazione) Configurazione Tutte le informazioni sulla configurazione e compilazione di Apache, si trovano nel file INSTALL. A partire dalla versione 1.3.4 il file di configurazione e' unico e si chiama httpd.conf ed e' contenuto nella directory ServerRoot/conf; (nelle versioni precedenti si dovevano utilizzare tre files: httpd.conf, srm.conf ed access.conf). La configurazione e gestione del servizio HTTP avviene da linea di comando; il file di configurazione puo' essere editato con un normale editor (es: VI) per apportare variazioni alle direttive. © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/APACHE/apache4.php [01/10/04 13.05.56] APACHE - HTTP Server Project APACHE HTTP Server Project 5 Installazione (2) Steps per la compilazione: ● ● ● ● ● ● ● cd apache_1.3.9 (posizionamento sulla directory di installazione) ./configure --prefix=/usr/local/httpd (genera i makefile adatti make (compilazione) make install (installazione) cd /usr/local/httpd/bin (directory in cui viene posizionato il daemon) ./apachectl start (script di avvio del daemon) ./apachectl stop (script di arresto del daemon) al sistema) Verifica del funzionamento Dopo avere attivato il daemon con il comando di linea: /usr/local/apache/httpd -f /usr/local/apache/conf/httpd.conf Si puo' indicare, nella location di un browser: localhost oppure l'indirizzo IP oppure il servername; se tutto e' andato a buon esito, si dovrebbe vedere la pagina riportata qui a fianco. http://www.polarnet.cnr.it/CORSI/APACHE/apache5.php (1 di 2) [01/10/04 13.06.17] APACHE - HTTP Server Project © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/APACHE/apache5.php (2 di 2) [01/10/04 13.06.17] PHP - Hypertext Preprocessor PHP 6 Hypertext Prepocessor Installazione - Configurazione (1) L'utilizzo dell'interprete PHP all'interno del HTTP server, vale a dire Apache, fa si che il file richiesto dal client venga elaborato direttamente all'interno del server senza effettuare chiamate di sistema, riducendo, in questo modo, l'utilizzo di risorse e quindi ottimizzando i tempi di risposta. Il codice sorgente utilizzato e' : php-3.0.12.tar.gz Tutte le informazioni sulla configurazione e compilazione di PHP si trovano nel file INSTALL. Steps per l'installazione: ● ● ● gzip -d php-3.0.12.tar.gzip (unzip del file compresso) tar -C /usr/local -xvf php-3.0.12.tar (installazione del cd php-3.0.12 (posizionamento sulla directory di installazione) codice sorgente nella directory php-3.0.12) Esecuzione dello script di configurazione: ./configure --with-apache=/usr/local/apache_1.3.9 (indica la posizione di Apache) --with-mysql=/usr/local/mysql (abilitazione utilizzo librerie per ● interfacciare il database MySQL) ● ● ● make (compilazione) make install (installazione) cp php.ini-dist /usr/local/lib/php.ini --with-gd=path gd library (utilizzo della libreria grafica GD) (copia il file che contiene le direttive per l'interprete) Alla fine dell'installazione vengono copiati i files necessari per l'inclusione del modulo PHP all'interno del HTTP server Apache. © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/PHP/php6.php [01/10/04 13.06.30] PHP - Hypertext Preprocessor PHP 7 Hypertext Prepocessor Installazione - Configurazione (2) Finita l'installazione di PHP bisogna procedere con la nuova compilazione di Apache generando i nuovi Makefile contenenti i dati relativi all'utilizzo del modulo PHP. Attivare, nel file di configurazione di Apache httpd.conf, uno speciale tipo MIME in modo che tutti i file con estensione .php vengano riconosciuti ed eseguiti come applicazioni: AddType application/x-httpd-php .php Steps per nuova compilazione di Apache: ● ● cd /usr/local/Apache_1.3.9 (posizionamento sulla directory del sorgente di Apache) ./configure --disable-module=include --activatemodule=src/modules/php/libphp.a (esclusione modulo per il Server Side Include) (inclusione modulo PHP) ● ● ● ● ● ● Controllare che nel file config.layout sia inserito prefix=/usr/local/httpd/bin make (compilazione) cd /usr/local/httpd/bin (posizionamento sulla directory che contiene il daemon) cp httpd httpd.old (copia precedente versione del daemon) cp /usr/local/apache_1.3.9/src/httpd . (sostiusci il nuovo daemon - con integrati moduli) ./httpd -f /usr/local/httpd/conf/httpd.conf (attiva nuovo daemon) © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/PHP/php7.php [01/10/04 13.06.44] LAMP - Linux, Apache, MySQL, PHP Piattaforma di sviluppo per sistemi LAMP Web/Database Bibliografia ● ● ● ● ● ● ● ● ● ● Autori vari:"Moduli per lo scripting server side"; Login n.19 Novembre/Dicembre 1999; Autori Vari :" SuSE Linux 6.0 - Installation, Configuration and First Steps"; SuSE GmbH - Norimberga (D) - 11th Edition 1998; Autori Vari :" SuSE Linux 6.4 - Installation, Configuration and First Steps"; SuSE GmbH - Norimberga (D) - 17th Edition 2000; P. Baudino: "Realizzare pagine web dinamiche"; Login n.19 - Infomedia 1999; G. Cina': "Il protocollo HTTP 1.0"; Login n.12 - Infomedia 1998; G. Cina': "Il protocollo HTTP 1.1"; Login n.15 - Infomedia 1999; M. De Paoli, M. Iannucci:"Introduzione allo scripting", " I linguaggi di scripting"; Login n. 11 - Infomedia 1998; M. Firmani: "Il web server Apache" - "Installare e configurare Apache" ; Login n. 17 - Infomedia 1999; A. Guidi: "Conoscere Unix"; McGraw-Hill Libri Italia - 1991; R.J.Yager, G.Reese, T.King :"Mysql & mSQL"; O'Reilly Associates, HOPS Libri - 2000; Sitografia ● ● ● ● ● ● ● ● ● D. Giacomini:"Appunti di informatica libera" - 2000; M. Pratesi: "Introduzione a Linux" - 1999; R.J.Yager, G.Reese, T.King :"Mysql & mSQL"; O'Reilly Associates, HOPS Libri - 2000; PHP Documentation Group:"php Manual"; http://www.php.net; SuSE - The Linux Experts; http://www.suse.de/uk/index.html http://www.suse.de/it/index.html The Free Software Foundation (FSF - GNU Project); http://www.fsf.org/philosophy/categories.html ; The Apache Software Foundation (ASF); http://www.apache.org ; The Linux Group; "Linux Apache MySQL PHP (LAMP) Guide v2" - 2000; The MySQL AB :"http://www.mysql.com/"; © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/biblio.html [01/10/04 13.07.29] LAMP - Linux, Apache, MySQL, PHP LAMP Piattaforma di sviluppo per sistemi Web/Database Installazione Luglio 2001 host: ice.polarnet.cnr.it © (2000 - 2004) Daniela Beatrici - CNR/IIA - POLARNET [email protected] http://www.polarnet.cnr.it/CORSI/LAMP/lamplast.php [01/10/04 13.08.00] la