实现memcached的编译安装及将memcached添加为系统服务

一.编译安装memcached

[plain] view plain copy 在CODE上查看代码片派生到我的代码片

  1. # yum install libevent libevent-devel -y //memcached借助libevent与客户端通信是来实现的,所以需要先安装libevent,libevent-devel  

  2. # cd /usr/local/src  

  3. # wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz  

  4. # tar -xvzf memcached-1.4.5.tar.gz  

  5. # cd memcached-1.4.5  

  6. # ./configure --prefix=/usr/local/memcached  

  7. # make && make install  


至此,memcached就安装成功。可以以下方式开启memcached守护进程,使用默认端口11211



[plain] view plain copy 在CODE上查看代码片派生到我的代码片

  1. # /usr/local/memcached/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 64 -P /tmp/memcached.pid  

  2. -d选项是启动一个守护进程,  

  3. -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,  

  4. -u是运行Memcache的用户,我这里是root,  

  5. -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,  

  6. -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,  

  7. -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,  

  8. -P是设置保存Memcache的pid文件,我这里是保存在/tmp/memcached.pid  


二.添加memcached为系统服务


1.拷贝memcached源码包的memcached.sysv拷贝到/etc/init.d,做为memcached的启动脚本

[plain] view plain copy 在CODE上查看代码片派生到我的代码片

  1. # cp /usr/local/src/memcached-1.4.5/scripts/memcached.sysv /etc/init.d/memcached //将memcached源码包的memcached.sysv拷贝到/etc/init.d,做为memcached的启动脚本  


2.修改/etc/init.d/memcached


[plain] view plain copy 在CODE上查看代码片派生到我的代码片

  1. # vim /etc/init.d/memcached  //修改USER等,需要修改的都用//表示  

  2. #!/bin/sh  

  3. #  

  4. # chkconfig: - 55 45  

  5. # description:  The memcached daemon is a network memory cache service.  

  6. # processname: memcached  

  7. # config: /etc/sysconfig/memcached  

  8.   

  9. # Source function library.  

  10. . /etc/rc.d/init.d/functions  

  11.   

  12. PORT=11211  

  13. USER=root  //更改用户为root  

  14. MAXCONN=64  

  15. CACHESIZE=10  

  16. OPTIONS=""  

  17.   

  18. if [ -f /etc/sysconfig/memcached ];then  

  19.     . /etc/sysconfig/memcached  

  20. fi  

  21.   

  22. # Check that networking is up.  

  23. if [ "$NETWORKING" = "no" ]  

  24. then  

  25.     exit 0  

  26. fi  

  27.   

  28. RETVAL=0  

  29. prog="memcached"  

  30.   

  31. start () {  

  32.     echo -n $"Starting $prog: "  

  33.     # insure that /var/run/memcached has proper permissions  

  34.     # chown $USER /usr/local/memcached  //在此行前加#注释此行,感觉没用  

  35.     daemon /usr/local/memcached/bin/memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P /tmp/memcached.pid $OPTIONS  //修改daemon memcached为daemon /usr/local/memcached/bin/memcached,不然/etc/init.d/memcached时会显示/bin/sh memcached command not found  

  36.     RETVAL=$?  

  37.     echo  

  38.     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached  

  39. }  

  40. stop () {  

  41.     echo -n $"Stopping $prog: "  

  42.     killproc memcached  

  43.     RETVAL=$?  

  44.     echo  

  45.     if [ $RETVAL -eq 0 ] ; then  

  46.         rm -f /var/lock/subsys/memcached  

  47.         rm -f /var/run/memcached.pid  

  48.     fi  

  49. }  

  50.   

  51. restart () {  

  52.     stop  

  53.     start  

  54. }  

  55.   

  56.   

  57. # See how we were called.  

  58. case "$1" in  

  59.     start)  

  60.         start  

  61.         ;;  

  62.     stop)  

  63.     stop  

  64.     ;;  

  65.     status)  

  66.     status memcached  

  67.     ;;  

  68.     restart|reload)  

  69.     restart  

  70.     ;;  

  71.     condrestart)  

  72.     [ -f /var/lock/subsys/memcached ] && restart || :  

  73.     ;;  

  74.     *)  

  75.     echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"  

  76.     exit 1  

  77. esac  

  78.   

  79. exit $?  


3.添加系统服务


[plain] view plain copy 在CODE上查看代码片派生到我的代码片

  1. # chmod 755 /etc/init.d/memcached  

  2. # chkconfig --add memcached    

  3. # chkconfig memcached on  

  4. # service memcached start  //开启memcached服务  

save_snippets.png