分类:
2010-08-09 20:15:52
基于Rhel 5.3 布署Memcache
一、libevent 安装:
由于memcached安装时,需要使用libevent类库,所以先安装libevent
libevent下载网址:~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下载网址:
我下载的是 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 (请在安装时选择最新稳定版) $ 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
$ /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; ?>
/usr/local/memcached/bin/memcached -d -m 512 -u nobody -l 127.0.0.1 -p 9000 -c 256 -P /tmp/memcached.pid
// 访问监控程序的用户名 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'; 来源:
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