`
zhengdl126
  • 浏览: 2538424 次
  • 性别: 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 安装配置memcached

    CentOS 安装配置 Memcached 在本文中,我们将详细介绍如何在 CentOS 系统上安装和配置 Memcached。Memcached 是一个高性能的分布式内存对象缓存系统,广泛应用于各种 web 应用程序中,以提高应用程序的性能和响应...

    CentOS 安装 Memcache 服务器. java 做客户端.

    本主题将探讨如何在CentOS操作系统上安装Memcache服务器,并利用Java作为客户端与之交互。以下是详细的步骤和相关知识点。 首先,我们需要在CentOS上安装Memcache服务器。这通常涉及以下几个步骤: 1. **更新系统*...

    CenOS下安装Memcache和PHP Memcache扩展.

    在安装Memcache后,需要配置它以启动服务。创建一个名为`/etc/sysconfig/memcached`的配置文件,并添加以下内容: ```bash sudo vi /etc/sysconfig/memcached # 内容如下: PORT="11211" USER="memcached" MAXCONN...

    Linux安装Memcache

    本文将详细介绍如何在Linux环境下安装和配置Memcache服务器端及PHP扩展。 首先,确保你的系统满足基本的安装条件。你需要一个支持编译的环境,通常在Linux发行版中,如Ubuntu、CentOS或Debian,这些环境已经预装。...

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

    ### CentOS 5.4 下的 Memcache 安装步骤 (Linux+Nginx+PHP+Memcached) 在 CentOS 5.4 系统上搭建 Linux+Nginx+PHP+Memcached 运行环境是一项常见的任务,尤其对于那些希望提高网站性能和响应速度的开发者来说尤为...

    在CentOS 5.3上安装Memcached服务及相应的PHP扩展memcache

    在Linux系统,特别是CentOS 5.3这样的老版本中,安装和配置现代软件可能会遇到一些挑战,因为这些系统可能不包含最新版本的库和工具。在这个教程中,我们将详细介绍如何在CentOS 5.3上安装Memcached服务以及相关的...

    memcache简介、安装 and in cakephp

    2. **安装库**:通过包管理器(如apt-get for Ubuntu或yum for CentOS)安装libevent库,因为Memcache依赖于它。 ``` sudo apt-get install libevent-dev ``` 3. **下载并编译Memcache**:从Memcache的官方...

    Memcache安装配置使用说明

    **Memcache 安装配置使用说明** --- **1、简介** 1.1 **文档目的** 本文档旨在提供详细的步骤和指南,帮助用户成功地在他们的系统上安装、配置和使用Memcache,这是一个高效的分布式内存对象缓存系统,常用于缓解...

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

    在Linux环境下,可以使用以下命令安装: - Ubuntu/Debian: `sudo apt-get install memcached` - CentOS/RHEL: `sudo yum install memcached` 2. **启动与停止服务**: 安装完成后,你可以使用系统服务管理命令启动...

    centos6.5安装LNMP服务器教程

    ### CentOS 6.5 安装LNMP服务器教程 #### 一、概述 本文将详细介绍如何在CentOS 6.5上安装LNMP(Linux+Nginx+MySQL+PHP)服务器环境。LNMP架构是一种非常流行的Web服务器组合,它不仅性能高效而且配置灵活,非常...

    linux下安装memcache

    在Linux环境下安装Memcached是一项常见的任务,特别是在搭建高性能、分布式内存缓存系统时。Memcached是一款轻量级的、开源的、基于内存的数据存储服务,它用于存储小块的任意类型的数据,如数据库查询结果、网页...

    centos 安装HTTP

    这个过程包括了Apache的安装、PHP环境的搭建以及Oracle Instant Client的支持,同时还涉及到了MySQL数据库的安装和配置,以及Memcache扩展的安装。下面我们将详细地探讨这些步骤。 首先,你需要下载Apache ...

    linux MemCache 安装手册

    这个安装手册将引导你完成在Linux环境下安装和配置Memcached的过程。 首先,让我们了解Memcached的基本概念。Memcached是一个基于内存的数据存储系统,它能够存储键值对,并通过网络在多个服务器之间共享这些数据。...

    CentOS 5 全功能WWW服务器搭建全教程

    - **缓存服务**: 安装`memcache`来提高网站的访问速度。 - **代理缓存**: 安装`Squid`作为HTTP代理缓存服务器。 - **安全模块**: 安装`mod_security`来增加Web应用的安全性。 - **论坛系统**: 安装`vBulletin`作为...

    LANMP安装配置

    本文将深入探讨如何在CentOS操作系统上进行完整的LANMP安装与配置,并涉及MongoDB数据库和Memcache缓存服务的集成。 ### CentOS系统准备 首先,确保你的CentOS系统是最新的。通过运行以下命令更新系统: ```bash ...

    百度云服务器系列:centos7安装oracle11G全过程记录

    在完成了Oracle的安装后,可以继续安装和配置其他基础应用服务,如SVN(版本控制系统)、Redis(内存数据存储)和Memcache(缓存系统),这些服务与Oracle一起可以构建出强大的后端服务架构。 以上就是在CentOS 7上...

    memcache集群安装

    构建memcache集群是一个涉及多个步骤的过程,包括安装、配置、客户端设置以及可能的负载均衡策略。正确地实施这些步骤,可以显著提升高并发应用的性能,降低数据库压力。记住,持续监控和优化是保持系统高效运行的...

    linux环境memcache详细安装步骤(含memcache软件包)

    以下是一份详细的Linux环境下Memcached的安装步骤,包括所需软件包的获取和配置。 1. **系统准备**: - 首先,确保你的Linux发行版是基于Debian或Red Hat的,因为这些系统的包管理器支持Memcached。 - 更新系统包...

    LAMP centos安装流程

    ### LAMP环境在CentOS 6/6.5 64位系统上的安装流程 #### 环境准备与依赖安装 本指南旨在详细介绍如何在CentOS 6/6.5 64位操作系统上安装LAMP(Linux、Apache、MySQL、PHP)环境。LAMP是一种流行的开源Web开发平台...

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

    本文将详细介绍如何在CentOS 5.5(RedHat 5)上安装配置LAMP环境,并集成Memcache和Zend Optimizer,旨在为初学者提供一个完整的指南。 #### 二、Apache Web服务器安装与配置 **1. 下载与解压Apache** ``` # tar ...

Global site tag (gtag.js) - Google Analytics