Teaser
The more I see, the more I know
The more I know, the less I understand
clear

Memcached unter SuSE SLES10

Für SuSE bzw. SLES10 gibt es meiner Kenntnis nach keine RPM Pakete für die problemlose Installation. Daher hier eine kleine Anleitung für die Installation.


Die jeweils aktuell Version von memchached kann man hier runterladen: www.danga.com/memcached/

Der Quellcode beinhaltet bereits Scripte zum start und stoppen, jedoch nicht 100% angepasst an die SuSE Gegebenheiten. Daher muss man leider ein wenig Hand anlegen.

Schritt #1: Memchached runterladen, entpacken, kompiliere und installieren:

  1. wget http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz
  2. tar xzf memcached-1.2.8.tar.gz
  3. cd memcached-1.2.8/
  4. ./configure
  5. make
  6. make install

Bei meiner SuSE Installation wird memchached in /usr/local/bin kopiert.

Im ausgepackten Quelltext befindet sich jedoch auch ein Verzeichnis "scripts", daß 4 Dateien enthält:

  • memcached-init
  • memcached.sysv 
  • memcached-tool
  • start-memcached

Die Datei "memchached-init" wird nach /etc/init.d/ kopiert, sowie start-memchached und memcached-tool nach /usr/local/share/memchached/scripts/:

  1. cp scripts/memcached-init /etc/init.d/
  2. mkdir -p /usr/local/share/memcached/scripts/
  3. cp scripts/memcached-tool /usr/local/share/memcached/scripts/
  4. cp scripts/start-memcached /usr/local/share/memcached/scripts/

nun müssen die Dateien noch an die Verzeichnisse angepasst werden. Wo man also die die Scripte hinkopiert ist relativ egal:

/etc/init.d/memcached-init:
Die Zeilen 14 und 15 anpassen an die richtigen Verzeichnisse anpassen:

Vorher:

DAEMON=/usr/bin/memcached
DAEMONBOOTSTRAP=/usr/share/memcached/scripts/start-memcached


Ändern in:

DAEMON=/usr/local/bin/memcached
DAEMONBOOTSTRAP=/usr/local/share/memcached/scripts/start-memcached

 
sowie /usr/local/share/memcached/scripts/start-memcached:
Zeile 23 an das richtige Verzeichnis anpassen:

Vorher:

my $memcached = "/usr/bin/memcached";

 

Ändern in:

my $memcached = "/usr/local/bin/memcached";


Config Datei /etc/memcached.conf erstellen:

# Use <num> MB memory max to use for object storage; the default is 64 megabytes.
-m 1024

# default port
-p 11211

# user to run daemon nobody/apache/www-data
-u nobody

# only listen locally
-l 127.0.0.1


Anschließend kann man mit /etc/init.d/memcachrd-init start den memcache Daemon starten und kontrollieren ob er läuft. Nicht vergessen das Startscript noch den Runlevels zuzuordnen.



Schritt #2: php-memcache installieren
Siehe auch: http://us3.php.net/manual/en/book.memcache.php


Auch für php-memcache gibt es kein RPM Paket. Leider ist zumindest auf unserem SusE System zudem die php Konfiguration von SuSE totaler Murks, so daß wir erst einmal einige Links setzen müssen, daß PECL sowie phpize funktionieren:

 

  1. cd /usr/bin/
  2. ln -sf php-config5 php-config
  3. ln -sf phpize5 phpize

Anschließend können wir php-memcache einfach über PECL installieren:

  1. pecl5 install memcache

Bei der Installation werden wir einmal gefragt, ob wir die memcached installieren wollen, was wir mit der ENTER Taste bestätigen. Zum Schluß sollte kommen:

Build process completed successfully
Installing '/usr/lib64/php5/extensions/memcache.so'
install ok: channel://pecl.php.net/memcache-2.2.5
configuration option "php_ini" is not set to php.ini location
You should add "extension=memcache.so" to php.ini


Dieser letzten bitte kommen wir natürlich nach und tragen in /etc/php5/apache/php.ini das Modul ein. (in den Bereich "Dynamic Extensions")

extension=memcache.so 


Nun kann apache neu gestartet werden um die Änderungen bekannt zu machen!

 



Schritt #3: Kontrolle

Entweder lokal und/oder durch ein php Script. Das PHP Script stammt von http://us3.php.net/manual/en/memcache.installation.php und lautet:


  1. <?php
  2. $memcache = new Memcache;
  3. $memcache->connect('localhost', 11211) or die ("Could not connect");
  4.  
  5. $version = $memcache->getVersion();
  6. echo "Server's version: ".$version."<br/>\n";
  7.  
  8. $tmp_object = new stdClass;
  9. $tmp_object->str_attr = 'test';
  10. $tmp_object->int_attr = 123;
  11.  
  12. $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
  13. echo "Store data in the cache (data will expire in 10 seconds)<br/>\n";
  14.  
  15. $get_result = $memcache->get('key');
  16. echo "Data from the cache:<br/>\n";
  17.  
  18. var_dump($get_result);
  19. ?>

Alternativ kann man es entweder durch einen direkten Telnet Connect auf den Server testen oder durch das mitgelieferte Script:


  1. /usr/local/share/memcached/scripts/memcached-tool 127.0.0.1:11211 display