装载自: http://blog.myspace.cn/e/406998844.htm
作者:木易水瓶
基于Rhel 5.3 布署Memcache
一、libevent 安装:
由于memcached安装时,需要使用libevent类库,所以先安装libevent
libevent下载网址:http://www.monkey.org/~provos/libevent/
libevent-1.4.12-stable.tar.gz版本安装步骤如下:
1). 解压缩
tar xzfv libevent-1.4.12-stable.tar.gz
2). 进入到 libevent-1.4.12-stable目录
cd libevent-1.4.12-stable
3). 编译,安装
./configure
make
make install
注:默认安装到/usr/local/lib/ 目录

二、安装memcached
memcached下载网址:http://www.danga.com/memcached/download.bml
我下载的是 memcached-1.4.5.tar.gz版本
安装步骤如下:
1). 解压缩
tar xzfv memcached-1.4.5.tar.gz
2). 进入到 memcached-1.4.5目录
cd memcached-1.4.5
3). 编译,安装
./configure --prefix=/usr/local/memcached
make
make install
安装完成后,会在 /usr/local/memcached 出现 bin和share目录
进行 bin目录,启动 memcache
方法如下:
./memcached -d -u nobody -m 512 127.0.0.1 -p 9000
此时,会报一个异常
error while loading shared libraries: libevent-1.4.so.2: cannot open shared object
file: No such file or directory
原因是找不到libevent-1.4.so.2类库,解决办法如下:
使用LD_DEBUG=help ./memcached -v来确定 加载的类库路径,方法如下:
LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less
则系统会显示:
linux:/local/memcached/bin # LD_DEBUG = libs ./memcached -v 2 >& 1 > /dev/null |
less
20421 :     find library = libevent- 1.4 .so .2 ; searching
20421 :      search cache = /etc/ld.so.cache
20421 :      search path =
/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/
sse2:/lib:/usr/lib/tls/i686
/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr/lib/i68
6:/usr/lib/sse2:/usr/lib          (system search path)
20421 :       trying file = /lib/tls/i686/sse2/libevent- 1.4 .so .2
20421 :       trying file = /lib/tls/i686/libevent- 1.4 .so .2
20421 :       trying file = /lib/tls/sse2/libevent- 1.4 .so .2
20421 :       trying file = /lib/tls/libevent- 1.4 .so .2
20421 : trying file = /lib/i686/libevent- 1.4 .so .2
20421 :       trying file = /lib/sse2/libevent- 1.4 .so .2
20421 :       trying file = /lib/libevent- 1.4 .so .2
20421 :       trying file = /usr/lib/tls/i686/sse2/libevent- 1.4 .so .2
20421 :       trying file = /usr/lib/tls/i686/libevent- 1.4 .so .2
20421 :       trying file = /usr/lib/tls/sse2/libevent- 1.4 .so .2
20421 :       trying file = /usr/lib/tls/libevent- 1.4 .so .2
20421 :       trying file = /usr/lib/i686/sse2/libevent- 1.4 .so .2
20421 :       trying file = /usr/lib/i686/libevent- 1.4 .so .2
20421 :       trying file = /usr/lib/sse2/libevent- 1.4 .so .2
20421 :       trying file = /usr/lib/libevent- 1.4 .so .2
20421 :
./memcached: error while loading shared libraries: libevent- 1.4 .so .2 : cannot open
shared object file: No such file or directory
我们看到,memcached会到很多地方去找,所以根据其它求,我们只需建一个软链接,指定到我们
安装的类库上即可,或者在LD_LIBRARY_PATH动态库环境变量加上libevent-1.4.so.2 
方法1如下:
ln -s /usr/local/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2

方法2如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
另外,把这个命令,写到/etc/profile文件中,用source /etc/profile执行生效。
方法3如下:
./configure –with-libevent=/usr/local/libevent 在编译的时候,指定libevent路径。

