Linux CentOS7安装memcached
由于项目中需要供应商接入我们的服务器进行调试,他们项目环境用到memcached,所以我要在服务器上安装memcached但遇到了比较坑的问题,如下记录。
安装:
memcached依赖于libevent库
一、下载解压包:
libevent压缩包: wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
memcached压缩包:wget http://memcached.org/files/old/memcached-1.4.4.tar.gz
二、都解压到/usr/local;
三、先安装libevent,再安装memcached
- 先安装libevent:
cd libevent-2.0.22-stable
./configure –prefix=/usr
make && make install
测试libevent是否安装成功:
ls -al /usr/lib | grep libevent 看到类似下图说明安装成功:
2.再安装memcached:
cd memcached-1.4.22
./configure --with-libevent=/usr --enable-64bit --enable-threads
make && make install
注意:
①在make编译时会报错:memcached.c: In function ‘process_bin_get’:
memcached.c:1193:9: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] 注意这个-Werror
出现此错误的原因是Makefile文件中做了 “视警告为错误”的配置 。
我们只需要利用vi修改 memcache安装目录下的Makefile文件即可:
查找并修改CFLAGS 的值,将-Werror参数去掉,保存退出再次执行make编译即可。
②默认memcached单个进程只支持到2G内存,需要更大内存支持的话,需要打开64位支持,编译的时候加参数:
–enable-64bit
测试是否安装成功:
ls –al /usr/local/bin/memcached 看到类似下图说明安装成功:
现阶段:安装完成memcached
启动memcached:(218:11211)
启动命令:/usr/local/bin/memcached -d -u root -l zjbigdata133 -p 11211 -P /tmp/memcache.pid
-d:后台运行
-p:监听端口
-P:设置保存Memcache的pid文件。
启动报错:
[[email protected] memcached-1.4.4]# /usr/local/bin/memcached -d -u root -l zjbigdata133 -p 11211 -P /tmp/memcache.pid
/usr/local/bin/memcached: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
表示memcached找不到libevent-2.1.so.6的位置
解决方法:
-
whereis libevent-2.1.so.6 查看这个文件的位置;
-
要知道memcached去是哪些目录查找libevent动态库的 :
LD_DEBUG=libs /usr/local/memcached/bin/memcached -v
打印如下类似信息:
可以看到memcached会去/lib64目录和/usr/lib64目录下找libevent-2.1.so.6文件,
我们只需把libevent-2.1.so.6链接到这两个目录
ln -s /usr/lib/libevent-2.1.so.6 /lib64/
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64
—————————————————————————————————————————————
本文为个人记录所用,如有侵权/错误,恳请指出 (╹▽╹)…