Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5

Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5

Introduzione

LAMP è un acronimo che indica un ambiente server in cui siano installati Linux, Apache, MySQL e PHP. In questa guida vedremo come installare un server Apache2 su Debian, come configurare il modulo SSL e come fornire supporto per il linguaggio di scripting PHP5 e i database basati su MySQL.
In tutta la guida assumeremo che il nome del server Debian sia demo e il suo indirizzo IP sia 123.45.6.7.890. Questi valori vanno ovviamente sostituiti con quelli del vostro ambiente di lavoro.

Installazione di Apache2

Installare il web server Apache2 su Debian è un'operazione molto semplice:

aptitude install apache2-mpm-prefork apache2-utils libexpat1

Probabilmente noterete, all'avvio del web server, il messaggio di avvertimento

apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName

Per eliminarlo è sufficiente aprire il file di configurazione di Apache2

nano /etc/apache2/apache2.conf

e aggiungere la direttiva

ServerName demo

Quindi riavviate Apache2 per fargli digerire le modifiche:

apache2ctl graceful

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 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.
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

Creiamo inannzitutto una directory dove archiviare i nostri certificati:

mkdir /etc/apache2/ssl

Quindi creiamo i nostri certificati:

openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem

L'output iniziale del comando sarà:

Generating a 1024 bit RSA private key
...........++++++
...........++++++
writing new private key to '/etc/apache2/ssl/apache.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----

e poi ci verrà posta una serie di domande:

Country Name (2 letter code) [AU]: IT
State or Province Name (full name) [Some-State]: Lodi
Locality Name (eg, city) []: S. Angelo Lodigiano
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Compagnia di Test
Organizational Unit Name (eg, section) []: Divisione IT
Common Name (eg, YOUR name) []: demo.dominio.local
Email Address []: webmaster@dominio.local

Rispondete ovviamente inserendo i parametri più adatti al vostro caso.
Adesso che abbiamo i certificati piazzati al loro posto non dobbiamo far altro che abilitare Apache mod_ssl:

a2enmod ssl

Configurazione dei Virtual Host

Iniziamo con l'abilitare la porta 443 del nostro default host:

nano /etc/apache2/sites-available/default

All'inizio del file troveremo le voci:

NameVirtualHost *

<VirtualHost *>
...

Modifichiamole in questo modo:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
...
...
</VirtualHost>

<VirtualHost *:443>
...
...
</VirtualHost>

e aggiungiamo infine le seguenti due linee:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem

Un riavvio di Apache2 caricherà la nuova configurazione:

/etc/init.d/apache2 force-reload