Fractaliste
Fractaliste

Reputation: 5957

How to install memcached with PHP55

First my web server run on Redhat6.6 and I need to build PHP by my own to enable Sybase support.

Today I want to enable memcached support.

To my knowledge I can't use yum install php55-php-pecl-memcached.x86_64 because it would also install the default php package as dependency, and make memcached enable only for its php dependency.

I looked into PECL packages, but it seems to be available for PHP5.2 only.

I installed libmemcached-devel.x86_64 but I can't phpize it because it miss some files into libmemcached folder, it seems not to be sources that phpize needs...

What can I do more

Upvotes: 2

Views: 1708

Answers (1)

unixmiah
unixmiah

Reputation: 3143

Start from scratch and there is a good way of doing it.

Install memcached through RPM

The easiest way to install Memcached is through a package manager such as yum or apt (in your case yum because its redhat). However, Memcached is not available from the default collection of packages, so the first thing we need to do is add a new RPM (Red Hat Package Manager) server so that we can install Memcached through yum.

One of the best 3rd-party RPM servers is provided by Dag Wieers, which will provide us with up-to-date packages that are not provided by Red Hat directly. The one tricky part of setting up an RPM server is making sure you get the repository that matches your server version and architecture (32-bit or 64-bit). So we need to collect that information first.

From a shell prompt, get the CentOS/RedHat version number:

$ cat /etc/redhat-release
CentOS release 5.3 (Final)

Then get the server architecture information. This is a typical response for a 32-bit machine:

$ uname -a

Linux server1.example.com 2.6.18-92.1.13.el5 #1 SMP Wed Sep 24 19:33:52 EDT 2008 i686 i686 i386 GNU/Linux

Or if you have a 64-bit machine you will probably get something like this:

$ uname -a

Linux server.example.com 2.6.18-53.1.21.el5 #1 SMP Tue May 20 09:35:07 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux

Now install the RPM server that matches your architecture and CentOS version from http://dag.wieers.com/rpm/FAQ.php#B2.

The server I was using when I wrote this was a 32-bit machine running CentOS version 5.x. So my particular server was:

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

To install a new RPM server, we can just use the rpm command. Note that you must find the RPM server string that matches your architecture and software. Do not use the URL unless you have a 32-bit machine running CentOS 5.x, instead get the server that's appropriate from http://dag.wieers.com/rpm/FAQ.php#B2.

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

Now we can simply use yum (or apt) to install Memcached:

$ yum install memcached

Afterwards you can confirm memcached is up and running by calling it.

$ memcached -h

memcached 1.2.6

Install the Memcache PECL Extension

Even though memcached is happily running on the server, it's not accessible from PHP without the PECL extension. Fortunately this is a very easy process, just use the pecl command.

$ pecl install memcache

Then add the memcache extension to your php.ini file, usually at /etc/php.ini.

extension=memcache.so

And finally restart Apache so that it will pick up the new extension:

$ /etc/init.d/apache2 restart

Running phpinfo() on your webserver should now confirm that memcache is installed:

The output of phpinfo() showing that memcache is successfully installed Set up Memcached as a service

Just having memcache installed will not do anything by itself, we need to actually start up some instances of it for our web server to connect to, and we need memcached to automatically start up when the server restarts.

For this we need to install a new script at /etc/init.d/memcached. For this I usually use a custom script that's a bit crude, since it assumes that memcached is being used exclusively for our web server. However, most of the time this is true and it works just fine.

Download the memcached script (rename to just "memcached").

So simply load this script into /etc/init.d. Then set the permissions on it to make it executable:

$ chmod 755 memcached

Then register the script to start up with the server:

$ chkconfig --add memcached

Now you can start up memcached as a service.

$ service memcached start

And you can confirm that memcached has fired up several instances by checking ps.

$ ps -e | grep memcached
22805 ?        00:00:59 memcached
22807 ?        00:00:58 memcached
22809 ?        00:01:16 memcached
22811 ?        00:00:55 memcached
22813 ?        00:00:01 memcached
22815 ?        00:01:02 memcached
22817 ?        00:00:27 memcached
22819 ?        00:00:35 memcached
22821 ?        00:00:01 memcached
22823 ?        00:00:01 memcached
22825 ?        00:00:01 memcached

Upvotes: 1

Related Questions