现在可以正常启动memcached了
./memcached -d -u nobody -m 512 127.0.0.1 -p 9000
到这里,看到memcached已经启动,说明安装成功。
如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。
memcache启动参数说明:
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是512MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址127.0.0.1,
-p是设置Memcache监听的端口,我这里设置了9000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid
三、安装Php Memcache 客户端扩展
#下载解压
$ wget http://pecl.php.net/get/memcache-2.2.5.tgz  (请在安装时选择最新稳定版)
$ tar -xvf memcache-2.2.5.tgz
$ cd memcache-2.2.5
#安装
$ /usr/local/php5/bin/phpize   (phpize 命令是用来准备 PHP 外挂模块的编译环境的)
./configure -enable-memcache -with-php-config=/opt/php5/bin/php-config --with-zlib-dir
$ make
$ make install
上述安装完后会有类似这样的提示:
Installing shared extensions: /opt/php5/lib/php/extensions/no-debug-non-zts-20060613/,含义是将memcache扩展安装到上面这个目录了。
 现在就需要修改php.ini了,
# vi /usr/local/lib/php.ini (需要先找到当前php所使用的ini文件),将php.ini中的extension_dir = “./” 修改为:extension_dir = “/opt/php5/lib/php/extensions/no-debug-non-zts-xxxxx/” 
注意:extension_dir目录根据你安装时上一步中的提示而定.
当然,如果你觉得这个目录很别扭,你可以在你觉得合适的位置新建一个php的extentions目录,然后将上边目录中的memcache.so拷贝到你新见的目录中,当然php.ini中的extension_dir也要改为你新建的目录。然后在后面加上一行,extension=memcache.so 
可以通过php命令查询扩展是否安装成功,如:
$ /opt/php5/bin/php -m
(这个命令会列出全部可使用的扩展,注意您的php安装目录,我的在/opt/php5/目录下) 
安装成功后查看phpinfo();
 
四、测试memcache 
< ?php
$mem = new Memcache;
$mem->connect('127.0.0.1', 9000);  //更改为您的服务器ip和相应端口
$mem->set('key', 'this is a test', 0, 60);
$val = $mem->get('key');
echo $val;
?>
运行该页面,如果出现“This is a memcache test!”表示成
五、加入开机启动
编辑 /etc/rc.local
在行尾加入
/usr/local/memcached/bin/memcached -d -m 512 -u nobody -l 127.0.0.1 -p 9000 -c 256 -P /tmp/memcached.pid
六、监控Memcached
memcached监控程序下载
这是一个memcached运行情况的小工具,可以在web方式下,监控memcached当前的缓存区使用 ,缓存命中率,并可在线查看缓存数据。您可以下载用于memcached状 态监控的php程序,解压上面文件,按照您的需要修改以下配置,请将其重命名为memcached.php,放入能够通 过web访问的目录,对memcached的运行状态进行监控。
// 访问监控程序的用户名
define('ADMIN_USERNAME','admin');
// 访问监控程序的密码
define('ADMIN_PASSWORD','admin');
// 显示的时间格式
define('DATE_FORMAT','Y/m/d H:i:s');
//展示缓存状态时生成的饼图的大小
define('GRAPH_SIZE',200);
//在查看item列表时,最多显示的item数目
define('MAX_ITEM_DUMP',50);
// 将希望监控的更多memcached服务器添加为数组元素
$MEMCACHE_SERVERS[] = '127.0.0.1:9000';
来源:http://wlog.com.cn/linux/linux-memcache-install.html



1. 编译memcached时出现下面错误:
./configure checking build system type… Invalid configuration `i686-pc-linux-’: machine `i686-pc-linux‘ not recognized configure: error: /bin/sh ./config.sub i686-pc-linux- failed
解决方法:
在./configure 时加入参数–build=i686-pc-linux-gnu
参考:http://wlog.com.cn/linux/linux-memcache-install.html