Installeer memcache voor drupal op centos
In terminal:
Allereerst installeer libevent:
cd /usr/local/src/ wget <a href="http://monkey.org/~provos/libevent-1.3e.tar.gz tar">http://monkey.org/~provos/libevent-1.3e.tar.gz tar</a> zxpfv libevent* cd libevent* ./configure make install
Download en installeer memcached:
cd /usr/local/src/ wget <a href="http://www.danga.com/memcached/dist/memcached-1.2.4.tar.gz tar">http://www.danga.com/memcached/dist/memcached-1.2.4.tar.gz tar</a> zxpfv memcached* cd memcached* ./configure make install
Nu beginnen we met een daemon om te testen
./memcached -u root -d -m 48 -l 10.10.102.6 -p 11211 //change the ip in your ip //change the user root in an appropriate user for memcache //To test if it is running type memcached -u root -vv //Now kill it killall memcached
Wanneer u de error:./memcached: error while loading shared libraries: libevent-1.3e.so.1: cannot open shared object file: No such file or directory krijgt
Probeer:
ln -s /usr/local/lib/libevent-1.3e.so.1 /lib64/
Als u nog steeds dezelfde error krijgt:
Kopieer alle bestanden in /usr/local/lib to /usr/lib
Nu zou u een memcached server operationeel moeten hebben.
We moeten het nog steeds laten werken met php.
Installeer libmemcached:
cd /etc/yum.repos.d/ wget <a href="http://rpms.famillecollet.com/remi-enterprise.repo wget">http://rpms.famillecollet.com/remi-enterprise.repo wget</a> <a href="http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm wget">http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarc...</a> <a href="http://rpms.famillecollet.com/enterprise/remi-release-5.rpm rpm">http://rpms.famillecollet.com/enterprise/remi-release-5.rpm rpm</a> -Uvh remi-release-5*.rpm epel-release-5*.rpm yum --enablerepo=remi install libmemcached\*
Installeer pecl memcache:
pecl install memcache
//of u kunt het zelf bouwen
pecl download memcached tar zxvf memcached-1.0.0.tgz (or whatever version downloads) cd memcached-1.0.0 phpize ./configure --with-libmemcached-dir=/opt/local make make install
Voeg deze regels toe aan het php.ini bestand
extension=memcache.so memcache.hash_strategy="consistent"
Start de server opnieuw.
/etc/init.d/httpd restart
Om te testen of de php module is ingeschakeld doe een php_info() en controleer of de memcache settings tabel aanwezig is.
In drupal schakel de module en en voer in following in het settings bestand:
$conf = array( // The path to wherever memcache.inc is. The easiest is to simply point it // to the copy in your module's directory. 'cache_inc' => './sites/all/modules/memcache/memcache.inc', // or // 'cache_inc' => './sites/all/modules/memcache/memcache.db.inc', );
Bewerk :
Meer geschikte caching configuratie voor een drupal site. Ik definieerde zes bins.
$conf['cache_inc'] = 'sites/all/modules/contrib/memcache/memcache.inc'; $conf['memcache_servers'] = array( 'localhost:11211' => 'default', 'localhost:11212' => 'page', 'localhost:11213' => 'filter', 'localhost:11214' => 'content', 'localhost:11215' => 'block', 'localhost:11216' => 'views', 'localhost:11217' => 'form',//read update below why the form cache needs its own bin ); $conf['memcache_bins'] = array( 'cache' => 'default', 'cache_menu' => 'default', 'cache_apachesolr' => 'default', 'cache_form' => 'form',//read update below why the form cache needs its own bin 'cache_glue' => 'default', 'cache_rules' => 'default', 'cache_mollom' => 'default', 'cache_update' => 'default', 'cache_usermenu' => 'default', 'cache_views' => 'views', 'cache_views_data' => 'views', 'cache_page' => 'page', 'cache_filter' => 'filter', 'cache_content' => 'content', 'cache_block' => 'block', );
Dit heeft een andere initiëring van de bins nodig. Daarnaast is er ook een script nodig om de bins te starten en te stoppen.
Om de memcached daemons te starten gebruiken we dit script. (Wordt gedaan in plaats van de deamon in de command regel hier boven in te voeren)
Dus creëer een bestand in /etc/init.d
cd /etc/init.d/ vi memcached //type 'i' to edit //paste this #!/bin/bash #source is the path to your memchached installation (if you have another version adapt) source="/usr/local/src/memcached-1.2.4/memcached" RETVAL=0 prog="memcached" desc="Distributed memory caching" start() { echo -n $"Starting $desc ($prog): " $source -d -u root -m 64 -p 11211 $source -d -u root -m 320 -p 11212 $source -d -u root -m 128 -p 11213 $source -d -u root -m 320 -p 11214 $source -d -u root -m 128 -p 11215 $source -d -u root -m 64 -p 11216 $source -d -u root -m 64 -p 11217 RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Shutting down $desc ($prog): " killall $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } restart() { stop start } reload() { echo -n $"Reloading $desc ($prog): " killproc $prog -HUP RETVAL=$? echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) restart ;; condrestart) [ -e /var/lock/subsys/$prog ] && restart RETVAL=$? ;; reload) reload ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|status}" RETVAL=1 esac exit $RETVAL //press esc type :wq to save and exit //make the file executable chmod u+x memcached //to start service memcache start //to stop service memcache stop
Ga naar admin/settings/memcache en schakel de show statistics in om het proces te volgen.
Ga naar reports memcached om de statistieken van uw bins te bekijken.
U dient het process te volgen en de bins aan te passen aan uw behoeftes. U kunt het meer of minder geheugen geven. Een evenwichtige grootte geeft de beste prestatie.
UPDATE:
Wanneer u memcached gebruikt heeft u een apparte bin voor uw forms nodig. (http://drupal.org/node/500646)
Ik heb de bovenstaande code aangepast zodat deze werkt.
Een ander probleem waar ik tegenaan liep met memcached, hierachical select werkte niet. Dit kan opgelost worden door deze patch te gebruiken
http://drupal.org/node/538022#comment-3116204
Reactie toevoegen