Recently I had to install memcache on a number of servers, and I would always tend to end up with errors whilst memcache tries to locate libevent. I always seem to forgett LD_DEBUG, so I figured I would write up the process for installing memcache.

One of the dependencies of memcache is libevent, so firstly download the source files for Libevent.

tar -xvf libevent-1.3b.tar.gz
cd libevent-1.3b
./configure;make;make install;

Download the latest Memcached source code from

gunzip memcached-1.2.1.tar.gz
tar -xvf memcached-1.2.1.tar
cd memcached-1.2.1
./configure;make;make install;

Often cannot be found when executing memcache. A useful command LD_DEBUG, is very helpful to determine where libraries are being loaded from.

LD_DEBUG=help memcached -v

LD_DEBUG=libs memcached -v 2>&1 > /dev/null | less
18990: find [0]; searching
18990: trying file=/usr/lib/
memcached: error while loading shared libraries: cannot open shared object file: No such file or directory

Simply place the library where memcached will find it and execute memcached.

ln -s /usr/local/lib/ /lib/
memcached -d -u nobody -m 512 -p 11211

The options for memcached are:

-l <ip_addr>
Listen on <ip_addr>; default to INDRR_ANY. This is an important option to consider as there is no other way to secure the installation. Binding to an internal or firewalled network interface is suggested.
Run memcached as a daemon.
-u <username>
Assume the identity of <username> (only when run as root).
-m <num>
Use <num> MB memory max to use for object storage; the default is 64 megabytes.
Instead of throwing items from the cache when max memory is reached, throw an error
-c <num>
Use <num> max simultaneous connections; the default is 1024.
Lock down all paged memory. This is a somewhat dangerous option with large caches, so consult the README and memcached homepage for configuration suggestions.
-p <num>
Listen on port <num>, the default is port 11211.
Maximize core file limit
Disable automatic removal of items from the cache when out of memory. Additions will not be possible until adequate space is freed up.
Raise the core file size limit to the maximum allowable.
Show the version of memcached and a summary of options.
Be verbose during the event loop; print out errors and warnings.
Be even more verbose; same as -v but also print client commands and responses.
Print memcached and libevent licenses.
-P <filename>
Print pidfile to <filename>, only used under -d option.

To install the pecl package for PHP

gzip -df memcache-2.1.2.tgz
tar -xvf memcache-2.1.2.tar
cd memcache-2.1.2
./configure;make;make install;

Add to the php.ini file

Then run

php -i | grep -i 'memcache'

memcache should be listed and then restart the web server.

For further information:
Distributed Caching with Memcached