`
zhengdl126
  • 浏览: 2509560 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

centos 下安装memcache配置

阅读更多

为什么会有Memcache和memcached两种名称?
其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了把~~~~。一个是项目名称,一个是主程序文件名


Linux下Memcache服务器端的安装
服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。
下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装)
官网:http://www.monkey.org/~provos/libevent/
下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz

用wget指令直接下载这两个东西.下载回源文件后。
1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;
2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr;然后make;然后make install;
这样就完成了Linux下Memcache服务器端的安装。详细的方法如下:

    1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
    # cd /tmp
    # wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
    # wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

    2.先安装libevent:
    # tar zxvf libevent-1.2.tar.gz
    # cd libevent-1.2
    # ./configure -prefix=/usr
    # make
    # make install

    3.测试libevent是否安装成功:
    # ls -al /usr/lib | grep libevent
    lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
    -rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
    -rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
    -rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
    lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
    还不错,都安装上了。

    4.安装memcached,同时需要安装中指定libevent的安装位置:
    # cd /tmp
    # tar zxvf memcached-1.2.0.tar.gz
    # cd memcached-1.2.0
    # ./configure -with-libevent=/usr
    # make
    # make install
    如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
    安装完成后会把memcached放到 /usr/local/bin/memcached ,

    5.测试是否成功安装memcached:
    # ls -al /usr/local/bin/mem*
    -rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
    -rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug

安装Memcache的PHP扩展
1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。
2.安装PHP的memcache扩展

tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/bin/phpize
./configure -enable-memcache -with-php-config=/usr/bin/php-config -with-zlib-dir
make
make install

3.上述安装完后会有类似这样的提示:

    Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/

4.把php.ini中的extension_dir = “./”修改为

    extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”

5.添加一行来载入memcache扩展:extension=memcache.so

memcached的基本设置:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.12.201 -p 13001 -c 256 -P /tmp/memcached.pid


    -d选项是启动一个守护进程,
    -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
    -u是运行Memcache的用户,我这里是root,
    -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.12.201,
    -p是设置Memcache监听的端口,我这里设置了13001,最好是1024以上的端口,
    -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
    -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

2.如果要结束Memcache进程,执行:

    # kill `cat /tmp/memcached.pid`

也可以启动多个守护进程,不过端口不能重复。

3.重启apache,service httpd restart

Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
<?php
$mem = new Memcache;
$mem->connect("192.168.12.201", 13001);
$mem->set('key','This is a test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>

 

 

 

 

========================================================php.ini session memcache

实现Session的功能,基本上是通过
 *          设置客户端的Cookie来保存SessionID,
 *          然后把用户的数据保存在服务器端,最后通

 *          Cookie中的Session Id来确定一个数据是否是用户的,


原始
session.save_handler = files


mem:

session.save_handler = memcache

session.save_path = "tcp://192.168.0.26:13001,tcp://192.168.0.26:13002"

session.use_cookies = 1

 


//memcache 配置数组
$memcache_servers=array(
      array("host"=>"192.168.0.26",
            "port"=>"14001",
            "persistent"=>true,
            "weight"=>1,
            "timeout"=>1,//1为默认值,单位为秒
            "retry_interval"=>2,
            "status"=>true,
            "failure_callback"=>"memcacheConnectLog"
      ),
      array("host"=>"192.168.0.26",
            "port"=>"14002",
            "persistent"=>true,
            "weight"=>1,
            "timeout"=>1,//1为默认值,单位为秒
            "retry_interval"=>2,
            "status"=>true,
            "failure_callback"=>"memcacheConnectLog" //写入日志函数
      )
);

 

 ====================监控

 

netstat -an | grep memcache

ps -ef|grep  memcache

 

 

 

 

 cd memcache-2.2.4

[zhangy@BlackGhost memcache-2.2.4]$ ls |grep .php
example.php
memcache.php
run-tests.php

把memcache.php文件,cp到你的web服务器上面


cp memcache.php /home/zhangy/www/test

vim /home/zhangy/www/test/memcache.php 打开修改配置

 

define('ADMIN_USERNAME','zhangy');     // Admin Username
define('ADMIN_PASSWORD','adsfadf');      // Admin Password

$MEMCACHE_SERVERS[] = '192.168.12.201:13001'; // add more as an array

$MEMCACHE_SERVERS[] = '192.168.12.201:13002'; // add more as an array

 

 能过url访问memcache.php

 

Hits: 29 (67.4%)          #点击了29

Misses: 14 (32.6%)      #字面意思,丢失了14。我这样说肯定有很多人想,这14是memcache没起作用。

对的,是没有起作用,第一次都不会起作用,如果不明白,去搞清楚,memcache的调用原理。

 

 

 

 -----------------

telnet 192.168.12.201 13001 这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态

  

 

这些状态的说明如下:
+K `"y`#t yt0

