YUM安装:

它依赖于libevent,不过这个一般都是系统自带的。另外我这里把Memcached安装到一个单独的服务器,其实生产环境中它也是单独部署的。

一般epel源中会有memcached,我们来看一下

1
yum list all memcached*

wKiom1iyzlriuhl-AADOwmva6Ng327.jpg

安装

wKiom1iyzoSyyIAjAAA-zhkve_g975.jpg

1
rpm -ql memcached  看一下生成的文件

第一个是服务脚本文件、第二个是配置文件、第三个和第四个是工具

wKioL1iyzqrwTiPGAADeHGHx1PI943.jpg

启动,用命令启动需要指定用户,YUM安装时会自动创建memcached用户。-vv是显示启动过程。由于没有加-d参数,所以是前台运行。

这里可以看到内存分配过程,默认的内存最大64M,默认chunk大小48字节,增长因子是1.25倍。

第一个是96,后面的10922是说分配了多少个96字节的chunk

第二个是120,它是961.25倍,后面的8738是分配了多少个96字节的chunk

后面一次类推。

wKioL1iyzybwscwOAADwSpQt7hw760.jpg

配置文件的内容也比较少

wKiom1iyzxeD2hP4AAA-vfsapTw181.jpg

我们以服务的形式启动

1
service memcached start

wKioL1iyz36w3jxOAAAqpts9jDk449.jpg

查看启动端口

wKiom1iyz5DgpdIgAABBjPeziYQ407.jpg


编译安装:

从这里下载最新版Memcached:http://memcached.org/

从这里下载libeventhttp://libevent.org/  

先编译安装libevent:因为编译安装memcached它会依赖这个库。

1
2
3
[] # tar -xzf libevent-2.1.8-stable.tar.gz 
[] # cd libevent-2.1.8-stable
[] # ./configure --prefix=/usr/local/libevent

wKioL1iy0iezIAoKAABZyG6-Ab4857.jpg

1
make  &&  make  install

wKiom1iy0orjobyYAABk9IFRiR0490.jpg

安装完成

wKiom1iy0xLBmU4vAAG1_Px9jzg596.jpg

安装Memcached

1
2
3
[] # tar -xzf memcached1.4.34.tar.gz
[] # cd memcached1.4.34
[] # ./configure --prefix=/usr/local/memcached1.4.34 --with-libevent=/usr/local/libevent/

wKioL1iy1EKhCrlMAABLkW1LuuA702.jpg

1
make  &&  make  install

wKiom1iy1HbRFjOBAACuTCor0Qw198.jpg

安装完毕

wKioL1iy1JvTMJrBAADyp14pIEw865.jpg创建运行账号

1
2
groupadd -r memcached
useradd  -r -g memcached -s  /sbin/nologin  memcached

wKiom1iy1RvSHDFxAAAqQP27qxk544.jpg

启动memcached,要切换到安装目录中的bin目录中,因为没有配置环境变量

1
. /memcached  -u memcached -d

wKiom1iy1cXwYxJBAABZ4DLBw9E496.jpg

添加一个环境变量

这样以后再执行memcached命令是就不需要切换目录了

1
2
3
4
5
6
7
8
9
vim  /etc/profile .d /memcached .sh
 
添加下面的内容:
#!/bin/bash
MC_PATH= /usr/local/memcached1 .4.34
export  PATH=$PATH:$MC_PATH /bin
 
chmod  +x  /etc/profile .d /memcached .sh
/etc/profile .d /memcached .sh

wKiom1iy1ruCSdhjAABBSUJQrG4021.jpg

验证一下

wKiom1iy10HxFWHiAAAreYAoLis095.jpg

设置成系统服务

memcached源码包中的scripts目录中自带这样一个脚本,拷贝到/etc/rc.d/init.d中即可

wKiom1iy1_rxk0r4AABKvTRe_N8427.jpg

1
2
3
4
5
cp  memcached.sysv  /etc/rc .d /init .d /memcached
chmod  +x  /etc/rc .d /memcached
chkconfig --add  /etc/rc .d /memcached
chkconfig --list |  grep  memcached
chkconfig memcached on

wKiom1iy2OSAjF-YAAB2yHVWaPA172.jpg

下面可以根据你的需要修改一下这个脚本,主要是启动参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#! /bin/sh
#
# chkconfig: - 55 45
# description:  The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached
 
# Source function library.
/etc/rc .d /init .d /functions
 
#设置你想要端口
PORT=11211
#设置运行账号
USER=memcached
#指定最大连接数量
MAXCONN=1024
#指定memcached使用的最大内存
CACHESIZE=64
OPTIONS= ""
#指定安装路径
MEMCACHED_BIN_PATH= /usr/local/memcached1 .4.34 /bin
 
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: "
     # 确保这个目录 /var/run/memcached 存在,并且memcached用户有权限读写
     chown  $USER  /var/run/memcached
     #这里写全路径否则找不到,如果你觉得路径太长你可以写一个变量在这里引用。
     #daemon $MEMCACHED_BIN_PATH/memcached -d -p ......
     daemon  /usr/local/memcached1 .4.34 /bin/memcached  -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P  /var/run/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  /var/run/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  $?

建立目录

wKiom1iy3FuRKu5vAAAetPKVYF0727.jpg

KILL掉之前启动的进程,然后我们用服务脚本进行启动

wKioL1iy3PDRfi5aAABMM5W-ed0101.jpg


CentOS 7上的设置

这个文件就在源码包里面的scripts目录中

wKioL1mDIm_Tsqh8AAETJPsNh18623.jpg

1
cp  memcached.service  /usr/lib/systemd/system/

wKiom1mDIm_DBN2aAAB9YsOUfeU339.jpg

查看拷贝过去的文件

wKiom1mDItORkDTFAACdKQ7yow4562.jpg修改该文件,写成你编译安装的路径

wKioL1mDIuCRu5hZAACfvk_fYeA131.jpg

建立配置文件

wKioL1mDIyHzB-e2AABMX4xBec0214.jpg

如果不使用配置文件,你可以像下面这样写

wKiom1mDIvyyno6rAACWS-qz1fw930.jpg

启动服务

wKiom1mDIzeCwp0uAAB-fW_YmLU148.jpg