linux下 memcached-1.4.5 安装
一. 安装:libevent
下载地址:http://www.monkey.org/~provos/libevent/
./configure --prefix=/usr/local/libevent
make && make install
二. 安装:memcached
下载地址:http://code.google.com/p/memcached/downloads/list
wget http://memcached.org/latest
tar -zxvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure --prefix=/usr/local/memcache --with-libevent=/usr/local/libevent/
make && make install
错误1:
安装包的时候运行./configure --prefix=/usr/local/memcache --with-libevent=/usr/local/libevent/ 时出现下面的提示:
checking build system type... Invalid configuration `i686-pc-linux-': machine `i686-pc-linux' not recognized
configure: error: /bin/sh config/config.sub i686-pc-linux- failed
解决方法:
./configure --prefix=/usr/local/memcache --with-libevent=/usr/local/libevent/ --build=i686-pc-linux-gnu
错误2:
configure: error: no acceptable C compiler found in $PATH
解决方法:
yum install gcc
./configure --prefix=/usr/local/memcache --with-libevent=/usr/local/libevent/
make && make install
三. 启动服务 :
/usr/local/memcache/bin/memcached
memcached -d -m 10 -u root -l 192.168.40.4 -p 12000 -c 256 -P /tmp/memcached.pid (完整启动)
memcached -d -m 1024 -u root -p 55001 -c 2048 (默认启动)
默认端口;11211
参数说明:
-d选项是启动一个守护进程
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB
-u是运行Memcache的用户,我这里是root
-l是监听的服务器IP地址
-p是设置Memcache监听的端口,最好是1024以上的端口
-c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
-P是设置保存Memcache的pid文件
-vv 调试模式
在启动memcache时会遇到如下的错误
[root@crs2 memcached-1.4.5]# ./memcached -d -m 64 -u root -p 55001 -c 2048
./memcached: error while loading shared libraries: libevent-2.0.so.2: cannot open shared object file: No such file or directory
解决方法:
[root@crs2 memcached-1.4.5]# LD_DEBUG=libs /usr/local/memcache/bin/memcached -v
9957: find library=libevent-2.0.so.2 [0]; searching
9957: search cache=/etc/ld.so.cache
9957: 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/i686:/usr/lib/sse2:/usr/lib (system search path)
9957: trying file=/lib/tls/i686/sse2/libevent-2.0.so.2
9957: trying file=/lib/tls/i686/libevent-2.0.so.2
9957: trying file=/lib/tls/sse2/libevent-2.0.so.2
9957: trying file=/lib/tls/libevent-2.0.so.2
9957: trying file=/lib/i686/sse2/libevent-2.0.so.2
9957: trying file=/lib/i686/libevent-2.0.so.2
9957: trying file=/lib/sse2/libevent-2.0.so.2
9957: trying file=/lib/libevent-2.0.so.2
9957: trying file=/usr/lib/tls/i686/sse2/libevent-2.0.so.2
9957: trying file=/usr/lib/tls/i686/libevent-2.0.so.2
9957: trying file=/usr/lib/tls/sse2/libevent-2.0.so.2
9957: trying file=/usr/lib/tls/libevent-2.0.so.2
9957: trying file=/usr/lib/i686/sse2/libevent-2.0.so.2
9957: trying file=/usr/lib/i686/libevent-2.0.so.2
9957: trying file=/usr/lib/sse2/libevent-2.0.so.2
9957: trying file=/usr/lib/libevent-2.0.so.2
9957:
/usr/local/memcache/bin/memcached: error while loading shared libraries: libevent-2.0.so.2: cannot open shared object file: No such file or directory
创建了软连接就可以解决
[root@crs2 memcached-1.4.5]# ln -s /usr/local/libevent/lib/libevent-2.0.so.2 /lib/libevent-2.0.so.2
这时,再启动memcached 就可以了
[root@crs2 memcached-1.4.5]# ./memcached -d -m 64 -u root -p 55001 -c 2048
登录memcache
[root@crs2 memcached-1.4.5]# telnet 127.0.0.1 55001
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
stats
STAT pid 9963
STAT uptime 307
STAT time 1292559170
STAT version 1.4.5
STAT pointer_size 32
STAT rusage_user 0.000000
STAT rusage_system 0.043993
STAT curr_connections 10
STAT total_connections 11
STAT connection_structures 11
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 7
STAT bytes_written 0
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT evictions 0
STAT reclaimed 0
END
quit
Connection closed by foreign host.
四、配置为自启动服务
1.编写memcached自启动脚本或直接使用memcached安装包中的脚本(位置如下,本文使用官方自带的脚本)
2.修改自启动脚本(红色部分标识,中文注释仅限本文提示用,安装包没有)
#! /bin/sh # # chkconfig: - 55 45 # description: The memcached daemon is a network memory cache service. # processname: memcached # config: /etc/sysconfig/memcached
# Source function library - for other linux #. /etc/rc.d/init.d/functions # Source function library - for SUSE linux . /lib/lsb/init-functions
PORT=11211 USER=root #最大连接数,根据实际需求修改 MAXCONN=1024 #最大内存量,单位M CACHESIZE=128 OPTIONS=""
if [ -f /etc/sysconfig/memcached ];then . /etc/sysconfig/memcached fi
# Check that networking is up. if [ "$NETWORKING" = "no" ] then exit 0 fi
RETVAL=0 prog="memcached"
start () { echo -n $"Starting $prog: " # insure that /usr/local/memcached has proper permissions chown $USER /usr/local/memcached /usr/local/memcached/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /usr/local/memcached/memcached.pid $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached } stop () { echo -n $"Stopping $prog: " killproc memcached RETVAL=$? echo if [ $RETVAL -eq 0 ] ; then rm -f /var/lock/subsys/memcached rm -f /usr/local/memcached/memcached.pid fi }
restart () { stop start }
# See how we were called. case "$1" in start) start ;; stop) stop ;; status) status memcached ;; restart|reload) restart ;; condrestart) [ -f /var/lock/subsys/memcached ] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" exit 1 esac
exit $? |
3.将此脚本cp到/etc/init.d目录下并改名为memcached,然后执行chmod a+x memcached,如下:
shell > cp memcached.sysv /etc/init.d/memcached
shell > chmod 755 /etc/init.d/memcached
4.将memcached加入系统服务:
shell > chkconfig --add memcached
shell > chkconfig memcached on
5.以服务方式运行memcached
shell > service memcached start
以上如成功则重启下系统后查看下memcached是否已随系统启动
====================================================
示例:
#!/bin/sh
#
# memcached: MemCached Daemon
#
# chkconfig: - 90 25
# description: MemCached Daemon
#
# Source function library.
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
start()
{
echo -n $"Starting memcached: "
daemon /usr/local/bin/memcached -u daemon -d -m 4096 -l 10.10.10.220 -p 58728
echo
}
stop()
{
echo -n $"Shutting down memcached: "
killproc memcached
echo
}
[ -f /usr/local/bin/memcached ] || exit 0
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
condrestart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|condrestart}"
exit 1
esac
exit 0
=======================================================
[root@crm ~]# chkconfig --add memcached
[root@crm ~]# chkconfig --level 3 memcached on
[root@crm ~]# chkconfig --list | grep mem
memcached 0:off 1:off 2:off 3:on 4:off 5:off 6:off
[root@crm ~]# /etc/rc.d/init.d/memcached restart
Shutting down memcached: [ OK ]
Starting memcached: [ OK ]
[root@crm ~]# ps aux | grep mem
daemon 23781 0.0 0.2 13892 9860 ? Ss 16:51:00 /.../memcached -u daemon -d -m 1024 -l 172.16.0.106 -p 11211