LAMP: Linux, Apache, MySQL e PHP: differenze tra le versioni

corretta gerarchia titoli
Nessun oggetto della modifica
(corretta gerarchia titoli)
Riga 1: Riga 1:
{{Versioni compatibili|Debian Sarge 3.1<br/>Debian Etch 4.0<br/>Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
{{Versioni compatibili|Debian Sarge 3.1<br/>Debian Etch 4.0<br/>Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
=Introduzione=
== Introduzione ==
LAMP è l'acronimo di Linux Apache Mysql Php e indica l'ambiente libero (e anche gratuito in questo caso) di programmazione di applicazioni Web che è possibile costruire dalla somma delle parti di queste eccezionali applicazioni a sorgente aperto.
LAMP è l'acronimo di Linux Apache Mysql Php e indica l'ambiente libero (e anche gratuito in questo caso) di programmazione di applicazioni Web che è possibile costruire dalla somma delle parti di queste eccezionali applicazioni a sorgente aperto.


Riga 9: Riga 9:
Buona lettura!
Buona lettura!


=Il server http=
== Il server http ==
==Apache==
=== Apache ===
[http://httpd.apache.org/ Apache] è il frutto del lavoro della [http://www.apache.org/ Apache Software Foundation]. Tra le caratteristiche che ne fanno il server HTTP più diffuso evidenziamo che:
[http://httpd.apache.org/ Apache] è il frutto del lavoro della [http://www.apache.org/ Apache Software Foundation]. Tra le caratteristiche che ne fanno il server HTTP più diffuso evidenziamo che:
* è software libero;
* è software libero;
Riga 23: Riga 23:
Il progetto Apache è suddiviso principalmente in due rami distinti (ne esiste un terzo, ma è nella fase di sviluppo alpha al momento): la versione 1.3 (la versione "vecchia" molto robusta e testata) e la versione 2.0 (dal design innovativo rispetto alla precedente).
Il progetto Apache è suddiviso principalmente in due rami distinti (ne esiste un terzo, ma è nella fase di sviluppo alpha al momento): la versione 1.3 (la versione "vecchia" molto robusta e testata) e la versione 2.0 (dal design innovativo rispetto alla precedente).
   
   
===Apache 1.3===
==== Apache 1.3 ====
====Installazione====
===== Installazione =====
L'installazione nuda e cruda di Apache 1.3 in Debian è di una semplicità disarmante. Tutto quello che avremo bisogno di fare consiste nel dare il comando:
L'installazione nuda e cruda di Apache 1.3 in Debian è di una semplicità disarmante. Tutto quello che avremo bisogno di fare consiste nel dare il comando:
<pre># apt-get install apache</pre>
<pre># apt-get install apache</pre>
al termine del download ci viene chiesto se vogliamo abilitare suExec: a meno di utilizzi professionali, possiamo tranquillamente rispondere "No".
al termine del download ci viene chiesto se vogliamo abilitare suExec: a meno di utilizzi professionali, possiamo tranquillamente rispondere "No".
====Verifica====
===== Verifica =====
A questo punto il nostro server web è già attivo, ma possiamo anche verificarlo tramite il comando <code>'''ps'''</code>:
A questo punto il nostro server web è già attivo, ma possiamo anche verificarlo tramite il comando <code>'''ps'''</code>:
<pre>$ ps aux |grep apache
<pre>$ ps aux |grep apache
Riga 46: Riga 46:
Il primo processo (padre) viene lanciato da root e ed il suo unico compito consiste nel genere e controllare i restanti processi (figli). Sono questi ultimi a rispondere alle richieste http ed a fornire le pagine. In questo modo Apache gira con privilegi minimi (quelli dell'utente www-data) ed in caso di una sua eventuale compromissione gli effetti sul sistema sono in qualche misura limitati.
Il primo processo (padre) viene lanciato da root e ed il suo unico compito consiste nel genere e controllare i restanti processi (figli). Sono questi ultimi a rispondere alle richieste http ed a fornire le pagine. In questo modo Apache gira con privilegi minimi (quelli dell'utente www-data) ed in caso di una sua eventuale compromissione gli effetti sul sistema sono in qualche misura limitati.


====Configurazione====
===== Configurazione =====
La configurazione di Apache è un compito estremamente delicato e può richiedere conoscenze anche notevoli in svariati ambiti quali networking, programmazione e amministrazione di sistema. Dato che questa guida si propone fondamentalmente di illustrare i passi necessari ad installare e configurare un sistema per uso non professionale, ci limiteremo agli aspetti macroscopici della configurazione.
La configurazione di Apache è un compito estremamente delicato e può richiedere conoscenze anche notevoli in svariati ambiti quali networking, programmazione e amministrazione di sistema. Dato che questa guida si propone fondamentalmente di illustrare i passi necessari ad installare e configurare un sistema per uso non professionale, ci limiteremo agli aspetti macroscopici della configurazione.


Riga 101: Riga 101:
Ora non ci resta che inserire i nostri file in <code>/var/www</code> o nella nostra <code>public_html</code> per poter cominciare ad usare Apache!
Ora non ci resta che inserire i nostri file in <code>/var/www</code> o nella nostra <code>public_html</code> per poter cominciare ad usare Apache!


====Supporto SSL====
===== Supporto SSL =====
Abilitando il supporto a SSL (Secure Socket Layer) è possibile instaurare un canale di comunicazione crittografato tra il nostro server web ed i browser che richiedono le pagine.
Abilitando il supporto a SSL (Secure Socket Layer) è possibile instaurare un canale di comunicazione crittografato tra il nostro server web ed i browser che richiedono le pagine.


Riga 119: Riga 119:
</pre>
</pre>


===Apache 2.0===
==== Apache 2.0 ====
====Installazione====
===== Installazione =====
L'installazione di Apache2 è perfettamente uguale a quella precedentemente illustrata per Apache:
L'installazione di Apache2 è perfettamente uguale a quella precedentemente illustrata per Apache:
<pre>
<pre>
Riga 128: Riga 128:
Il [[metapacchetto]] ''apache2'' è presente, ma installa '''apache2-mpm-worker''', che risulta non essere compatibile con '''libapache2-mod-php4'''.
Il [[metapacchetto]] ''apache2'' è presente, ma installa '''apache2-mpm-worker''', che risulta non essere compatibile con '''libapache2-mod-php4'''.


======I diversi pacchetti======
======= I diversi pacchetti =======
La pacchettizzazione Debian, però, è leggermente diversa, per poter gestire le nuove caratteristiche introdotte in Apache2: esistono quattro diversi pacchetti di Apache2, ognuno con delle caratteristiche diverse (relativamente alla gestione dei thread e dei child):
La pacchettizzazione Debian, però, è leggermente diversa, per poter gestire le nuove caratteristiche introdotte in Apache2: esistono quattro diversi pacchetti di Apache2, ognuno con delle caratteristiche diverse (relativamente alla gestione dei thread e dei child):
; apache2-mpm-perchild : la soluzione adottata in questo pacchetto fa in modo che vengano avviati un numero definito di processi, i quali possono creare dei thread in base al carico della macchina. Una peculiarità è la possibilità di assegnare dei permessi diversi ad ogni processo, vincolarlo ad un singono ''virtual host'', così da gestire facilmente la redistribuzione delle risorse e/o personalizzare il servizio offerto;
; apache2-mpm-perchild : la soluzione adottata in questo pacchetto fa in modo che vengano avviati un numero definito di processi, i quali possono creare dei thread in base al carico della macchina. Una peculiarità è la possibilità di assegnare dei permessi diversi ad ogni processo, vincolarlo ad un singono ''virtual host'', così da gestire facilmente la redistribuzione delle risorse e/o personalizzare il servizio offerto;
Riga 137: Riga 137:
Quello che a noi interessa è '''apache2-mpm-prefork''', visto che è l'unico ad essere compatibile con le librerie che offrono il supporto per php4.
Quello che a noi interessa è '''apache2-mpm-prefork''', visto che è l'unico ad essere compatibile con le librerie che offrono il supporto per php4.


====Verifica====
===== Verifica =====
Per verificare la corretta installazione di Apache2, è sufficiente aprire un browser ed inserire l'indirizzo http://localhost/.
Per verificare la corretta installazione di Apache2, è sufficiente aprire un browser ed inserire l'indirizzo http://localhost/.
Se Apache è stato installato correttamente, apparirà una schermata simile a questa:
Se Apache è stato installato correttamente, apparirà una schermata simile a questa:
[[Immagine:Apache2_installazione.png|thumb|center|Schermata di benvenuto di Apache2]]
[[Immagine:Apache2_installazione.png|thumb|center|Schermata di benvenuto di Apache2]]


====Configurazione====
===== Configurazione =====
Le regole di configurazione viste precedentemente per Apache valgono anche per Apache2.<br />
Le regole di configurazione viste precedentemente per Apache valgono anche per Apache2.<br />
Sono però presenti delle sostanziali differenze a livello strutturale, per quanto riguarda la struttura della directory <code>'''/etc/apache2'''</code>, che riguardano l'organizzazione dei file e la gestione dei <code>''VirtualHost''</code> e dei ''moduli''.
Sono però presenti delle sostanziali differenze a livello strutturale, per quanto riguarda la struttura della directory <code>'''/etc/apache2'''</code>, che riguardano l'organizzazione dei file e la gestione dei <code>''VirtualHost''</code> e dei ''moduli''.


=====Organizzazione dei file=====
====== Organizzazione dei file ======
Durante il passaggio da Apache ad Apache2, sono state apportate delle modifiche ai file di configurazione, ai loro nomi e all'organizzazione delle directory contenenti le configurazione dei ''VirtualHost' e dei ''moduli'', il tutto per disporre di un sistema di gestione flessibile e facilmente gestibile:
Durante il passaggio da Apache ad Apache2, sono state apportate delle modifiche ai file di configurazione, ai loro nomi e all'organizzazione delle directory contenenti le configurazione dei ''VirtualHost' e dei ''moduli'', il tutto per disporre di un sistema di gestione flessibile e facilmente gestibile:


======File di Configurazione======
======= File di Configurazione =======
Il file di configurazione di Apache2 si chiama <code>'''apache2.conf'''</code>, ed adotta la stessa sintassi del vecchio file di configurazione <code>'''httpd.conf'''</code>, che è ancora presente nella directory <code>'''/etc/apache2'''</code> e viene richiamato all'interno del file di configurazione generale, per motivi di compatibilità consiglio, comunque, di non utilizzarlo, in quanto è un file di transizione, e in futuro potrebbe venir rimosso da apache2.
Il file di configurazione di Apache2 si chiama <code>'''apache2.conf'''</code>, ed adotta la stessa sintassi del vecchio file di configurazione <code>'''httpd.conf'''</code>, che è ancora presente nella directory <code>'''/etc/apache2'''</code> e viene richiamato all'interno del file di configurazione generale, per motivi di compatibilità consiglio, comunque, di non utilizzarlo, in quanto è un file di transizione, e in futuro potrebbe venir rimosso da apache2.


======Moduli======
======= Moduli =======
La gestione dei moduli ha subito una profonda modifica rispetto alla versione 1 di Apache: non è più legata ad un solo file, ma a due directory: <code>'''/etc/apache2/mods-available'''</code> e <code>'''/etc/apache2/mods-enabled'''</code>.
La gestione dei moduli ha subito una profonda modifica rispetto alla versione 1 di Apache: non è più legata ad un solo file, ma a due directory: <code>'''/etc/apache2/mods-available'''</code> e <code>'''/etc/apache2/mods-enabled'''</code>.
; <code>mods-available</code> : contiene i file che permettono il caricamento dei moduli. I file presenti all'interno di questa directory sono divisibili, tramite le loro estensioni, in due categorie: i file con estensione <code>''.load''</code> contengono le istruzioni necessarie al caricamento dei moduli; i file con estensione <code>''.config''</code>, invece, contengono le eventuali opzioni di configurazione da passare al modulo.
; <code>mods-available</code> : contiene i file che permettono il caricamento dei moduli. I file presenti all'interno di questa directory sono divisibili, tramite le loro estensioni, in due categorie: i file con estensione <code>''.load''</code> contengono le istruzioni necessarie al caricamento dei moduli; i file con estensione <code>''.config''</code>, invece, contengono le eventuali opzioni di configurazione da passare al modulo.
Riga 158: Riga 158:
; <code>mods-enables</code> : contiene dei link ai file presenti nella directory <code>'''mods-available'''</code>. All'avvio di Apache verranno caricati i moduli i cui file di configurazione presentano un link in questa directory.
; <code>mods-enables</code> : contiene dei link ai file presenti nella directory <code>'''mods-available'''</code>. All'avvio di Apache verranno caricati i moduli i cui file di configurazione presentano un link in questa directory.


======Siti======
======= Siti =======
In apache2, a differenza di apache1, tutti i siti vengono gestiti tramite ''siti''.
In apache2, a differenza di apache1, tutti i siti vengono gestiti tramite ''siti''.
La struttura utilizzata per la gestione di questi è del tutto simile a quella dei moduli: sono presenti due directory: <code>'''/etc/apache2/sites-available'''</code> e <code>'''/etc/apache2/sites-enabled'''</code> che funzionano esattamente come illustrato precedentemente.
La struttura utilizzata per la gestione di questi è del tutto simile a quella dei moduli: sono presenti due directory: <code>'''/etc/apache2/sites-available'''</code> e <code>'''/etc/apache2/sites-enabled'''</code> che funzionano esattamente come illustrato precedentemente.
Riga 170: Riga 170:
Per rendere effettive le modifiche è necessario riavviare apache2.
Per rendere effettive le modifiche è necessario riavviare apache2.


=====Supporto SSL=====
====== Supporto SSL ======
Per Apache2, a differenza di Apache1, non esiste un pacchetto '''apache-ssl''' per attivare il supporto [[ssl]]. Per attivare il supporto ssl è necessario modificare la configurazione di apache.
Per Apache2, a differenza di Apache1, non esiste un pacchetto '''apache-ssl''' per attivare il supporto [[ssl]]. Per attivare il supporto ssl è necessario modificare la configurazione di apache.


Riga 269: Riga 269:
</pre>
</pre>


=====Far convivere Apache e Apache2=====
====== Far convivere Apache e Apache2 ======
Alcune volte può essere utile far convivere Apache1 e Apache2 sulla stessa macchina (magari durante un periodo di migrazione); a tale proposito, è buona norma modificare il numero della porta su cui uno dei due server è in ascolto.
Alcune volte può essere utile far convivere Apache1 e Apache2 sulla stessa macchina (magari durante un periodo di migrazione); a tale proposito, è buona norma modificare il numero della porta su cui uno dei due server è in ascolto.
Normalmente si ''sposta'' Apache2 dalla porta '''80''' alla '''8080''' (sempre se su questa non è configurato un server proxy).
Normalmente si ''sposta'' Apache2 dalla porta '''80''' alla '''8080''' (sempre se su questa non è configurato un server proxy).
Riga 278: Riga 278:
</pre>
</pre>


=Il processore PHP=
== Il processore PHP ==
PHP è un [[acronimo ricorsivo]] per "PHP: Hypertext Preprocessor" e cioè "PHP: preprocessore ipertestuale". Questo significa che i nostri script non vengono elaborati dai client (in questo caso dai browser) come ad esempio nel caso di javascript, ma che vengono eseguiti direttamente sul server il quale fornisce ai clients semplici pagine html. Un linguiaggio di questo tipo viene chiamato anche '''server-side''' (lato server), in contrapposizione ai linguaggi '''client-side''' (lato client).
PHP è un [[acronimo ricorsivo]] per "PHP: Hypertext Preprocessor" e cioè "PHP: preprocessore ipertestuale". Questo significa che i nostri script non vengono elaborati dai client (in questo caso dai browser) come ad esempio nel caso di javascript, ma che vengono eseguiti direttamente sul server il quale fornisce ai clients semplici pagine html. Un linguiaggio di questo tipo viene chiamato anche '''server-side''' (lato server), in contrapposizione ai linguaggi '''client-side''' (lato client).


Riga 290: Riga 290:
{{box|Nota Bene:|Questo elenco delle funzionalità offerte da PHP è tratto dal manuale online di PHP e precisamente dal capitolo [http://it2.php.net/manual/it/intro-whatcando.php Che cosa può fare PHP?]}}
{{box|Nota Bene:|Questo elenco delle funzionalità offerte da PHP è tratto dal manuale online di PHP e precisamente dal capitolo [http://it2.php.net/manual/it/intro-whatcando.php Che cosa può fare PHP?]}}


==Installazione==
=== Installazione ===
Anche installare PHP non è un compito per nulla complesso.
Anche installare PHP non è un compito per nulla complesso.
{{Box | Installare PHP5 al posto di PHP4 |Per installare la versione 5 di php è sufficiente sostituire il numero '''4''' con '''5''' ogni volta che compare un pacchetto php4* nel seguito della guida}}
{{Box | Installare PHP5 al posto di PHP4 |Per installare la versione 5 di php è sufficiente sostituire il numero '''4''' con '''5''' ogni volta che compare un pacchetto php4* nel seguito della guida}}
===PHP e Apache 1.3===
==== PHP e Apache 1.3 ====
Vediamo subito come procedere a abilitare PHP per il nostro server Apache in maniera minimale:
Vediamo subito come procedere a abilitare PHP per il nostro server Apache in maniera minimale:
<pre># apt-get install libapache-mod-php4</pre>
<pre># apt-get install libapache-mod-php4</pre>
Riga 304: Riga 304:
Ora, anche se a livello minimale, Apache è in grado fornire al nostro browser l'output degli script elaborati dal motore PHP. Non ci resta altro da fare che [[#Test|testarne]] il funzionamento.
Ora, anche se a livello minimale, Apache è in grado fornire al nostro browser l'output degli script elaborati dal motore PHP. Non ci resta altro da fare che [[#Test|testarne]] il funzionamento.


===PHP e Apache 2.0===
==== PHP e Apache 2.0 ====
Per abilitare il Php in Apache2 bisogna installare il modulo apposito:
Per abilitare il Php in Apache2 bisogna installare il modulo apposito:
<pre>
<pre>
Riga 312: Riga 312:
Durante l'installazione verrà aggiornata la configurazione di Apache2 per attivare il supporto a php4, inoltre verrà automaticamente riavviato il server Web.
Durante l'installazione verrà aggiornata la configurazione di Apache2 per attivare il supporto a php4, inoltre verrà automaticamente riavviato il server Web.


==Test==
=== Test ===
Il modo più semplice per testare la nostra installazione di PHP consiste nel preparare uno script e tentare di visualizzarlo nel nostro browser.
Il modo più semplice per testare la nostra installazione di PHP consiste nel preparare uno script e tentare di visualizzarlo nel nostro browser.


Riga 342: Riga 342:
Se tutto è andato bene, puntando il browser all'indiritto http://127.0.0.1/prova.php (nel caso di aver usato la DocumentRoot) oppure http://127.0.0.1/~utente/prova.php vedremo una pagina html che riporta molte informazioni utili sul nostro nuovo ambiente di sviluppo (versione del software, moduli di apache, moduli di php, variabili di ambiente, ecc).
Se tutto è andato bene, puntando il browser all'indiritto http://127.0.0.1/prova.php (nel caso di aver usato la DocumentRoot) oppure http://127.0.0.1/~utente/prova.php vedremo una pagina html che riporta molte informazioni utili sul nostro nuovo ambiente di sviluppo (versione del software, moduli di apache, moduli di php, variabili di ambiente, ecc).


=Il Database Server=
== Il Database Server ==
==MySQL==
=== MySQL ===
Passiamo adesso ad installare il server di database MySQL.
Passiamo adesso ad installare il server di database MySQL.
<pre># apt-get install mysql-server</pre>
<pre># apt-get install mysql-server</pre>
Riga 447: Riga 447:
Se non abbiamo ottenuto errori passiamo al punto successivo, altrimenti verifichiamo tutti i passaggi precedenti.
Se non abbiamo ottenuto errori passiamo al punto successivo, altrimenti verifichiamo tutti i passaggi precedenti.


==MySQL e PHP==
=== MySQL e PHP ===
Per poter usare MySQL attraverso pagine PHP dobbiamo installare il modulo '''php4-mysql''' e riavviare Apache:
Per poter usare MySQL attraverso pagine PHP dobbiamo installare il modulo '''php4-mysql''' e riavviare Apache:
<pre>
<pre>
Riga 473: Riga 473:
** se otteniamo l' errore <code>'''Warning: mysql_connect(): Access denied for user: xxxxxxxx'''</code> significa che abbiamo scritto male le credenziali da utilizzare.
** se otteniamo l' errore <code>'''Warning: mysql_connect(): Access denied for user: xxxxxxxx'''</code> significa che abbiamo scritto male le credenziali da utilizzare.


==PhpMyAdmin==
=== PhpMyAdmin ===
Questo software è un validissimo alleato nel lavoro quotidiano di manutenere un server MySQL, anche se in locale e/o domestico: tra i suoi pregi segnalo l'ottima usabilità e l' interfaccia web.
Questo software è un validissimo alleato nel lavoro quotidiano di manutenere un server MySQL, anche se in locale e/o domestico: tra i suoi pregi segnalo l'ottima usabilità e l' interfaccia web.


Riga 486: Riga 486:
[[Immagine:Phpmyadmin_table.png|thumb|center|Schermata di esempio di PhpMyAdmin]]
[[Immagine:Phpmyadmin_table.png|thumb|center|Schermata di esempio di PhpMyAdmin]]


=Conclusioni=
== Conclusioni ==
Ora si ha a disposizione un sistema completo per l'utilizzo di script in php (ed anche per il loro sviluppo).
Ora si ha a disposizione un sistema completo per l'utilizzo di script in php (ed anche per il loro sviluppo).


1 508

contributi