How To Install memcached with memcache PHP Extension on CentOS 5.x

on August 23 | in Hosting / Servers, Linux | by | with 33 Comments

In this how to i will describe how to install memcached on your server with PHP Extension.  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. My server is running CentOS 5.3 with CPanel.

1) Install memcached.

Enable rpmforge respository to install latest memcached rpm using yum.

For i386 / i686

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

For x86_64

rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

Use yum to install memcached

yum -y install memcached

As soon as memcached installation completed, edit options for memcached in /etc/sysconfig/memcached to meet your need.

vi /etc/sysconfig/memcached

PORT=”11211″                #define on which port to urn
USER=”nobody”           #same as apache user
MAXCONN=”1024″     #maximum number of connections allowed
CACHESIZE=”64″         #memory used for caching
OPTIONS=”"                   #use for any custom options

Save the file. All options can be seen by using following command

memcached -h

Start memcached

/etc/init.d/memcached start
Starting Distributed memory caching (memcached):           [  OK  ]

to check the running status of memcached

/etc/init.d/memcached status
memcached (pid 6475) is running…

and

netstat -anp | grep 11211
tcp  0  0 :::11211    :::*  LISTEN      6475/memcached
udp 0  0 0.0.0.0:11211  0.0.0.0:* 6475/memcached

2) Install PHP Extension.

Download and install latest stable memcache version from PECL.

cd /usr/src
wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure
make
make install

memcache.so will be install in php modules directory, now enable memcache.so extension in php.ini

To find out your php.ini location, execute following command

php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini

vi /usr/local/lib/php.ini

extension = “memcache.so”

save the file and restart httpd server.

/etc/init.d/httpd restart

To check is memcache extension loaded in php, execute following command.

php -i | grep memcache
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 8192 => 8192
memcache.default_port => 11211 => 11211
memcache.default_timeout_ms => 1000 => 1000
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => standard => standard
memcache.max_failover_attempts => 20 => 20
Registered save handlers => files user sqlite memcache
PWD => /usr/src/memcache-2.2.5
_SERVER["PWD"] => /usr/src/memcache-2.2.5
_ENV["PWD"] => /usr/src/memcache-2.2.5

This information can also be seen using phpinfo().

If you have question please comment.

pixelstats trackingpixel
Pin It

related posts

