debian7.7环境下 源码安装redis以及phpredis扩展

原创 2015年11月19日 15:27:26
先进入到redis的官网,下载redis安装包
wget http://download.redis.io/releases/redis-3.0.5.tar.gz

放到/usr/local/src目录下

$ wget http://download.redis.io/releases/redis-3.0.5.tar.gz
$ tar xzf redis-3.0.5.tar.gz
$ cd redis-3.0.5
$ make 
(make MALLOC=libc)

安装成功以后,运行redis-server & 使用redis数据库在后台运行,如果没有报错,那就证明redis数据库安装成功.

这时输入命令redis-cli对数据库发起链接,就可以对redis数据库做简单的测试了

关闭redis服务的方法,可以采用ps|redis的方式找到pid,然后通过kill -9 pid的方式关闭redis服务

启动redis-server的时候,一直会有两个警告消息
# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

解决方法:
echo 'vm.overcommit_memory = 1' >>/etc/sysctl.conf
sysctl -p

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

解决方法:
(1)echo never > /sys/kernel/mm/transparent_hugepage/enabled

(2)在/etc/rc.local文件中写入
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

将src下的redis-server、redis-cli 移到 /usr/local/redis文件夹下,并在该文件夹下建一个etc目录,将redis.conf移过来。
然后启动redis-server
./redis-server ./etc/redis.conf &

./redis-cli 连接并测试
redis> set foo bar
OK
redis> get foo
"bar"




php-redis的下载地址为:https://github.com/phpredis/phpredis/archive/develop.zip

wget https://github.com/phpredis/phpredis/archive/develop.zip

下载完后也放到/usr/local/src目录下
unzip develop.zip

cd /usr/local/src/phpredis-develop
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/phpize
make 
make install

在php.ini文件中增加
[redis]
extension=redis.so

重启php-fpm服务
service php-fpm stop
service php-fpm start

然后再查看一下phpinfo即可。

9.测试php redis扩展是否成功安装:

#test_redis.php
<?php
 $redis = new Redis();
 $redis->connect('127.0.0.1',6379);
 $redis->set('f','are you ok?');
 echo $redis->get('f');
?>

http://服务器地址/test_redis.php
如果能出现 are you ok? 就说明全都已经安装成功。




内核参数overcommit_memory 

它是 内存分配策略

可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

什么是Overcommit和OOM

    Linux对大部分申请内存的请求都回复"yes",以便能跑更多更大的程序。因为申请内存后,并不会马上使用内存。这种技术叫做Overcommit。当linux发现内存不足时,会发生OOM killer(OOM=out-of-memory)。它会选择杀死一些进程(用户态进程,不是内核线程),以便释放内存。

    当oom-killer发生时,linux会选择杀死哪些进程?选择进程的函数是oom_badness函数(在mm/oom_kill.c中),该函数会计算每个进程的点数(0~1000)。点数越高,这个进程越有可能被杀死。每个进程的点数跟oom_score_adj有关,而且oom_score_adj可以被设置(-1000最低,1000最高)。

