UN server LAMP

Posted On 25 Gen 2009
Comment: Off

linuxtutorialTutorial Linux -Se avete un blog impostato su un data base MySQL probabilmente, senza saperlo, state utilizzando un server LAMP, acronimo di Linux, Apache, MySQL e PHP.
Si tratta di una soluzione web solida e sicura, grazie agli strumenti messi a disposizione da questi software open source. 
In questo sezione dedicata alla programmazione vediamo come impostare proprio un sito Web con queste caratteristiche, basta poco: un server Linux, i software (gratuiti) e un minimo di programmazione.

Il server Linux
Il server deve essere basato su un sistema operativo Linux, quindi compatibile coi software open source che andremo ad installare, va benissimo quindi qualsiasi distribuzione, nello specifico il test è stato fatto con una distribuzione Debian. Da notare che nell’installazione dei vari pacchetti relativi alla distribuzione è spesso prevista una versione server, da privilegiare, accanto alla distribuzione tradizionale.

Apache
Apache ha un compito cruciale nell’architettura del server LAMP: fornisce i servizi con i quali i browser i Web clientphp2 comunicano. Il demone è attivo in background sul server e aspetta le richieste dei client. I Web browser si connettono al demone HTTP e inviano le richieste che vengono interpretate dal demone, che poi reinvia i dati appropriati.
Per installare Apache http si può usare APT, acronim di Advanced Package Tool (per Debian o uno strumento similare) per recuperare e installare il pacchetto:

# apt-get install apache

Durante il processo di configurazione, verrà chiesto se si vuole abilitare il meccanismo suexec. La funzionalità suexec incrementa la sicurezza delle applicazioni CGI ed è solitamente raccomandata. Si può modificare la propria scelta successivamente, usando debconf per riconfigurare il pacchetto apache.
Il server dovrebbe partire automaticamente una volta completata l’installazione. Se questo, auspicabilmente, accade, vuol dire che è possibile installare PHP.
Il database MYSQL
MySql è un data base open source tra i più utilizzati. A renderlo popolare hanno contribuito le sue doti di velocità e stabilità. mysqlMySql è costituito da un server che si occupa dell’immagazzinamento dei dati e della loro accessibilità e da client che fanno da interfaccia con il server e si occupano della sua gestione. Include anche delle librerie client che possono essere usate da programmi terzi, come PHP, per la connessione al server.
In un server LAMP, MySQL viene usato per immagazzinare dati relativi alle applicazioni Web che vengono usate. Comunemente viene usato per dati come nome utente, password, registrazione di eventi e file di dati.
MySQL comprende tre pacchetti: il server, i clienti e le librerie client. Il server è all’interno del pacchetto mysql-server, e necessita degli altri due per funzionare. APT risolve le dipendenze, quindi i pacchetti verranno installati automaticamente quando si installa mysql-server:

# apt-get install mysql-server

Gli script di installazione nel pacchetto mysql-server presentano un paio di avvertimenti. Chiedono se si vuole rimuovere il database al momento della rimozione completa del pacchetto mysql-server. La risposta più sicura è “no”, infatti riduce le possibilità di perdita accidentale dei dati. Viene anche richiesto se si vuole che il server MYSQL parta al boot. Qui, probabilmente, è necessario rispondere “sì”.

L’accesso ai database all’interno di MYSQL è gestito sulla base delle informazioni sull’account immagazzinate all’interno del database mysql. Come nei sistemi UNIX, il nome dell’account del superuser è root. L’installazione di default non prevede una password per questo account, inoltre crea un account anonimo e un database di prova. Dovrebbero essere rimossi, a meno che non si sia certi che siano necessari.

# mysql -u root mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.0.24 Debian-10-log
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> UPDATE user SET Password=PASSWORD(‘ newpassword’)
-> WHERE User=’root’;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> DELETE FROM user WHERE User = ”;
Query OK, 2 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP DATABASE test;
Query OK, 0 rows affected (0.00 sec)
mysql> \q
Bye

Il comando UPDATE, come usato nell’esempio, cambia la password per l’account root di MySQL (sostituire newpassword con la password che si desidera usare), il comando DELETE cancella gli utenti anonimi e il comando FLUSH ordina al server MySQL in esecuzione di ricaricare l’elenco degli account utente dal database. Infine, il comando DROP cancella il database di prova.

PHP: il coltellino svizzero
Se Apache rappresenta il cuore del server e MySQL si occupa di gestire il data base, PHP è il linguaggio di programmazione ideato in modo specifico per personalizzare i siti web dinamici. Rispetto ad altre soluzioni ha il vantaggio di potere essere integrato direttamente nei documenti html, per questo viene preferito dagli sviluppatori.php
Quello presentato è il modo più comune per installare PHP, ma presenta alcune problematiche relative alla sicurezza sui sistemi multiutente, dato che tutti gli script PHP girano con lo stesso utente del demone di Apache. Assicurarsi di aver letto la sezione “Security” del manuale PHP su http://php.net/manual/en/security.php, prima di permettere ad altri utenti di accedere e manipolare file PHP sul server.

Il modulo Apache PHP è contenuto all’interno del pacchetto php5.3.1 (o php4), che viene installato usando APT. Le seguenti righe scaricano e installano il modulo Apache php4 e le estensioni per MySQL, configurano Apache in modo che carichi il modulo automaticamente e gli forniscono istruzioni affinché ricarichi la propria configurazione:

# apt-get install libapache-mod-php4 php4-mysql php4-gd
# apache-modconf apache enable mod_php4
Replacing config file /etc/apache/modules.conf with new version
# apachectl restart

I numeri di versione cambiano a seconda di cosa si installa. Per esempio, con PHP5 e Apache2, basta avere l’accortezza di utilizzare:

# apt-get install libapache2-mod-php5 php5-mysql php5-gd

Non bisogna preoccuparsi nel caso che la seconda riga non stampi un messaggio come nell’esempio. Vuol solamente dire che il modulo è già stato configurato.
A questo punto, Apache dovrebbe essere pronto a processare richieste HTTP e insieme ad eseguire i file PHP. Possiamo fare un test, creando il file /var/www/info.php, che contiene una chiamata alla funzione phpinfo():

# cat > /var/www/info.php
<?php
phpinfo();
?>
^D
# chmod 644 /var/www/info.php

^D indica che è necessario premere Ctrl+D sulla tastiera. Così facendo, si comunica al comando cat che si è terminato l’input. Ora, provare ad aprire la pagina http://localhost/info.php. Dovrebbe comparire una pagina ricca di informazioni in merito all’istallazione Apache e PHP, come mostrato nella figura 24-1.

Se la pagina non compare, appare la richiesta di scaricare il file, controllare la sezione per l’installazione di PHP relativa (sopra in questo capitolo), per verificare che tutti i passaggi siano stati completati con successo.

Attenzione: Al termine di tutte le verifiche è assolutamente necessario rimuovere il file info.php che rappresenta una falla potenziale, altrimenti potrebbe essere usato da potenziali “attaccanti” per ottenere informazioni sul sistema:

# rm -f /var/www/info.php 

Da dove scaricare

Linux: dipende dalla distribuzione, Debian da http://www.debian.org/releases/stable/
Apache: http://www.apache.org/dyn/closer.cgi
MySQL: http://dev.mysql.com/downloads/
PHP: http://php.net/downloads.php

About the Author

Related Posts