Installare Memcached in un server Apache2: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Versioni compatibili|Debian Etch 4.0<br/>Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
==Introduzione==
==Introduzione==
<code>Memcached</code> è un sistema di caching distribuito in RAM per oggetti, è molto usato nell'ambito di applicazioni web dinamiche per alleviare il carico sul database, facendo in modo di servire alcuni dei dati ai quali l’accesso è più frequente, direttamente dalla memoria RAM.<br/>
<code>Memcached</code> è un sistema di caching distribuito in RAM per oggetti, è molto usato nell'ambito di applicazioni web dinamiche per alleviare il carico sul database, facendo in modo di servire alcuni dei dati ai quali l’accesso è più frequente, direttamente dalla memoria RAM.<br/>

Versione delle 23:36, 28 feb 2010

Debian-swirl.png Versioni Compatibili

ERRORE: valore non valido ( Debian Etch 4.0
Debian Lenny 5.0
Debian Squeeze
Debian Sid )! Vedi qui.

Introduzione

Memcached è un sistema di caching distribuito in RAM per oggetti, è molto usato nell'ambito di applicazioni web dinamiche per alleviare il carico sul database, facendo in modo di servire alcuni dei dati ai quali l’accesso è più frequente, direttamente dalla memoria RAM.
Memcached è stato creato nel 2003 dalla compagnia che gestisce LiveJournal, la Danga Interactive, che si trovava a dover gestire più di 20 milioni di richieste dinamiche al giorno in crescita esponenziale. L’adozione di questo innovativo sistema di caching ha permesso di ridurre drasticamente il carico sui server database e migliorare sensibilmente le performance del sito. Oggi sono molti i siti che utilizzano memcached, tra i quali Wikipedia.

Prerequisiti

Per poter seguire questa guida è necessario avere un server Debian correttamente installato, su cui girino i servizi Apache2, PHP5 e MySQL. Per l'installazione di un ambiente LAMP di questo genere si veda ad esempio la guida Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5.

Verifiche preliminari

Controlliamo innanzitutto di avere un ambiente LAMP funzionante, creando una pagina che riepiloghi le informazioni sull'ambiente PHP installato:

# nano /var/www/phpinfo.php

Il contenuto di questo file dovrà essere il seguente:

<?php
phpinfo();
?>

Quindi richiamiamo da un browser la pagina:

http://indirizzo.IP.del.server/phpinfo.php

Dovremmo ricevere come risposta una pagina con l'elenco di tutti i moduli PHP abilitati e una serie di informazioni sul nostro sistema.

Installazione

A questo punto siamo pronti per installare memcache:

# apt-get install memcached php5-memcache

Dopo l'installazione memcache dovrebbe già essere attivo. Lo possiamo verificare con il comando:

# netstat -tap | grep memcached
tcp        0      0 *:11211                 *:*                     LISTEN     3053/memcached

Come si vede dall'output di netstat, memcached è in ascolto sulla porta 11211 (la sua porta di default) e risponde su tutte le interfacce del sistema. Poichè memcached non ha un sistema integrato di autenticazione questo significa che la porta 11211 è aperta a chiunque voglia connettersi, e ciò non è bene.
Per evitare una cosa del genere, possiamo chiudere la posta 11211 sul firewall della nostra rete, oppure riconfigurare memcached e metterlo in ascolto solo su localhost:

# nano /etc/memcached.conf

Aggiungete la dicitura -l 127.0.0.1 alla configurazione di memcached, nella sezione del file indicata qui:

[...]
# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
# -l 12.34.56.78
-l 127.0.0.1
[...]

Quindi riavviate memcached:

/etc/init.d/memcached restart

e lanciate di nuovo:

# netstat -tap | grep memcached
tcp        0      0 localhost.localdo:11211 *:*                     LISTEN     3092/memcached

Come possiamo vedere, adesso memcached è in ascolto solo su localhost.
Riavviamo infine anche Apache per fare in modo che la nostra nuova configurazione PHP diventi attiva:

# /etc/init.d/apache2 restart

Se adesso apriamo di nuovo il browser all'indirizzo:

http://indirizzo.IP.del.server/phpinfo.php

dovremmo vedere tra le altre cose anche le informazioni su memcached.

Utilizzo di memcached nelle applicazioni

Per utilizzare memcached nelle nostre applicazioni PHP ci conviene fare riferimento alla documentazione ufficiale del demone:

Esempio

Come piccolo esempio di utilizzo di memcache possiamo studiare questo script:

# nano /var/www/memcachetest.php

il cui contenuto sarà simile al seguente:

<?php

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");

$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\n";

$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;

$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)<br/>\n";

$get_result = $memcache->get('key');
echo "Data from the cache:<br/>\n";

var_dump($get_result);

?>

Il risultato sarà una pagina PHP che ci comunica la versione di memcache attiva sul server e alcune piccole informazioni.

--Ferdybassi 00:35, 1 mar 2010 (CET)