redis队列的安装与配置,还有一些安全方面的配置

来源:互联网 发布:迷奇化妆品怎么样知乎 编辑:程序博客网 时间:2024/06/05 00:47

安装采用源码编译安装方法:

$ wget http://download.redis.io/releases/redis-3.2.1.tar.gz$ tar xzf redis-3.2.1.tar.gz$ cd redis-3.2.1$ make

完成以上操作后执行:

make test

有些机器因为没有安装一些软件就会有相应的错误提示,可自行查找再进行解决,例如我自己的机器就提示没有安装tcl,我用命令yum一些:

yum install -y tcl

最后make test通过测试,将redis的服务端和客户端拷贝到系统目录:

cp redis-server /usr/local/bin/cp redis-cli /usr/local/bin/


然后新建目录,存放配置文件

mkdir /etc/redismkdir /var/redismkdir /var/redis/logmkdir /var/redis/runmkdir /var/redis/6379 

redis解压根目录中找到配置文件模板,复制到如下位置。

cp redis.conf /etc/redis/redis.conf


通过vim命令修改配置文件里面的参数:

daemonize yes


设置服务在后台运行

再设置一下redis的pid路径,日志路径,数据库存放路径

pidfile /var/redis/run/redis_6379.pidlogfile /var/redis/log/redis_6379.logdir /var/redis/6379


编写脚本

vim /etc/init.d/redis


大致的配置文件如下

#!/bin/sh## Simple Redis init.d script conceived to work on Linux systems# as it does use of the /proc filesystem.REDISPORT=6379EXEC=/usr/local/bin/redis-serverCLIEXEC=/usr/local/bin/redis-cliPIDFILE=/var/run/redis_6379.pidCONF="/etc/redis/redis.conf"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        ;;    *)        echo "Please use start or stop as first argument"        ;;esac

编辑后之后保存,设置开机启动项:

centos6系统:chkconfig redis on
如果系统是centos7系统,则需要写个开机启动脚本:

vim /etc/systemd/system/redis.service

脚本内容如下:

[Unit]Description=Redis on port 6379[Service]User=nginxGroup=nginxType=forkingExecStart=/etc/init.d/redis startExecStop=/etc/init.d/redis stop[Install]WantedBy=multi-user.target

centos7系统设置开机启动:systemctl enable redis.service


注意上面的User和Group配置,由于服务器用的nginx用户执行php程序,如果这里不设置redis的执行用户和用户组,默认是用root启动redis进程的,这样的话,当你用PHP的redis扩展来连接redis时候,由于权限问题,redis是拒绝连接的,因为nginx用户执行的php程序是无法访问root用户进程redis的,这个很重要。

启动redis后查看一下日志可以看到一些关于系统内存或内核的错误提示,这时需要修改一下配置:

配置 vm.overcommit_memory 1,这可以避免数据被截断

sysctl -w vm.overcommit_memory=1

修改backlog连接数的最大值超过redis.conf中的 tcp-backlog 值,即默认值511。你可以在kernel.org 找到更多有关基于sysctlip网络隧道的信息。

sysctl -w net.core.somaxconn=512

取消对透明巨页内存(transparenthuge pages)的支持,因为这会造成redis使用过程产生延时和内存访问问题。

echo never > /sys/kernel/mm/transparent_hugepage/enabled


安装phpredis扩展


$ wget https://github.com/phpredis/phpredis/archive/2.2.4.tar.gz$ cd phpredis-2.2.7                      # 进入 phpredis 目录$ /usr/local/php/bin/phpize              # php安装后的路径$ ./configure --with-php-config=/usr/local/php/bin/php-config$ make && make install

修改php.ini文件


vi /etc/php.ini

添加一下记录:

extension=redis.so

重启php-fpm

systemctl restart php-fpm

查看phpinfo页面可以看见redis扩展支持


安全设置:


默认安装的redis是无需密码就可以远程连接的,如果你不需要远程连接,就可以关闭,只需要在配置文件设置如下代码:

bind 127.0.0.1

默认的redis端口是:6379

</pre><p>最好把默认端口改改,比如改为6380,则在配置文件如此改:</p><p><pre name="code" class="html">port 6380

如果你的redis服务只需要本地连接,不用远程连接,还可以用unix套接字的方式连接

unixsocket /tmp/redis.sockunixsocketperm 700

如果你需要远程连接redis最好开启一下密码验证:

requirepass yourpassword


添加以下的配置,转换一下命令,防止远程清空数据库或修改redis的配置:

rename-command FLUSHALL ""rename-command CONFIG   ""rename-command EVAL     ""rename-command FLUSHDB  ""


另外推荐看看外国佬的这篇文章:

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04




















0 0
原创粉丝点击