zoukankan      html  css  js  c++  java
  • CentOS7安装memcached

    三台linux服务器系统CentOS7
    一台memcached IP:192.168.155.134
    一台Apache    IP:192.168.155.130
    一台nginx     IP:192.168.155.131
    
    
    memcached服务器
    memcached
    下载地址http://memcached.org/
    wget下载路径http://www.memcached.org/files/memcached-1.4.25.tar.gz
    这里用到的是
    memcached-1.4.25.tar.gz
    
    
    memcached基于libevent的事件处理:libevent是个程序库,他将Linux 的epoll、BSD类操作系统的kqueue等时间处理功能封装成统一的接口。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能
    libevent
    下载地址http://libevent.org/
    wget下载路径http://jaist.dl.sourceforge.net/project/levent/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
    这里用到的是
    libevent-2.0.22-stable.tar.gz
    
    
    用 WinSCP上传到指定的目录下,这里是
    /usr/local/src
    
    
    shell端
    查询系统是否已安装libevent
    RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
    -i            :install 安装
    -v            :显示详细信息
    -vv           :显示更加详细的信息
    -h            :使用#显示安装进度
    -U            :软件存在则升级软件,不存在则安装软件
    -F            :软件存在则升级软件,不存在则不做任何动作
    -e            :程序卸载--nodeps  不卸载相关依赖包,可能导致其他软件无法使用
    -q            : 查询某个包是否安装
    --test        :仅测试是否可以安装,但是不进行安装
    --nodeps      :不考虑依赖关系进行安装,可能造成软件无法正常使用
    --force       :忽略软件包及文件的冲突
    --replacepkge :无论软件包是否已被安装,都强行安装软件包
    --replacepkgs :重新安装软件包,如原有配置文件存在,可能无法覆盖
    如下参数只能配合-q组合使用如-qa在所有已安装包中查询是否安装某个包
    -a, --all      : 查询/验证所有包
    -p, --package  : 查询/验证包文件
    -l, --list     : 查询包中的列表文件
    -d, --docfiles : 查询列表所有文档文件
    -f, --file     : 查询/验证包拥有的文件
    例rpm -ivh zsh-4.3.10-4.1.el6.x86_64.rpm安装zsh-4.3.10-4.1.el6.x86_64.rpm并显示详细信息和安装进度
    |grep 搜索命令的输出中是否包含某个字符串,加亮显示(这里是-qa命令输出的字符串中查找)
    这里显示libevent-2.0.21-4.el7.x86_64,说明已安装libevent-2.0.21-4.el7.x86_64
    rpm -qa|grep libevent
    
    
    卸载已安装的libevent
    rpm -e libevent-2.0.21-4.el7.x86_64
    
    
    进入到安装包目录
    cd /usr/local/src
    
    
    解压缩libevent到当前文件夹
    tar -zxvf libevent-2.0.22-stable.tar.gz
    
    
    进入解压缩目录
    cd libevent-2.0.22-stable
    
    
    配置安装目录
    ./configure --prefix=/usr/local/libevent
    
    
    编译
    make
    
    
    安装
    make install
    
    
    返回上级目录
    cd ../
    
    
    解压缩memcached到当前文件夹
    这个压缩包没有用gzip格式压缩  所以解压的时候也不用加上z,直接 tar -xvf 就可以了
    tar -xvf memcached-1.4.25.tar.gz
    
    
    进入解压缩目录
    cd memcached-1.4.25
    
    
    配置安装目录,及关联的libevent库安装目录
    ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
    
    
    编译
    make
    
    
    安装
    make install
    
    
    创建文件夹用来保存memcached的进程文件
    mkdir -m777 -p /usr/local/memcached/pid
    
    
    启动memcached
    -d  选项是启动一个守护进程。
    -u  表示启动memcached的用户,这里为root,可以指定低权限用户启动memcached。
    -m  是分配给Memcache使用的内存数量,单位是MB,默认64MB。内容容量达到指定的值之后memcached回自动删除不适用的缓存
    -p  是设置Memcache的TCP监听的端口,最好是1024以上的端口,memcached默认端口11211。
    -c  选项是最大运行的并发连接数,按照服务器的负载量来设定,默认是1024。
    -P  是设置保存Memcache的pid文件,也就是保存进程ID到指定文件,只有在使用 -d 选项的时候才有意义。
    -vv 输出详细信息
    也可以启动多个守护进程,但是端口不能重复。这样就可以在一台机器上相当拥有多个Memcached服务器
    /usr/local/memcached/bin/memcached -d -m 256 -u root -p 11211 -c 1024 -P /usr/local/memcached/pid/memcached.pid -vv
    
    
    杀死memcached进程
    kill `cat /usr/local/memcached/pid/memcached.pid`
    
    
    /*
    或者可以查看11211端口使用情况获取使用进程ID
    lsof -i:11211
    
    
    直接用kill 进程ID 来杀死进程,这里memcached的进程ID是20146
    kill 20146
    */
    
    
    将memcached放到service控制中将下面代码新建保存到/etc/init.d/memcached中
    #!/bin/bash
    # memcached MemCached
    # it is v.1.4.25 version.
    # chkconfig: - 85 15
    # description: memcached is very good
    # processname: memcached
    MEMCACHED="/usr/local/memcached/bin/memcached"
    PID_FILE="/usr/local/memcached/pid/memcached.pid"
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    start()
    {
        $MEMCACHED -d -m 256 -u root -p 11211 -c 1024 -P ${PID_FILE}
    }
    stop()
    {
        kill `cat $PID_FILE`
    }
    restart(){
        stop
        start
    }
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            sleep 3
            start
            ;;
        *)
        echo $"Usage: 0 {start|stop|restart}"
        exit 1
    esac
    exit 0
    :wq  保存并退出
    vim /etc/init.d/memcached
    
    
    设置文件的访问权限
    chmod 755 /etc/init.d/memcached
    
    
    可以使用service控制memcached启用关闭了
    service memcached start
    
    
    让memcached服务加入到开机启动指令管理的服务列表中
    chkconfig --add memcached
    
    
    设置开机启动
    chkconfig memcached on
    
    
    开启防火墙11211端口的外部访问
    firewall-cmd --zone=public --add-port=11211/tcp --permanent
    
    
    重启防火墙
    firewall-cmd --reload
    
    
    
    
    
    
    Apache和nginx服务器
    memcache是PHP的memcached扩展
    下载地址http://pecl.php.net/package/memcache
    wget下载路径http://pecl.php.net/get/memcache-2.2.7.tgz
    这里用到的是
    memcache-2.2.7.tgz
    
    
    用 WinSCP上传到指定的目录下,这里是
    /usr/local/src
    
    
    shell端
    先安装m4,autoconf。m4是autoconf必要程序,一会要使用phpize会用到autoconf
    yum install m4 autoconf
    
    
    进入到安装包目录
    cd /usr/local/src
    
    
    解压缩memcache到当前文件夹
    tar -zxvf memcache-2.2.7.tgz
    
    
    进入解压缩目录
    cd memcache-2.2.7
    
    
    执行phpize,动态加载PHP扩展模块
    phpize在PHP安装路径下的bin文件夹中(执行phpize及下面的配置,编译,安装时,当前路径位置一定要在PHP扩展程序的解压缩目录中执行,这里是/usr/local/src/memcache-2.2.7目录中)
    /usr/local/php/bin/phpize
    
    
    配置,php-config在PHP安装路径下的bin文件夹中
    ./configure --with-php-config=/usr/local/php/bin/php-config
    
    
    编译
    make
    
    
    安装扩展后会在PHP安装路径里/usr/local/php/lib/php/extensions下自动生成一个文件夹(apache,nginx下生成的文件夹名不一样),里面包含memcache.so
    make install
    
    
    
    修改php.ini文件,加载memcache.so模块
    在一堆extension下面添加
    extension=memcache.so
    vim /usr/local/php/php.ini
    
    
    重启服务器
    apache用service httpd restart,nginx用service php-fpm restart
    service httpd restart 或者 service php-fpm restart
    
    
    在Apache和nginx服务器上新建PHP页面添加如下内容,执行测试memcached
    <?php
    $mem = new Memcache;//创建一个memcache对象
    //'127.0.0.1'表示安装 Memcache 的机器IP,11211 连接 Memcache 所需的端口号,也是 Memcache 的默认端口号
    $mem->connect('192.168.155.134', 11211);
    
    //可以用connect方法连接单个memcached服务器,也可以用addServer组成分布式memcached。addServer方法可替代connect来连接memcached服务器
    //addServer相当把所有用addServer的memcached服务器合成一个大memcached服务器,内存累加,不用关心往哪个memcached服务器添加数据,客户端memcache扩展模块会自动控制往某台memcached服务器存值,取值
    //memcached服务器不互通信的分布式:memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。他的分布式主要是通过客户端实现的。
    //这里只有一台memcached服务器,以添加端口模拟添加一台memcached服务器
    $mem->addServer('192.168.155.134', 11211);
    $mem->addServer('192.168.155.134', 11212);//要使用此端口需在memcached服务器上添加该端口的memcached服务 /usr/local/memcached/bin/memcached -d -m 256 -u root -p 11212 -c 1024 -P /usr/local/memcached/pid/memcached.pid -vv
    
    //常用操作
    //不同客户端可共享memcached服务器里保存的键及值
    //往Memcache中自定义键值中存入数据
    $mem->set('keyName', ' a value', 0, 60);
    //获取Memcache中指定键值的值
    $val = $mem->get('keyName');
    echo $val;
    exit;
    
    //替换
    $mem->set('keyName', ' a value', 0, 60);
    $mem->replace('keyName', 'This is replace value', 0, 60);
    $val = $mem->get('keyName');
    echo $val;
    exit;
    
    //保存数组数据
    $arr = array('aaa', 'bbb', 'ccc', 'ddd');
    $mem->set('keyName', $arr, 0, 60);
    $val = $mem->get('keyName');
    var_dump($val);
    exit;
    
    //删除数据
    $mem->set('keyName', ' a value', 0, 60);
    $mem->delete('keyName');
    $val = $mem->get('keyName');
    echo $val;
    exit;
    
    //清除所有数据
    $mem->set('keyName', ' a value', 0, 60);
    $mem->set('keyName2', ' a value', 0, 60);
    $mem->flush();
    $val  = $mem->get('keyName');
    $val2 = $mem->get('keyName2');
    echo $val,$val2;
    exit;
    
    //关闭连接
    $mem->close();
    ?>
    
    
    
    
    附
    linux启动memcached选项
    -p   : 监听的TCP端口(默认: 11211)
    -U   : 监听的UDP端口(默认: 11211, 0表示不监听)
    -s   : 用于监听的UNIX套接字路径(禁用网络支持)
    -a   : UNIX套接字访问掩码,八进制数字(默认:0700-l   : 监听的IP地址。(默认:INADDR_ANY,所有地址)
    -d   : 作为守护进程来运行。
    -r   : 最大核心文件限制。
    -u   : 设定进程所属用户。(只有root用户可以使用这个参数)
    -m   : 单个数据项的最大可用内存,以MB为单位。(默认:64MB)
    -M   : 内存用光时报错。(不会删除数据)
    -c   : 最大并发连接数。(默认:1024-k   : 锁定所有内存页。注意你可以锁定的内存上限。试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限。(不是前面的 -u  参数;在sh下,使用命令"ulimit -S -l NUM_KB"来设置。)
    -v   : 提示信息(在事件循环中打印错误/警告信息。)
    -vv  : 详细信息(还打印客户端命令/响应)
    -vvv : 超详细信息(还打印内部状态的变化)
    -h   : 打印这个帮助信息并退出。
    -i   : 打印memcached和libevent的许可。
    -P   : 保存进程ID到指定文件,只有在使用 -d 选项的时候才有意义。  
    -f   : 块大小增长因子。(默认:1.25-n   : 分配给key+value+flags的最小空间(默认:48-L   : 尝试使用大内存页(如果可用的话)。提高内存页尺寸可以减少"页表缓冲(TLB)"丢失次数,提高运行效率。为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块。
    -D   : 使用  作为前缀和ID的分隔符。这个用于按前缀获得状态报告。默认是":"(冒号)。如果指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令"stats detail on"来开启。
    -t   : 使用的线程数(默认:4-R   : 每个连接可处理的最大请求数。
    -C   : 禁用CAS。
    -b   : 设置后台日志队列的长度(默认:1024-B   : 绑定协议 - 可能值:ascii,binary,auto(默认)
    -I   : 重写每个数据页尺寸。调整数据项最大尺寸。
  • 相关阅读:
    TFS 2010 备份和恢复的完整解决方案
    PDC10 微软宣布TFS成功移植到云计算平台Windwos Azure
    基于Visual Studio 2010 进行敏捷/Scrum模式开发
    配置TFS服务器所需要的数据库权限
    TechEd2011 Session Visual Studio ALM项目管理 端到端的跟踪与控制
    微软云计算培训 (ethos)
    2007 Office System Driver: Data Connectivity Components
    Ajax post时需要注意的问题
    JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题
    ColorPicker js control
  • 原文地址:https://www.cnblogs.com/dreamhome/p/5125849.html
Copyright © 2011-2022 走看看