본문 바로가기
컴퓨터/Linux

CentOS에서 memcached 설치법

by 신규하 2012. 4. 2.

CentOS에서 memcached 설치법



아래는 CentOS 6.2기준으로 작성되었습니다. 권하는 root로 작업을 했습니다.

먼저 yum을 통해서 libevent 설치

# yum install -y libevent libevent-devl


최신 memcached 소스 코드 다운로드 받기

위 주소로 가서 최신 버전을 다운로드 받습니다.

그리고 아래와 같이 진행합니다.


# wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
# tar -zxvf memcached-1.4.13.tar.gz
# cd memcached-1.4.13
# ./configure --prefix=/usr/local/memcached
# make
# make install


이렇게 하면 memcached는 설치가 끝났습니다.

이제는 서비스에 등록 과정입니다.

아래의 내용 /etc/init.d/memcached
파일에 넣습니다.

#!/bin/bash
#
#   /etc/init.d/memcached
#
# Starts the Memory Cache Daemon
#
# chkconfig: 2345 90 10
# description: Memory CacheDaemon
# processname: memcached
# pidfile: /var/lock/subsys/memcached

source /etc/rc.d/init.d/functions

memcached="/usr/local/memcached/bin/memcached"

[ -x $memcached ] || exit 1

### Default variables
SYSCONFIG="/etc/sysconfig/memcached"

### Read configuration
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"

RETVAL=0
prog="memcached"
desc="Memory Cache Daemon"
memsize="32"
listenip="127.0.0.1"
port="11211"
uid="root"
pidfile="/var/run/$prog.pid"

start() {
   echo -n $"Starting $desc ($prog): "
   daemon $memcached -d -u $uid -m $memsize -l $listenip -p $port -P $pidfile
   RETVAL=$?
   if [ $RETVAL -eq 0 ]; then
     touch /var/lock/subsys/$prog
   fi
   echo
}

obtainpid() {
   pidstr=`pgrep $prog`
   pidcount=`awk -v name="$pidstr" 'BEGIN{split(name,a," "); print length(a)}'`
   if [ ! -r "$pidfile" ] && [ $pidcount -ge 2 ]; then
        pid=`awk -v name="$pidstr" 'BEGIN{split(name,a," "); print a[1]}'`
        echo $prog is already running and it was not started by the init script.
   fi
}

stop() {
   echo -n $"Shutting down $desc ($prog): "
   if [ -r "$pidfile" ]; then
        pid=`cat $pidfile`
        kill -s 3 $pid
        RETVAL=$?
   else
           RETVAL=1
   fi
   [ $RETVAL -eq 0 ] && success || failure
   echo
   if [ $RETVAL -eq 0 ]; then
     rm -f /var/lock/subsys/$prog
     rm -f $pidfile
   fi
   return $RETVAL
}

restart() {
        stop
     start
}

forcestop() {
   echo -n $"Shutting down $desc ($prog): "

   kill -s 3 $pid
   RETVAL=$?
   [ $RETVAL -eq 0 ] && success || failure
   echo
   if [ $RETVAL -eq 0 ]; then
     rm -f /var/lock/subsys/$prog
     rm -f $pidfile
   fi

   return $RETVAL
}

status() {
   if [ -r "$pidfile" ]; then
        pid=`cat $pidfile`
   fi
   if [ $pid ]; then
           echo "$prog (pid $pid) is running..."
   else
        echo "$prog is stopped"
   fi
}                                                                          

obtainpid

case "$1" in
  start)
   start
   ;;
  stop)
   stop
   ;;
  restart)
   restart
   RETVAL=$?
   ;;
  condrestart)
   [ -e /var/lock/subsys/$prog ] && restart
   RETVAL=$?
   ;;
  status)
   status
   ;;
  forcestop)
   forcestop
   ;;
  *)
   echo $"Usage: $0 {start|stop|forcestop|restart|condrestart|status}"
   RETVAL=1
esac

exit $RETVAL

여기서 listenip는 로컬에서만 쓸 경우에는 127.0.0.1로 하시고, 다른 IP에서 접근이 필요한 경우에는 현재 호스트의 ip를 쓰시면 됩니다.

서비스가 잘 되는지 실행을 해 봅니다.


# service memcached start


성공 메시지가 뜨면, 정상적으로 연결이 되는지 확인합니다.

telnet 명력으로 아래 아래와 같이 실행하시고, stats하고 엔터를 누르면 구동 상태가 나옵니다.

혹시 telnet명령어가 없으면 yum install -y telnet 으로 설치해 주세요.


# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats
STAT pid 6172
STAT uptime 9298
STAT time 1333340313
STAT version 1.4.13
STAT libevent 1.4.13-stable
STAT pointer_size 64
STAT rusage_user 0.000000
STAT rusage_system 0.003999
STAT curr_connections 5
STAT total_connections 9
STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 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 touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 48
STAT bytes_written 2063
STAT limit_maxbytes 2147483648
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 0
STAT evicted_unfetched 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.


상태가 확인 되었으면 quit로 종료 합니다.

정상적으로 설치가 되었으면 서비스에 등록을 합니다.


# chkconfig --add memcached


이렇게 해서 서비스에 등록해 줍니다.
마지막으로 서비스 등록 확인은 ntsysv 명령으로 하시면 됩니다.


댓글