(WJW)安裝Memcached
[1] yum安裝(也可以源碼安裝,在"make依賴庫"目錄下):
yum install automake autoconf libtool
[2] 安裝libevent
tar -zxvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure --prefix=/usr/local
make uninstall
make clean
make
make install
cd ..
[3] 安裝memcached
注意: 安裝Memcached前flush_all
的修改
查找:memcached.c
文件,把
} else if (ntokens >= 2 && ntokens <= 4 && (strcmp(tokens[COMMAND_TOKEN].value, "flush_all") == 0)) {
修改成:
} else if (ntokens >= 2 && ntokens <= 4 && (strcmp(tokens[COMMAND_TOKEN].value, "xflush_all") == 0)) {
如果是Memcached-Repcached版本,還要把replication.c
裏的:
char *s = "flush_all ";
修改成:
char *s = "xflush_all ";
tar zxvf ./memcached-1.4.22.tar.gz
cd ./memcached-1.4.22
./configure --with-libevent=/usr/local/lib/ --enable-64bit
make uninstall
make clean
make
make install
cd ..
注意: 如果make的時候報錯
memcached.c: 在函數'add_iov'中:
memcached.c:696:30: 錯誤: 'IOV_MAX'未聲明(在此函數內第一次使用)
memcached.c:696:30: 附註: 每個未聲明的標識符在其出現的函數內只報告一次
make[2]: *** [memcached-memcached.o] 錯誤 1
需要修改memcached.c
文件:
/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
#if defined(__FreeBSD__) || defined(__APPLE__)
# define IOV_MAX 1024
#endif
#endif
改成:
/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
# define IOV_MAX 1024
#endif
注意: 如果運行/usr/local/bin/memcached -h
的時候報錯:找不到libevent
**
執行: ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib64/libevent-1.4.so.2
技巧: 執行ldd /usr/local/bin/memcached
,看缺少那些庫!
[4] 終端調試運行:
執行: /usr/local/bin/memcached -m 100 -u root -p 11411
也可以啓動多個守護進程,但是端口不能重複
啓動參數說明:
-d 選項是啓動一個守護進程,
-m 是分配給Memcache使用的內存數量,單位是MB,默認64MB
-M return error on memory exhausted (rather than removing items)
-u 是運行Memcache的用戶,如果當前爲root 的話,需要使用此參數指定用戶.
-l 是監聽的服務器IP地址,默認爲所有網卡.
-p 是設置Memcache的TCP監聽的端口,最好是1024以上的端口
-c 選項是最大運行的併發連接數,默認是1024
-P 是設置保存Memcache的pid文件
-f chunk size growth factor (default: 1.25)
-I Override the size of each slab page. Adjusts max item size(1.4.2版本新增)
[X] 附錄:
memcached啓動停止腳本:/etc/rc.d/init.d/memcached
(注意:文件格式一定要是unix的)
vi /etc/rc.d/init.d/memcached
#!/bin/sh
#
# memcached: MemCached Daemon
#
# chkconfig: - 90 25
# description: MemCached Daemon
#
# Source function library.
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
#[ ${NETWORKING} = "no" ] && exit 0
#[ -r /etc/sysconfig/dund ] || exit 0
#. /etc/sysconfig/dund
#[ -z "$DUNDARGS" ] && exit 0
start() {
echo -n $"Starting memcached: "
daemon $MEMCACHED -u daemon -d -m 100 -p 11411 -P ${PID_FILE}
echo
}
stop() {
echo -n $"Shutting down memcached: "
killproc -p ${PID_FILE} memcached
echo
}
MEMCACHED="/usr/local/bin/memcached"
PID_FILE="/tmp/memcached_repcached.pid"
[ -f $MEMCACHED ] || exit 1
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 3
start
;;
status)
status -p ${PID_FILE} memcached
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
添加可執行: chmod +x /etc/rc.d/init.d/memcached