Centos 6 & Cpanel: How to install Memcached

What is Memcached?

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.

Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its API is available for most popular languages.

Official website: http://memcached.org/

How to install Memcached:

** 1. Install Required Packages **

yum install libevent libevent-devel -y

2. ** Configure and Compile Latest Version **

wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz tar xvf memcached-1.4.13.tar.gz cd memcached-1.4.13 ./configure && make && make install

** 3. Install Memcached Configuration **

Open /etc/memcached.conf with your favorite editor and paste in:

Memory a usar -m 16 # default port -p 11211 # user to run daemon nobody/apache/www-data -u nobody # only listen locally -l 127.0.0.1

4. ** Install initiation scripts.**

Run these commands

touch /etc/init.d/memcached chmod +x /etc/init.d/memcached

Open /etc/init.d/memcached with your favorite editor

nano /etc/init.d/memcached

or

vi /etc/init.d/memcached

and paste in:

!/bin/bash # # memcached This shell script takes care of starting and stopping # standalone memcached. # # chkconfig: - 80 12 # description: memcached is a high-performance, distributed memory # object caching system, generic in nature, but # intended for use in speeding up dynamic web # applications by alleviating database load. # processname: memcached # config: /etc/memcached.conf # Source function library. . /etc/rc.d/init.d/functions PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/bin/memcached DAEMONBOOTSTRAP=/usr/local/bin/start-memcached DAEMONCONF=/etc/memcached.conf NAME=memcached DESC=memcached PIDFILE=/var/run/$NAME.pid [ -x $DAEMON ] || exit 0 [ -x $DAEMONBOOTSTRAP ] || exit 0 RETVAL=0 start() { echo -n $"Starting $DESC: " daemon $DAEMONBOOTSTRAP $DAEMONCONF RETVAL=$? [ $RETVAL -eq 0 ] && touch $PIDFILE echo return $RETVAL } stop() { echo -n $"Shutting down $DESC: " killproc $NAME RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f $PIDFILE return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop start RETVAL=$? ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVAL

** 4. Install Memcached monitoring script**

** Create the start-memcached script**

touch /usr/local/bin/start-memcached chmod +x /usr/local/bin/start-memcached

** Open /usr/local/bin/start-memcached with your favorite editor and paste in:**

!/usr/bin/perl -w # start-memcached # 2003/2004 - Jay Bonci # This script handles the parsing of the /etc/memcached.conf file # and was originally created for the Debian distribution. # Anyone may use this little script under the same terms as # memcached itself. use strict; if ($> != 0 and $< != 0) { print STDERR "Only root wants to run start-memcached.\n"; exit; } my $etcfile = shift || "/etc/memcached.conf"; my $params = []; my $etchandle; # This script assumes that memcached is located at /usr/bin/memcached, and # that the pidfile is writable at /var/run/memcached.pid my $memcached = "/usr/local/bin/memcached"; my $pidfile = "/var/run/memcached.pid"; # If we don't get a valid logfile parameter in the /etc/memcached.conf file, # we'll just throw away all of our in-daemon output. We need to re-tie it so # that non-bash shells will not hang on logout. Thanks to Michael Renner for # the tip my $fd_reopened = "/dev/null"; sub handle_logfile { my ($logfile) = @; $fd_reopened = $logfile; } sub reopen_logfile { my ($logfile) = @; open STDERR, ">>$logfile"; open STDOUT, ">>$logfile"; open STDIN, ">>/dev/null"; $fd_reopened = $logfile; } # This is set up in place here to support other non -[a-z] directives my $conf_directives = { "logfile" => &handle_logfile }; if (open $etchandle, $etcfile) { foreach my $line () { $line =~ s/#.//go; $line = join ' ', split ' ', $line; next unless $line; next if $line =~ /^-[dh]/o; if ($line =~ /[1]/o) { my ($directive, $arg) = $line =~ /^(.?)\s+(.)/; $conf_directives->{$directive}->($arg); next; } push @$params, $line; } } unshift @$params, "-u root" unless (grep $_ eq '-u', @$params); $params = join " ", @$params; if (-e $pidfile) { open PIDHANDLE, "$pidfile"; my $localpid = ; close PIDHANDLE; chomp $localpid; if (-d "/proc/$localpid") { print STDERR "memcached is already running.\n"; exit; } else { rm -f $localpid; } } my $pid = fork(); if ($pid == 0) { reopen_logfile($fd_reopened); exec "$memcached $params"; exit(0); } elsif (open PIDHANDLE,">$pidfile") { print PIDHANDLE $pid; close PIDHANDLE; } else { print STDERR "Can't write pidfile to $pidfile.\n"; }

5. ** Start the Memcached Daemon **

We will now start the daemon. (it is ok if “shutting down memcached” says fail.)

/etc/init.d/memcached restart #Shutting down memcached: [ OK ] #Starting memcached: [ OK ]

Make sure its running by:

ps aux | grep memcached #nobody 5966 0.5 0.3 18248 16444 pts/0 S 13:55 0:00 /usr/local/bin/memcached -u root -m 16 -p 11211 -u nobody -l 127.0.0.1

** 6. Set Memcached to run at startup: **

/sbin/chkconfig memcached on /sbin/chkconfig --list | grep memcached #memcached 0ff 1ff 2n 3n 4n 5n 6ff

7. Install ** PHP Memcache Extension **

Download the latest stable version of memcache from http://pecl.php.net/package/memcache
Download and Install

wget http://pecl.php.net/get/memcache-2.2.6.tgz tar xvf memcache-2.2.6.tgz cd memcache-2.2.6 phpize ./configure && make && make install

** 8. Update php.ini Configuration**

Create an empty file called test.php and place this in it:

Determine what php.ini file is configured.

php -f test.php | grep "Loaded Configuration File" #Loaded Configuration File => /usr/local/lib/php.ini

Now open /usr/local/lib/php.ini with your favorite text editor and find the “Dynamic Extensions” section.
Add this

extension=memcache.so

Now restart apache with:

service httpd restart

9. Check to make sure the extension is enabled

Run the command:

php -f test.php | grep "memcache support"

This should return “enabled” if everything is good.

memcache support => enabled

If this command does not return any thing the memcache plugin did not load correctly.
You can now delete test.php, your memcache installation should be functional.

Original article (link)
Thank you.


  1. ^- ↩︎

Written on 17 April 2012

Share your thoughts