[updated 5/16/2010]
Memcached is a very popular open source object caching server. It was developed to speed up livejournal.com by Danga Interactive. We use memcached for a lot of our sites. We use it for different purposes but one main purpose is to cache query results so we don’t have to keep hitting database. As most of the people who work with databases know it is costly to keep hitting database for same information over and over.
When you run the Memcached daemon, it runs and listens on a specific port. One of the things Memcached does lack is security. Memcached will let anybody who can make a connection to its port have full access to all objects. So you would have to run a firewall to block unauthorized access. It is usually wise to do put firewall on it even if you trust everybody on the same network since accidents do happen. That said, let’s get memcached installed!
Let’s get libevent which is required by Memcached:
wget http://monkey.org/~provos/libevent-1.3e.tar.gz
tar zxpfv libevent*
cd libevent*
./configure
make install
Now let’s download the newest Memcached source (at time of update to this post 1.4.5 was the latest)
wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
tar zxpfv memcached*
cd memcached*
./configure
make install
Let’s add Memcached user to run daemon as since we don’t need it to run as root privileges.
adduser memcached
We will start the server to use 48 megs of ram (-m 48), listen on ip 10.0.0.2 (-l 10.0.0.2) and run on port 11211 (-p 11211) as user memcached (-u memcached)
./memcached -u memcached -d -m 48 -l 10.0.0.2 -p 11211
If you get the following error (which you will get if you are doing this under CentOS 64 bit):
./memcached: error while loading shared libraries: libevent-1.3e.so.1: cannot open shared object file: No such file or directory
You can fix this by simply doing this:
ln -s /usr/local/lib/libevent-1.3e.so.1 /lib64/
That is all there is to it. You can see if daemon is running by telneting to the port.
————————————-
DISCLAIMER: Please be smart and use code found on internet carefully. Make backups often. And yeah.. last but not least.. I am not responsible for any damage caused by this posting. Use at your own risk.
i hate centos because of the package management. dag usually has a lot of extra packages: http://dag.wieers.com/rpm/packages/memcached/
looks like the latest there might be 1.2.2 though.
On Fedora, a simple yum install memcached works better.
For Redhat 4 and 5, the same packages are available in the EPEL repositories:
http://fedoraproject.org/wiki/EPEL
Most of the times, using package managers to install won’t get you the latest version. With yum, it tried to download/install 1.2.3-7 on my fedora install. Thanks for the tip though. I am sure for people who don’t care, it would work out just fine.
Of course, you have to run the latest distro version to get the latest packages 😉
memcached 1.2.4 is in Fedora 8.
Got the error: ./memcached: error while loading shared libraries: libevent-1.3e.so.1: cannot open shared object file: No such file or directory
The solution for me: libevent files where installed at /usr/local/lib, I had to move them to /usr/lib and check if symbolic links were correct.
On CentOs 5.1 libevent may be installed like:
yum install libevent
but ‘yum install memcached’ still cant.
After this, you can download last version memcached
http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz
and go on as described abow, in some cases may apper this error
checking build system type… Invalid configuration `x86_64-unknown-linux-‘: machine `x86_64-unknown-linux’ not recognized
configure: error: /bin/sh ./config.sub x86_64-unknown-linux- failed
for now, I duno how to deal against it, but will dig
I Just finished installing on CentOS 5.1. Downloaded and built both libevent and memcached as instructed.
However memcached could not load the shared library libevent-1.3e.so.1.
Next I tried a “make clean” followed by
“./configure –with-libeven=/usr/local/lib” however I received the same error as before.
I was able to solve the problem by creating a symlink between /usr/local/lib/libevent-1.3e.so.1 and /usr/lib “ln -s /usr/local/lib/libevent-1.3e.so.1 /usr/lib”
Hopefully this will help someone else.
Update to my last comment:
–with-libeven should have been –with-libevent
Also, I did remember to run make install after I ran configure.
Shannon
Shannon, just for everybody’s knowledge here, are you using 32bit CentOS?
You can do following to check:
# uname -p
Pingback: Installing memcache on linux and add to PHP | JumpJava
Sunny, I am using 32Bit CentOS.
Cheers,
Shannon
Pingback: » Installing memcached On CentOS MaisonBisson.com
This is a great tutorial; thanks for sharing it.
I have a CentOS server and followed your instructions to install MemCached on it.
My question is: how can I change the settings on CentOS to make MemCached accesible to other machines on my network?
I’m running a windows console application that uses Enyim.Caching and it seems that it can’t get to the Memcached instance.
How can I tell from a Windows machine if Memcached is up and running?
Thanks in advance.
-Raul
Raul,
You can telnet to the instance. For example if you were running memcached on server with ip of 10.0.0.5 on port 11211, on windows you would goto command prompt and type: telnet 10.0.0.5 11211
if that doesn’t work and you know memcache is running and listening on that port, you may have firewall turned on. You can either allow that port or turn off the firewall to temporarily test. I suggest you figure out how to allow the port instead of turn off firewall completely.
Sunny,
in the CentOS server, I ran this command to find out it’s IP address
# ifconfig
now I know the machine is running with this address: 192.168.1.102
then I ran this
# memcached -l 192.168.1.102 -p 11211 -d -u nobody
after that I ran this command to see if memcached is up and running:
# netstat -ant | grep LIST
at the top, I see this
tcp 0 0 192.168.1.102:11211 0.0.0.0:* LISTEN
I assume that means memcached is running on that ip address and port
now from another machine (MacOS), I open a terminal window and type the following:
$ telnet 192.168.1.102:11211
then I get this:
192.168.1.102:11211: nodename nor servername provided, or not known
does that mean the port is blocked or not opened in the CentOS server?
thanks for your help
-Raul
my mistake, when I try doing the telnet command like this
$ telnet 192.168.1.102 11211
I get
Trying 192.168.1.102…
telnet: connect to address 192.168.1.102: Connection refused
telnet: Unable to connect to remote host
I got it working. The problem was that port 11211 was not open on the server.
In case somebody else run into this issue, here is a good article on how to open ports in linux:
http://gavinbenda.com.au/2007/04/17/open-a-port-with-centos/
Thanks for installing memcached guide.
Can’t compile memcached 1.4.5 on RHEL 5.5
./configure –with-libevent=/usr/lib64/
still results in error that libevent needs to be installed.
Installed libevent is libevent-1.4.13-1
linking /usr/lib64/libevent-1.4.so.2 to /lib64 or /usr/lib doesn’t help.
Has anyone been able to compile memcache on RHEL 5.5?
@larry
install libevent-devel (on centos : yum install libevent-devel)
How to install memcached to service and make autostart on reboot?
http://www.vbseo.com/blogs/danny-bembibre/daemon-scripts-memcached-44/ <– memcached startup script for use with the chkconfig command. chkconfig is the "correct" way to manage services and what run levels they start and stop on. However, I've been known to also hack something into /etc/rc.d/rc.local when in a hurry. Best to use chkconfig unless you really know what you are doing.
Pingback: Memchached - vBulletin SEO Forums
Amazing blog! Do you have any suggestions for aspiring writers?
I’m planning to start my own website soon but I’m a little lost on everything.
Would you advise starting with a free platform like WordPress or go
for a paid option? There are so many options out there that I’m totally confused ..
Any recommendations? Cheers!
I tilted myself that will where I’d been leaning just a bit away from the part, enough
to kick advertising as hard as I could possibly.
And remember it’s a must that the DJ is aware of their crowd in case of
emergency – can’t be all fucked up (high & drunk) not paying attention and then on top of
that can’t change your mood music cuz all you brought was the bang bang
four on the floor. I really threw beers and booted the wall structure and swore seeing that loud after i
could free of Beth experiencing me.
There are reputable methods to make money on-line, just be confident that
you do not fall into any sort of trap.
Pingback: Answer for What is the best way to setup memcached on CentOS to work with Apache and PHP - Tech Magazine
Pingback: What is the best way to setup memcached on CentOS to work with Apache and PHP [ANSWERED] - Tech ABC to XYZ