pid memcache服务器的进程ID
uptime 服务器已经运行的秒数
time 服务器当前的unix时间戳
version memcache 版本
pointer_size 当前操作系统的指针大小(32位系统一般是32bit)
rusage_user 进程的累计用户时间
rusage_system 进程的累计系统时间
curr_items 服务器当前存储的items数量
total_items 从服务器启动以后存储的items总数量
bytes 当前服务器存储items占用的字节数
curr_connections 当前打开着的连接数
total_connections 从服务器启动以后曾经打开过的连接数
connection_structures 服务器分配的连接构造数
cmd_get get命令(获取)总请求次数
cmd_set set 命令(保存)总请求次数
get_hits 总命中次数
get_misses 总未命中次数
evictions 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read 总读取字节数(请求字节数)
bytes_written 总发送字节数(结果字节数)
limit_maxbytes 分配给memcache的内存大小(字节)
threads 当前线程数

 

 

 

 

===========================shell脚本检查memcache进程并自动重启

vim /etc/memcached_check.sh

#!/bin/sh
#check memcache process and restart if down

mm_bin="/usr/local/bin/memcached"
mm_log="/usr/local/webserver/apache2/logs/memcached_check.log"
mm_ports=("13002")
mm_param=("-d -m 500 -u www -p 13002 -c 256")
mm_count=${#mm_ports[@]}

t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
i=0
while [ $i -lt $mm_count ]
do
mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`

if [ "$mm_exists" == "0" ]; then
${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
fi

let i++
done

============

chmod +x /etc/memcached_check.sh

添加为自动执行:
#crontab -e
0-59 * * * * /bin/sh /etc/memcached_check.sh

系统每10分钟会自动执行memcached_check.sh
*/10 * * * * /bin/sh /etc/memcached_check.sh

-----------


#!/bin/sh
#check memcache process and restart if down

mm_bin="/usr/local/bin/memcached"
mm_log="/home/xxx/memcached_check.log"
mm_ports=("11211" "11212")
mm_param=("-d -m 20480 -p 11211 -u www" "-d -m 256 -p 11212 -u www")
mm_count=${#mm_ports[@]}

t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
i=0
while [ $i -lt $mm_count ]
do
mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`

if [ "$mm_exists" == "0" ]; then
${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
fi

let i++
done

======================

添加为自动执行:
    #crontab -e
*/10 * * * * /bin/sh /home/xxx/memcached_check.sh

系统每10分钟会自动执行memcached_check.sh

 

 

---------------------

备用shell语句:

#检查mysql状态
PORT=`netstat -na | grep "LISTEN" | grep "3306" | awk '{print $4}' | awk -F. '{print $2}'`
if [ "$PORT" -eq "3306" ]

#检查mysql占CPU负载
mysql_cpu=`top -U root -b -n 1 | grep mysql | awk '{print $10}'|awk -F. '{print $1}'`
#如果mysql cpu负载大于80,则重启mysql
if [ "$mysql_cpu" -ge "80" ]

#获得相关信息
ps -ef|grep "memcached"|grep -v "grep"|wc -l
ps -ef|grep "memcached"|grep "11211"|grep -v "grep"|wc -l
ps aux|grep "memcached"|grep -v "grep"|awk '{sum+=$4;n++};END{print sum}'
ps aux|grep "memcached"|grep -v "grep"|awk '{printf $1}'

MYPORT=`netstat -na|grep "tcp"|grep "3306"|awk -F[:" "]+ '{print $5}'`
HAPORT=`netstat -na|grep "udp"|grep "694"|awk -F[:" "]+ '{print $5}'`
PING=`ping -c 5 www.linuxtone.org|awk -F, '/packets/{print $3}'|cut -c 2-|awk '{print $1}'`
DB1IP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`

 

-----------------------
shell if语句的一些资料:
–b 当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

UNIX Shell 里面比较字符写法:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
-z 空串
= 两个字符相等
!= 两个字符不等
-n 非空串

 

分享到:
评论

相关推荐

    CentOS 5.4下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)

    CentOS 5.4下的Memcache安装步骤分享,想要配置Linux+Nginx+PHP+Memcached运行环境的朋友可以参考下

    memcache的配置及使用——memcache及其客户端telnet

    memcache的配置及使用——memcache及其客户端telnet

    LANMP安装配置

    centos apache nginx mongodb memcache等等 完整版配置和优化

    centos linux+apache+mysql+php+memcache+zend

    本文档是linux下面的lamp配置步骤,是本人经过多次尝试总结的,参考了网上很多文档,所需软件均能从网上下载,希望对初学者有所帮助centos5.5(redhat5) + php5.2.6 + apache 2.0.55 + mysql 5.1.47 + Zend...

    CentOS+Nginx+PHP+MySQL标准生产环境配置方法

    MySQL 5.0.89 Nginx 0.8.33 或 0.7.65 (可选) ...CentOS 最小化安装,然后先新建一个 repo # vi /etc/yum.repos.d/centos.21andy.com.repo 放入如下内容 [21Andy.com] name=21Andy.com Packages for Enter

    centos系统为php安装memcached扩展步骤

    3. 配置Memcached 代码如下:vim /etc/sysconfig/memcached#文件中内容如下,按需要修改:PORT=”11211″ #端口USER=”root” #用户名MAXCONN=”1024″ #最大连接数CACHESIZE=”64″ #内存大小OPTIONS=”” #附加参数...

    Linux中PHP安装相关资源包

    2)安装操作系统环境:CentOS-6.5,(其它linux操作系统请自行尝试)。 3)本软件安装步骤详解:http://blog.csdn.net/clevercode/article/details/45579837。 4) 博客专栏地址(Linux常用软件安装与配置):...

    memtier_benchmark:NoSQL Redis和Memcache流量生成和基准测试工具

    记忆基准memtier_benchmark是Redis Labs(以前称为Garantia Data Ltd.)开发的命令行实用程序,... 需要以下工具自动配置自动制作pkg-config GNU make GCC C ++编译器CentOS 6.x版在CentOS 6.x系统上,使用以下步骤安装

    vagrant-centos-6.5:我的虚拟机

    php-memcache 扩展 git vim 关于 nginx 的使用 默认这个 box 我已经配置好 LNMP 环境了。PHP 的项目直接放在当前文件夹的 php 文件夹内就可以了。(默认配置的是 php 文件夹,如果要换其他文件夹,请自行修改 nginx ...

    lnmp胜与LAMP十倍的web服务器架构

    Nginx_0.8.x_+_PHP_5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器,在centos下配置mail服务器及memcache 服务器

    lanmp v2.5一键安装包(包括lamp,lnmp,lnamp安装)

    2 增强对ubuntu系统的支持,修正在ubuntu系统下安装可能出现无法添加系统账号的bug 3 nginx升级至1.2.9,apache升级至2.2.24,mysql升级至5.1.69,pureftp升级至1.0.36 4 安装脚本大量调整和优化 5 增加debian系统的支持...

    javasnmp源码-Learnease:学习轻松

    安装/配置 CentOS 安装第三方源: epel-release Nux Dextop 安装在线编译环境(yum): 安装PHP: php-devel php-cli php-commmon php-fpm hp-gd php-pecl-memcache php-mysql php-pear php-mbstring php-snmp php-xml...

    400电话办理选号系统

    三、Memcache配置 memcache下载:http://www.qy400.cn/400dianhua/memcached-1.2.1-win32.zip 1、服务端解压缩至c:\windows\system32\ 2、开始-&gt;运行-&gt;cmd -&gt; c:\windows\system32\memecache.exe -d install c:\...

    linux下安装memcached_动力节点Java学院整理

    环境:centOS6.5 memcached版本1.4.25 memcached下载网址: http://memcached.org/downloads 安装libevent 因为官方网站说了,memcached依赖于libevent 使用yum安装 yum install libevent-devel 源码安装 ...

    lanmp:适用于Apache,Nginx,MySQL和PHP的自动安装脚本

    LANMP一键安装包是用Linux Shell语言编写的,用于Linux系统( Redhat / CentOS / Debian / Ubuntu )上一键安装LANMP环境的工具包。二,特点与优势3种Web环境自由组合lnmp , lamp , lanmp (Nginx前端Apache配置...

Global site tag (gtag.js) - Google Analytics