33 Responses to How To Install memcached with memcache PHP Extension on CentOS 5.x

  1. [...] Below are exact steps for the installation: How To Install memcached with memcache PHP Extension on CentOS 5.x | Sohail Riaz, Linux and Open Sou… How to install memcache on linux server How to install memcache on linux server? | Linux Windows [...]

  2. [...] memcache.max_failover_attempts 20 20 I have found how to install it for centos 5, here: How To Install memcached with memcache PHP Extension on CentOS 5.x | Sohail Riaz, Linux and Open Sou… If i cat't post links, please delete the link… sorry But i still have errors: [...]

  3. I have done all but it doen’t work, I am running 5.3.2, I had to recompile php to support libcurl, now I broken memcached and I am stuck with it.

  4. Sohail Riaz says:

    @Islam: Which Linux Version you are using. You said it doesn’t work and in mean time you said when you compile php with libcurl it broke memcached?
    ————
    Regards,

  5. @Souhail: it’s a centos, kernel 2.6.18 ..
    there is no relationship between libcurl and memcached, the only thing is that after I recompiled PHP, libcurl worked, and memcached not, I tried many times with too versions of the package and nothing! PHP is version 5.3.2

  6. Sohail Riaz says:

    @Islam: I knew there is no relationship between libcurl and memcached. All you have to do is recompile PHP and then reinstall memcached using the source because it uses phpize to determine the PHP version, so you need to reinstall memcached everytime you recompile PHP.
    It will be good if you posted any error which you facing while installing memcached
    ——————–

  7. Thank you Sohail, I got it working now.
    I was phpizing against the wrong version of php, .. another thing is that extension = “memcache.so” doesn’t work with the ” ” , maybe you should fix that in the tutorial.
    thank you very much for your help.

  8. dtkirby says:

    This was right on the money. Thanks for posting it.

  9. yarco says:

    The check step could be done before starting apache.
    And if you are using drupal, dont forget to set:

    memcache.hash_strategy = “consistent”

    for drupal memcache module.

  10. ronan says:

    Had these errors when ./configure

    checking for the location of ZLIB… no
    checking for the location of zlib… configure: error: memcache support requires ZLIB. Use –with-zlib-dir= to specify prefix where ZLIB include and library are located

    did this :
    ./configure –with-zlib-dir=/usr/include

    worked fine .

    when i typed make …
    /usr/src/memcache-2.2.5/memcache.c:34:18: error: zlib.h: No such file or directory
    /usr/src/memcache-2.2.5/memcache.c: In function ‘php_memcache_init_globals’:
    /usr/src/memcache-2.2.5/memcache.c:255: error: ‘Z_DEFAULT_COMPRESSION’ undeclared (first use in this function)
    /usr/src/memcache-2.2.5/memcache.c:255: error: (Each undeclared identifier is reported only once
    /usr/src/memcache-2.2.5/memcache.c:255: error: for each function it appears in.)
    /usr/src/memcache-2.2.5/memcache.c: In function ‘mmc_compress’:
    /usr/src/memcache-2.2.5/memcache.c:839: error: ‘Z_OK’ undeclared (first use in this function)
    /usr/src/memcache-2.2.5/memcache.c:846: error: ‘Z_MEM_ERROR’ undeclared (first use in this function)
    /usr/src/memcache-2.2.5/memcache.c:849: error: ‘Z_BUF_ERROR’ undeclared (first use in this function)
    /usr/src/memcache-2.2.5/memcache.c:852: error: ‘Z_STREAM_ERROR’ undeclared (first use in this function)
    /usr/src/memcache-2.2.5/memcache.c: In function ‘mmc_uncompress’:
    /usr/src/memcache-2.2.5/memcache.c:876: error: ‘Z_BUF_ERROR’ undeclared (first use in this function)
    /usr/src/memcache-2.2.5/memcache.c:878: error: ‘Z_OK’ undeclared (first use in this function)

    any clues ?

  11. Sohail Riaz says:

    @ronan: check whether you have install zlib-devel package.

    Regards,

  12. jeff says:

    didn’t work on centos 5.5

    perl-AnyEvent-5.240-1.el5.rf.noarch from rpmforge has depsolving problems
    –> Missing Dependency: perl(Net::SSLeay) >= 1.33 is needed by package perl-AnyEvent-5.240-1.el5.rf.noarch (rpmforge)
    Error: Missing Dependency: perl(Net::SSLeay) >= 1.33 is needed by package perl-AnyEvent-5.240-1.el5.rf.noarch (rpmforge)
    You could try using –skip-broken to work around the problem
    You could try running: package-cleanup –problems
    package-cleanup –dupes
    rpm -Va –nofiles –nodigest

  13. suvro says:

    root@v-88 [/home]# yum -y install memcached
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * addons: http://ftp.lug.udel.edu
    * base: hpc.arc.georgetown.edu
    * extras: mirror.batblue.com
    * rpmforge: fr2.rpmfind.net
    * updates: mirror.cs.vt.edu
    addons | 951 B 00:00
    base | 2.1 kB 00:00
    extras | 2.1 kB 00:00
    rpmforge | 1.1 kB 00:00
    updates | 1.9 kB 00:00
    Excluding Packages in global exclude list
    Finished
    Setting up Install Process
    Resolving Dependencies
    –> Running transaction check
    —> Package memcached.i386 0:1.4.5-1.el5.rf set to be updated
    –> Processing Dependency: perl(AnyEvent) for package: memcached
    –> Processing Dependency: perl(AnyEvent::Socket) for package: memcached
    –> Processing Dependency: perl(AnyEvent::Handle) for package: memcached
    –> Processing Dependency: libevent-1.1a.so.1 for package: memcached
    –> Processing Dependency: perl(YAML) for package: memcached
    –> Processing Dependency: perl(Term::ReadKey) for package: memcached
    –> Running transaction check
    —> Package compat-libevent-11a.i386 0:3.2.1-1.el5.rf set to be updated
    —> Package memcached.i386 0:1.4.5-1.el5.rf set to be updated
    –> Processing Dependency: perl(AnyEvent) for package: memcached
    –> Processing Dependency: perl(AnyEvent::Socket) for package: memcached
    –> Processing Dependency: perl(AnyEvent::Handle) for package: memcached
    –> Processing Dependency: perl(YAML) for package: memcached
    –> Processing Dependency: perl(Term::ReadKey) for package: memcached
    –> Finished Dependency Resolution
    memcached-1.4.5-1.el5.rf.i386 from rpmforge has depsolving problems
    –> Missing Dependency: perl(YAML) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    memcached-1.4.5-1.el5.rf.i386 from rpmforge has depsolving problems
    –> Missing Dependency: perl(Term::ReadKey) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    memcached-1.4.5-1.el5.rf.i386 from rpmforge has depsolving problems
    –> Missing Dependency: perl(AnyEvent::Socket) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    memcached-1.4.5-1.el5.rf.i386 from rpmforge has depsolving problems
    –> Missing Dependency: perl(AnyEvent::Handle) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    memcached-1.4.5-1.el5.rf.i386 from rpmforge has depsolving problems
    –> Missing Dependency: perl(AnyEvent) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    Error: Missing Dependency: perl(Term::ReadKey) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    Error: Missing Dependency: perl(AnyEvent) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    Error: Missing Dependency: perl(YAML) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    Error: Missing Dependency: perl(AnyEvent::Handle) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    Error: Missing Dependency: perl(AnyEvent::Socket) is needed by package memcached-1.4.5-1.el5.rf.i386 (rpmforge)
    You could try using –skip-broken to work around the problem
    You could try running: package-cleanup –problems
    package-cleanup –dupes
    rpm -Va –nofiles –nodigest
    The program package-cleanup is found in the yum-utils package.

    how to fix this

  14. Daniel says:

    suvro, i have the same problem here, you found a solution?

  15. Andre says:

    Same problem here too :(

  16. Vijay says:

    Thanks a million, you save my life.. Thanx n keep it up.

  17. Parag says:

    Hi,
    I get this conflict message when I run the command

    $rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

    Retrieving http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
    Preparing… ########################################### [100%]
    file /etc/smart/channels/rpmforge.channel from install of rpmforge-release-0.3.6-1.el5.rf.x86_64 conflicts with file from package rpmforge-release-0.3.6-1.el5.rf.i386
    file /etc/sysconfig/rhn/sources.rpmforge.txt from install of rpmforge-release-0.3.6-1.el5.rf.x86_64 conflicts with file from package rpmforge-release-0.3.6-1.el5.rf.i386

    Any reason why I do not see the expected output?

  18. Anshu says:

    Thanks man. You came as a rescue for me. Cheers.

  19. diocio says:

    Some friend segest me to not use memcached because it will burden your server with many file. is’t true or not ?

  20. emre macit says:

    Of course not, it keeps cache on the memory, not in files.

  21. chris says:

    Hi

    I followed the tut, and everything worked fine until i got to check is memcache extension loaded in php then i get this error :

    [root@s******** memcache-2.2.5]# php -i | grep memcache
    Failed loading /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so: /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so: cannot open shared object file: No such file or directory
    PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/memcache.so’ – /usr/lib64/php/modules/memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0
    PWD => /usr/src/memcache-2.2.5
    _SERVER["PWD"] => /usr/src/memcache-2.2.5
    _ENV["PWD"] => /usr/src/memcache-2.2.5

    I think the first to lines referencing xcache are from a deleted attempt to install xcache.
    the memcache.so file is where it says it is.
    all that is in the file is : []ELF-

    Has anyone got an idea what has gone wrong please

  22. chris says:

    sorry ment so say im running centos 5.7
    my kernel is Linux 2.6.18-274.17.1.el5 on x86_64

  23. rémy says:

    nice tutorial – thx

  24. Curtis says:

    Very good tutorial. Thank you very much.

  25. deepak says:

    Hello,

    I have a LAMP(Linux, apache, mysql, php) server i want to use memcahe for better performance but my web server and db server are on different machine and i don’t know on which machine i should install memcache and php-memcache rpm ?

  26. Sohail Riaz says:

    @you need to install memcached on both your web and db server. Then compile php with memcache module on web server only. Make your memcached from db server accessiable and configure your php to access it as memcached using IP address/port of db server. We have done this with individual memcached servers as middle server between web and db server.

    ——–
    Regards,

  27. Vijay says:

    Thanks Man.. It worked in Mac Lion… I install memcahced and it work fine….. thank you…..

  28. mickeyze says:

    Thank you very much.
    Sarajevo

  29. Thank you so much. i was looking for a way to install memcache on my centos vps server.

    Robin.

  30. Working perfectly for me. I already see improvements on my server load. Thanks

  31. Umesh says:

    Thank you very much.. :) It works perfectly..

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

« »