Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5: differenze tra le versioni

corretta gerarchia titoli
Nessun oggetto della modifica
(corretta gerarchia titoli)
Riga 1: Riga 1:
{{Versioni compatibili|Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
{{Versioni compatibili|Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
=Introduzione=
== Introduzione ==
'''LAMP''' è un acronimo che indica un ambiente server in cui siano installati '''L'''inux, '''A'''pache, '''M'''ySQL e '''P'''HP. In questa guida vedremo come installare un server Apache2 su Debian Lenny, come configurare il modulo SSL e come fornire supporto per il linguaggio di scripting PHP5 e i database basati su MySQL.
'''LAMP''' è un acronimo che indica un ambiente server in cui siano installati '''L'''inux, '''A'''pache, '''M'''ySQL e '''P'''HP. In questa guida vedremo come installare un server Apache2 su Debian Lenny, come configurare il modulo SSL e come fornire supporto per il linguaggio di scripting PHP5 e i database basati su MySQL.
<br>
<br>
In tutta la guida assumeremo che il nome del server Debian sia <code>'''demo'''</code> e il suo indirizzo IP sia <code>'''123.45.6.7.890'''</code>. Questi valori vanno ovviamente sostituiti con quelli del vostro ambiente di lavoro.
In tutta la guida assumeremo che il nome del server Debian sia <code>'''demo'''</code> e il suo indirizzo IP sia <code>'''123.45.6.7.890'''</code>. Questi valori vanno ovviamente sostituiti con quelli del vostro ambiente di lavoro.


=Installazione di Apache2=
== Installazione di Apache2 ==
Installare il web server Apache2 su Debian è un'operazione molto semplice:
Installare il web server Apache2 su Debian è un'operazione molto semplice:
<pre>
<pre>
Riga 28: Riga 28:
</pre>
</pre>
A questo punto aprite il vostro browser preferito e navigate verso l'indirizzo '''http://123.45.67.890'''. Sarete accolti dalla pagina di benvenuto del vostro web server: It Works!
A questo punto aprite il vostro browser preferito e navigate verso l'indirizzo '''http://123.45.67.890'''. Sarete accolti dalla pagina di benvenuto del vostro web server: It Works!
=Configurazione di SSL=
== Configurazione di SSL ==
Le connessioni sicure SSL sono vitali per le aree di amministrazione dei nostri siti, poiché assicurano segretezza e protezione alle password che digitiamo. In questa sezione vedremo come configurare un certificato auto-firmato e come creare un virtual host sulla porta https (443) per le nostre connessioni.<br>
Le connessioni sicure SSL sono vitali per le aree di amministrazione dei nostri siti, poiché assicurano segretezza e protezione alle password che digitiamo. In questa sezione vedremo come configurare un certificato auto-firmato e come creare un virtual host sulla porta https (443) per le nostre connessioni.<br>
'''NOTA''': i certificati auto-firmati, poiché non verificati da un'autorità internazionale, generano nel browser un messaggio di avvertimento. Per questo motivo sono adatti in ambienti intranet o su server dove il traffico https serve solo per amministrazione e non per fornire servizi a utenti esterni.
'''NOTA''': i certificati auto-firmati, poiché non verificati da un'autorità internazionale, generano nel browser un messaggio di avvertimento. Per questo motivo sono adatti in ambienti intranet o su server dove il traffico https serve solo per amministrazione e non per fornire servizi a utenti esterni.
==Installazione==
=== Installazione ===
Creiamo innanzitutto una directory dove archiviare i nostri certificati:
Creiamo innanzitutto una directory dove archiviare i nostri certificati:
<pre>
<pre>
Riga 71: Riga 71:
# a2enmod ssl
# a2enmod ssl
</pre>
</pre>
==Configurazione dei Virtual Host==
=== Configurazione dei Virtual Host ===
Iniziamo con il creare un file di testo che specifichi il nostro Virtual Host SSL:
Iniziamo con il creare un file di testo che specifichi il nostro Virtual Host SSL:
<pre>
<pre>
Riga 145: Riga 145:
</pre>
</pre>


=Installazione di PHP5=
== Installazione di PHP5 ==
Per avere il supporto a PHP5 è sufficiente installare il linguaggio di scripting e il relativo modulo di supporto ad Apache2:
Per avere il supporto a PHP5 è sufficiente installare il linguaggio di scripting e il relativo modulo di supporto ad Apache2:
<pre>
<pre>
Riga 154: Riga 154:
# /etc/init.d/apache2 reload
# /etc/init.d/apache2 reload
</pre>
</pre>
==Test della configurazione==
=== Test della configurazione ===
Prima di procedere è una buona idea verificare che tutto ciò che abbiamo fatto funzioni realmente. Per questo utilizziamo il metodo <code>phpinfo</code> di PHP5 caricandolo in una pagina di test. Partiamo col creare il file della pagina di test:
Prima di procedere è una buona idea verificare che tutto ciò che abbiamo fatto funzioni realmente. Per questo utilizziamo il metodo <code>phpinfo</code> di PHP5 caricandolo in una pagina di test. Partiamo col creare il file della pagina di test:
<pre>
<pre>
Riga 173: Riga 173:
</pre>
</pre>
salviamo il file e richiamiamolo nel nostro browser: '''http://123.45.67.890/test.php'''. Se tutto è andato per il verso giusto vi troverete davanti a una schermata di riepilogo delle funzionalità abilitate di PHP5.
salviamo il file e richiamiamolo nel nostro browser: '''http://123.45.67.890/test.php'''. Se tutto è andato per il verso giusto vi troverete davanti a una schermata di riepilogo delle funzionalità abilitate di PHP5.
==Moduli aggiuntivi==
=== Moduli aggiuntivi ===
Tramite le funzionalità di ricerca di aptitude diamo uno sguardo ai moduli disponibili per PHP5:
Tramite le funzionalità di ricerca di aptitude diamo uno sguardo ai moduli disponibili per PHP5:
<pre>
<pre>
Riga 184: Riga 184:
php5-xmlrpc php5-xsl php5-json
php5-xmlrpc php5-xsl php5-json
</pre>
</pre>
=Installazione di MySQL=
== Installazione di MySQL ==
L'installazione del RDBM MySQL è semplice:
L'installazione del RDBM MySQL è semplice:
<pre>
<pre>
Riga 195: Riga 195:
</pre>
</pre>
La password che sceglierete sarà valida sia per l'utente MySQL root@localhost sia per l'utente root@demo.
La password che sceglierete sarà valida sia per l'utente MySQL root@localhost sia per l'utente root@demo.
==L'interfaccia phpMyAdmin==
=== L'interfaccia phpMyAdmin ===
Per amministrare i nostri database può essere comoda un'interfaccia grafica raggiungibile da browser. A questo scopo installiamo '''phpMyAdmin''':
Per amministrare i nostri database può essere comoda un'interfaccia grafica raggiungibile da browser. A questo scopo installiamo '''phpMyAdmin''':
<pre>
<pre>
Riga 205: Riga 205:
</pre>
</pre>
A questo punto lanciate il browser su '''http://123.45.67.890/phpmyadmin''' e fate login con le credenziali di root di MySQL inserite poco fa.
A questo punto lanciate il browser su '''http://123.45.67.890/phpmyadmin''' e fate login con le credenziali di root di MySQL inserite poco fa.
=Apache2: layout di configurazione=
== Apache2: layout di configurazione ==
Assumendo di aver utilizzato aptitude o apt-get per installare Apache2, spostiamoci nella sua directory di configurazione per dare un occhio a come è strutturata:
Assumendo di aver utilizzato aptitude o apt-get per installare Apache2, spostiamoci nella sua directory di configurazione per dare un occhio a come è strutturata:
<pre>
<pre>
Riga 211: Riga 211:
# ls
# ls
</pre>
</pre>
==sites-available==
=== sites-available ===
Questa directory conterrà i file con le configurazioni di ogni sito (conosciuti come '''virtual hosts''') che vorrete servire con Apache. Uno sguardo alla directory:
Questa directory conterrà i file con le configurazioni di ogni sito (conosciuti come '''virtual hosts''') che vorrete servire con Apache. Uno sguardo alla directory:
<pre>
<pre>
Riga 220: Riga 220:
ci dice che l'installazione Apache2 di Debian ha due vhost disponibili: <code>default</code> e <code>default-ssl</code>. Notate che la presenza di un virtual host in questa directory non significa che questo sia attivo e visibile dagli utenti; significa solo che sarà disponibile se verrà abilitato.<br>
ci dice che l'installazione Apache2 di Debian ha due vhost disponibili: <code>default</code> e <code>default-ssl</code>. Notate che la presenza di un virtual host in questa directory non significa che questo sia attivo e visibile dagli utenti; significa solo che sarà disponibile se verrà abilitato.<br>
Tutto questo ci porta a...
Tutto questo ci porta a...
==sites-enabled==
=== sites-enabled ===
Questa directory contiene dei link simbolici ai files dei siti che volete rendere disponibili. Per esempio, su un web server ci possono essere diversi siti pronti per essere pubblicati (configurati nella directory <code>sites-available</code>), ma solo quelli linkati simbolicamente in questa directory saranno realmente visibili dagli utenti. Diamo uno sguardo alla directory:
Questa directory contiene dei link simbolici ai files dei siti che volete rendere disponibili. Per esempio, su un web server ci possono essere diversi siti pronti per essere pubblicati (configurati nella directory <code>sites-available</code>), ma solo quelli linkati simbolicamente in questa directory saranno realmente visibili dagli utenti. Diamo uno sguardo alla directory:
<pre>
<pre>
Riga 228: Riga 228:
</pre>
</pre>
Su questo web server il solo sito ad essere visibile sarà perciò quello chiamato <code>default</code>.
Su questo web server il solo sito ad essere visibile sarà perciò quello chiamato <code>default</code>.
===mods-available===
==== mods-available ====
Questa directory contiene i moduli di Apache2 pronti per essere resi disponibili.
Questa directory contiene i moduli di Apache2 pronti per essere resi disponibili.
==mods-enabled==
=== mods-enabled ===
Questa directory, come nel caso dei virtual host, contiene i link simbolici ai moduli effettivamente abilitati sul web server.
Questa directory, come nel caso dei virtual host, contiene i link simbolici ai moduli effettivamente abilitati sul web server.
==a2en e a2dis==
=== a2en e a2dis ===
Essere buoni amministratori di sistema significa conoscere i comandi per renderci le cose più semplici.
Essere buoni amministratori di sistema significa conoscere i comandi per renderci le cose più semplici.
===a2dissite===
==== a2dissite ====
Questo comando cancella il link simbolico di un sito abilitato. Ad esempio il comando:
Questo comando cancella il link simbolico di un sito abilitato. Ad esempio il comando:
<pre>
<pre>
Riga 240: Riga 240:
</pre>
</pre>
rende indisponibile il sito di default di Apache.
rende indisponibile il sito di default di Apache.
===a2ensite===
==== a2ensite ====
Questo comando serve invece a abilitare un virtual host:
Questo comando serve invece a abilitare un virtual host:
<pre>
<pre>
Riga 246: Riga 246:
</pre>
</pre>
rimette le cose a posto, ripristinando il sito di default precedentemente disabilitato.
rimette le cose a posto, ripristinando il sito di default precedentemente disabilitato.
===a2dismod===
==== a2dismod ====
Questo comando disabilita un modulo di Apache.
Questo comando disabilita un modulo di Apache.
===a2enmod===
==== a2enmod ====
Questo comando abilita un modulo di Apache.
Questo comando abilita un modulo di Apache.
=Apache2: files di configurazione=
== Apache2: files di configurazione ==
==ports.conf==
=== ports.conf ===
È il file che indica ad Apache su quali porte TCP/IP restare in ascolto:
È il file che indica ad Apache su quali porte TCP/IP restare in ascolto:
<pre>
<pre>
Riga 272: Riga 272:
e riavviare Apache.
e riavviare Apache.


==apache2.conf==
=== apache2.conf ===
È il file di configurazione principale di Apache su Debian. È estremamente ben commentato, ma può valer la pena lo stesso dare un'occhiata alle opzioni di configurazione principali.
È il file di configurazione principale di Apache su Debian. È estremamente ben commentato, ma può valer la pena lo stesso dare un'occhiata alle opzioni di configurazione principali.
===Timeout===
==== Timeout ====
Default:
Default:
<pre>
<pre>
Riga 280: Riga 280:
</pre>
</pre>
Questa opzione imposta il tempo massimo, in secondi, durante il quale Apache aspetta una richiesta, la processa e le risponde. È impostato deliberatamente su un valore molto alto, ma è possibile ridurlo, portandolo a un sano 45 (o anche meno). Ridurre questo valore può anche aiutare a controbattere gli effetti di un attacco DOS.
Questa opzione imposta il tempo massimo, in secondi, durante il quale Apache aspetta una richiesta, la processa e le risponde. È impostato deliberatamente su un valore molto alto, ma è possibile ridurlo, portandolo a un sano 45 (o anche meno). Ridurre questo valore può anche aiutare a controbattere gli effetti di un attacco DOS.
===KeepAlive===
==== KeepAlive ====
Default:
Default:
<pre>
<pre>
Riga 286: Riga 286:
</pre>
</pre>
Questo parametro andrebbe lasciato su ON, poiché indica a Apache di mantenere aperta una connessione con il client, in modo che ogni file o immagine di un documento HTML non siano richiesti con una nuova connessione. Di seguito vedremo alcune impostazioni del parametro KeepAlive.
Questo parametro andrebbe lasciato su ON, poiché indica a Apache di mantenere aperta una connessione con il client, in modo che ogni file o immagine di un documento HTML non siano richiesti con una nuova connessione. Di seguito vedremo alcune impostazioni del parametro KeepAlive.
====MaxKeepAliveRequests====
===== MaxKeepAliveRequests =====
Default:
Default:
<pre>
<pre>
Riga 292: Riga 292:
</pre>
</pre>
Per ogni connessione persistente attiva definisce il numero massimo di richieste possibili. Va tenuto alto per garantire efficienza. Se il vostro sito contiene parecchi javascript, immagini, etc, provate a aumentarlo a 200.
Per ogni connessione persistente attiva definisce il numero massimo di richieste possibili. Va tenuto alto per garantire efficienza. Se il vostro sito contiene parecchi javascript, immagini, etc, provate a aumentarlo a 200.
====KeepAliveTimeout====
===== KeepAliveTimeout =====
Default:
Default:
<pre>
<pre>
Riga 298: Riga 298:
</pre>
</pre>
Descrive il tempo in secondi in cui ogni connessione persistente attiva aspetta per la prossima richiesta, prima di chiudersi definitivamente.
Descrive il tempo in secondi in cui ogni connessione persistente attiva aspetta per la prossima richiesta, prima di chiudersi definitivamente.
===prefork MPM===
==== prefork MPM ====
Durante l'installazione di Apache2 abbiamo optato per il pacchetto <code>apache2-mpm-prefork</code>, preferendolo al pacchetto <code>apache2-mpm-worker</code>. Vi rimando alla documentazione ufficiale di Apache2 per le differenze.<br>
Durante l'installazione di Apache2 abbiamo optato per il pacchetto <code>apache2-mpm-prefork</code>, preferendolo al pacchetto <code>apache2-mpm-worker</code>. Vi rimando alla documentazione ufficiale di Apache2 per le differenze.<br>
Questo parametro definisce il comportamento di Apache2 MPM prefork.<br>
Questo parametro definisce il comportamento di Apache2 MPM prefork.<br>
Riga 316: Riga 316:
* '''MaxClients''': imposta il numero massimo di richieste contemporanee gestibili da Apache
* '''MaxClients''': imposta il numero massimo di richieste contemporanee gestibili da Apache
* '''MaxRequestsPerChild''': imposta quante richieste saranno gestite da un processo figlio prima di terminare. Il valore 0 indica che il processo non termina mai. Modificare questo valore può aiutare la gestione della memoria RAM del server.
* '''MaxRequestsPerChild''': imposta quante richieste saranno gestite da un processo figlio prima di terminare. Il valore 0 indica che il processo non termina mai. Modificare questo valore può aiutare la gestione della memoria RAM del server.
===ServerName===
==== ServerName ====
Default: Non impostato
Default: Non impostato
Questo parametro va impostato utilizzando l'hostname del server o il suo FQDN (Fully Qualified Domain Name).
Questo parametro va impostato utilizzando l'hostname del server o il suo FQDN (Fully Qualified Domain Name).
===HostnameLookups===
==== HostnameLookups ====
Default:
Default:
<pre>
<pre>
Riga 328: Riga 328:
* On: abilita le ricerche DNS lookup per loggare gli host names
* On: abilita le ricerche DNS lookup per loggare gli host names
* Double: come On. In più controlla l'hostname.
* Double: come On. In più controlla l'hostname.
===ServerTokens===
==== ServerTokens ====
Default:
Default:
<pre>
<pre>
Riga 359: Riga 359:
Apache Server
Apache Server
</pre>
</pre>
===ServerSignature===
==== ServerSignature ====
Default:
Default:
<pre>
<pre>
Riga 370: Riga 370:
* Email: viene aggiunto anche l'indirizzo email dell'amministratore
* Email: viene aggiunto anche l'indirizzo email dell'amministratore


=Per approfondimenti vedi anche:=
== Per approfondimenti vedi anche: ==
[[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]<br>
[[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]<br>
[[Backup di MySQL tramite script]]<br>
[[Backup di MySQL tramite script]]<br>
1 508

contributi