解决方法:

     很简单,按提示的操作(将vm.overcommit_memory 设为1)即可:

     有三种方式修改内核参数,但要有root权限:

   (1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效

  (2)sysctl vm.overcommit_memory=1

  (3)echo 1 > /proc/sys/vm/overcommit_memory




1:从RedHat 6, OEL 6, SLES 11 and UEK2 kernels 开始,系统缺省会启用 Transparent HugePages :用来提高内存管理的性能透明大页(Transparent HugePages )和之前版本中的大页功能上类似。主要的区别是:Transparent HugePages 可以实时配置,不需要重启才能生效配置;
2:Transparent Huge Pages在32位的RHEL 6中是不支持的。
Transparent Huge Pages are not available on the 32-bit version of RHEL 6.

3: ORACLE官方不建议我们使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 时的开启透明大页(Transparent HugePages ), 因为透明大页(Transparent HugePages ) 存在一些问题:

        1.在RAC环境下 透明大页(Transparent HugePages )会导致异常节点重启,和性能问题;

        2.在单机环境中,透明大页(Transparent HugePages ) 也会导致一些异常的性能问题; 



vim /etc/init.d/redis

#/bin/sh
#Configurations injected by install_server below....

EXEC=/usr/local/redis/redis-server
CLIEXEC=/usr/local/redis/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/usr/local/redis/etc/redis.conf"
REDISPORT="6379"
###############
# SysV Init Information
# chkconfig: - 58 74
# description: redis_6379 is the redis daemon.
### BEGIN INIT INFO
# Provides: redis_6379
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop redis_6379
# Description: Redis daemon
### END INIT INFO


case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
            echo "$PIDFILE exists, process is already running or crashed"
        else
            echo "Starting Redis server..."
            $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
            echo "$PIDFILE does not exist, process is not running"
        else
            PID=$(cat $PIDFILE)
            echo "Stopping ..."
            $CLIEXEC -p $REDISPORT shutdown
            while [ -x /proc/${PID} ]
            do
                echo "Waiting for Redis to shutdown ..."
                sleep 1
            done
            echo "Redis stopped"
        fi
        ;;
    status)
        if [ ! -f $PIDFILE ]
        then
            echo 'Redis is not running'
        else
            echo "Redis is running ($(<$PIDFILE))"
        fi
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Please use start, stop, restart or status as first argument"
        ;;
esac

保存该文件后需要重启服务器才能生效


'staff' 组则通常为 help-desk/junior sysadmins, 允许成员在 /usr/local 目录下操作, 和在 /home 目录下创建目录.






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Debian安装最新版Redis

原文地址: CoderGO : Debian安装最新版Redis简介本文描述了Debian安装最新版Redis的过程,由于采用apt-get方式安装Redis会是较旧的版本,因此我们采用从官网下载源码...

debian 下安装 Redis

最近在使用redis,刚开始学习,一点一点慢慢积累,根据需求打算最终替换我的mysql库中的一个表,关于redis的介绍google之,下面先开始安装吧,使用系统为debian6。     下载...
  • ctbinzi
  • ctbinzi
  • 2014年09月29日 14:28
  • 4847

Linux(Debian)上安装Redis教程

-- 第一步下载文件到该目录 cd /usr/local/src wget http://download.redis.io/releases/redis-3.0.1.tar.gz 解压 tar ...

redis3.0.0 集群安装详细步骤

redis3.0.0 集群安装详细步骤,包含安装过程中遇到的所有问题。

debian 安装phpredis

安装phpredis模块 https://github.com/owlient/phpredis 下载phpredis 解压 shell> cd phpredis she...
  • lzz360
  • lzz360
  • 2015年08月13日 14:01
  • 631

Linux(Debian)上安装Redis3.2.8教程

-- 第一步下载文件到该目录 cd /usr/local/src wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压 tar ...

debian下安装php的一些扩展geoip,mongo,redis,libevent,proctitle,inotify,pcntl,uv,yaf

因为项目的关系,需要安装一些新的扩展 debian xfce 7.2 x64   下面3个都是通过apt-get安装的。 PHP 5.4.4-14+deb7u5 (cli) nginx1.2.1 ap...

php安装扩展的几种方法

转自:http://doc3.workerman.net/appendices/install-extension.html 安装扩展 注意 与Apache+PHP或者Nginx+PHP的运行模...
  • abel004
  • abel004
  • 2016年12月31日 17:59
  • 8620

Python爬虫包 BeautifulSoup 学习(六) 递归抓取

之前的代码都是对单个静态页面进行抓取,这是人为简化的例子。爬虫的主要目的就是为了沿着网络抓取需要的内容。它们的本质是一种递归的过程。它们首先需要获得网页的内容,然后分析页面内容并找到另一个URL,然后...

建议程序员都读一读的31篇论文系列笔记(1~2)

1. An Axiomatic Basis for Computer Programming. 1969年的一篇论文,主要讲用公理基础证明计算机编程的正确性,包括赋值/递推/组合/循环等。不是那么容易...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:debian7.7环境下 源码安装redis以及phpredis扩展
举报原因:
原因补充:

(最多只允许输入30个字)