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 명령으로 하시면 됩니다.
댓글