LNMP+Memcached

这里我还是使用LNMP三层结构配置的实验环境,请点击链接:http://junwang.blog.51cto.com/5050337/1390100

以下是拓扑图:
wKioL1M9l_nAi5rrAACqJT7t-N0998.jpg
新增一台memcached服务器:
system:        redhat 6.4_x64
ipaddress:    192.168.100.51

1、memcached服务器上
1)安装
libevent-2.0.16-stable.tar.gz
#./configure --prefix=/usr/local/libevent
# make &&make install
# echo "/usr/local/libevent/lib" >/etc/ld.so.conf.d/libevent.conf
# ldconfig -v
memcached-1.4.5.tar.gz
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
# make &&make install

2)为memcached提供启动脚本
# vim /etc/init.d/memcached
#!/bin/bash
# Init file for memcached
# chkconfig: - 86 14
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /etc/sysconfig/memcached
. /etc/rc.d/init.d/functions
## Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
[ -f /usr/local/memcached/memcached.conf ] && . /usr/local/memcached/memcached.conf
RETVAL=0
prog="/usr/local/memcached/bin/memcached"
desc="Distributed memory caching"
lockfile="/var/lock/subsys/memcached"
start() {
       echo -n $"Starting $desc (memcached): "
       daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE
       RETVAL=$?
       echo
       [ $RETVAL -eq 0 ] && touch $lockfile
       return $RETVAL
}
stop() {
       echo -n $"Shutting down $desc (memcached): "
       killproc $prog
       RETVAL=$?
       echo
       [ $RETVAL -eq 0 ] && rm -f $lockfile
       return $RETVAL
}
restart() {
       stop
       start
}
reload() {
       echo -n $"Reloading $desc ($prog): "
       killproc $prog -HUP
       RETVAL=$?
       echo
       return $RETVAL
}
case "$1" in
 start)
       start
       ;;
 stop)
       stop
       ;;
 restart)
       restart
       ;;
 condrestart)
       [ -e $lockfile ] && restart
       RETVAL=$?
       ;;      
 reload)
       reload
       ;;
 status)
       status $prog
       RETVAL=$?
       ;;
  *)
       echo $"Usage: $0 {start|stop|restart|condrestart|status}"
       RETVAL=1
esac
exit $RETVAL

3)为memcached服务脚本提供配置文件
# vim /usr/local/memcached/memcached.conf
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="128"

# chmod +x /etc/init.d/memcached
# chkconfig --add memcached
# service memcached start

4)验证是否正常
# netstat -tnlp 查看是否有11211端口开启
使用telent查看memcached相关状态
# telnet localhost 11211
Trying 192.168.0.102...
Connected to 192.168.0.102.
Escape character is '^]'.
stats
STAT pid 9125 #进程ID
STAT uptime 2444 #服务器运行秒数
STAT time1396572286 #服务器当前unix时间戳
STAT version 1.4.17 #服务器版本
STAT libevent 2.0.16-stable #libevent版本号
STAT pointer_size 64 #操作系统指针大小(这台服务器是64位的)
STAT rusage_user 0.091986 #进程累计用户时间
STAT rusage_system 0.107983 #进程累计系统时间
STAT curr_connections 10 #当前打开连接数
STAT total_connections 13 #曾打开的连接总数
STAT connection_structures 11 #服务器分配的连接结构数
STAT reserved_fds 20 #内部使用的FD数
STAT cmd_get 1 #执行get命令总数
STAT cmd_set 1 #执行set命令总数
STAT cmd_flush 0 #执行flush命令总数
STAT cmd_touch 0 #执行touch命令总数
STAT get_hits 1 #get命中次数
STAT get_misses 0 #get未命中次数
STAT delete_misses 0 #delete未命中次数
STAT delete_hits 0 #delete命中次数
STAT incr_misses 0 #incr未命中次数
STAT incr_hits 0 #incr命中次数
STAT decr_misses 0 #decr未命中次数
STAT decr_hits 0 #decr命中次数
STAT cas_misses 0 #cas未命中次数
STAT cas_hits 0 #cas命中次数
STAT cas_badval 0 #使用擦拭次数
STAT touch_hits 0 #touch命中次数
STAT touch_misses 0 #touch未命中次数
STAT auth_cmds 0 #认证处理的次数
STAT auth_errors 0 #认证失败次数
STAT bytes_read 7 #读取字节总数
STAT bytes_written 0 #写入字节总数
STAT limit_maxbytes 134217728 #现在的内存大小为128M
STAT accepting_conns 1 #目前接受的新接数
STAT listen_disabled_num 0 #失效的监听数
STAT threads 4 #当前线程数
STAT conn_yields 0 #连接操作主支放弃数目
STAT hash_power_level 16 #hash等级
STAT hash_bytes 524288 #当前hash表等级
STAT hash_is_expanding 0 #hash表扩展大小
STAT bytes 0 #当前存储占用的字节数
STAT curr_items 0 #当前存储数据总数
STAT total_items 0 #启动以来存储的数据总数
STAT expired_unfetched 0 #已过期但未获取的对象数目
STAT evicted_unfetched 0 #已驱逐但未获取的对象数目
STAT evictions 0 #LRU释放的对象数目
STAT reclaimed 0 #用已过期的数据条目来存储新数据的数目
END
使用quit退出当前交互模式
当然了,你的数据肯定和我的不一样,我的是做完整个实验显示的结果,所以不用纠结有的地方不一样





2、php服务器上安装配置memcache客户端:
1)安装
# pecl install memcache
说明:看到下面的信息,就说明php memcache 模块安装完成,输入yes
2)配置php
在php配置文件中加入
extension = "memcache.so"
memcache.chunk_size = 32768


======================================================================
或者,安装也可以使用源码安装                                                                                                                                ||
# tar xf memcache-3.0.8.tgz                                                                                                                                   ||
# phpize                                                                                                                                                                  ||        
# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache                                        ||
# make && make install                                                                                                                                         ||            
注意保存最后的一串代码                                                                                                                                           ||
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/                                                                       ||    
由于memcache没有自动添加ini文件                                                                                                                         ||
# mkdir /etc/php.d                                                                                                                                                 ||
# vim /etc/php.d/memcache.ini                                                                                                                             ||
extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so"                         ||    
========================================================================

然后重启php-fpm

# service php-fpm restart

查看一下当前php己加载的模块:
# php -m

3)测试验证
些时我们在浏览器中输入http://192.168.100.11/index.php
查看是否有下图

wKiom1M9mD2wZnaQAAH8mMXETeg959.jpg
建立测试页面:
# vim /web/php/memcached.php
<?php
   $mem = new Memcache;
   $mem->connect("192.168.100.51", 11211)  or die("Could not connect");
   $version = $mem->getVersion();
   echo "Server's version: ".$version."<br/>\n";
   $mem->set('testkey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server");
   echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";
   $get_result = $mem->get('testkey');
   echo "$get_result is from memcached server.";
?>

浏览器显示是否为下图:
wKioL1M9mC2zoS8DAACS1Gs7xkc462.jpg