redis队列的安装与配置,还有一些安全方面的配置
2016-07-04 16:28
716 查看
安装采用源码编译安装方法:
完成以上操作后执行:
有些机器因为没有安装一些软件就会有相应的错误提示,可自行查找再进行解决,例如我自己的机器就提示没有安装tcl,我用命令yum一些:
最后make test通过测试,将redis的服务端和客户端拷贝到系统目录:
然后新建目录,存放配置文件
在redis解压根目录中找到配置文件模板,复制到如下位置。
通过vim命令修改配置文件里面的参数:
设置服务在后台运行
再设置一下redis的pid路径,日志路径,数据库存放路径
编写脚本
大致的配置文件如下
编辑后之后保存,设置开机启动项:
脚本内容如下:
注意上面的User和Group配置,由于服务器用的nginx用户执行php程序,如果这里不设置redis的执行用户和用户组,默认是用root启动redis进程的,这样的话,当你用PHP的redis扩展来连接redis时候,由于权限问题,redis是拒绝连接的,因为nginx用户执行的php程序是无法访问root用户进程redis的,这个很重要。
启动redis后查看一下日志可以看到一些关于系统内存或内核的错误提示,这时需要修改一下配置:
配置
修改backlog连接数的最大值超过redis.conf中的
取消对透明巨页内存(transparenthuge
pages)的支持,因为这会造成redis使用过程产生延时和内存访问问题。
安装php的redis扩展
修改php.ini文件
添加一下记录:
重启php-fpm
查看phpinfo页面可以看见redis扩展支持
安全设置:
默认安装的redis是无需密码就可以远程连接的,如果你不需要远程连接,就可以关闭,只需要在配置文件设置如下代码:
bind 127.0.0.1
默认的redis端口是:6379
如果你的redis服务只需要本地连接,不用远程连接,还可以用unix套接字的方式连接
unixsocket /tmp/redis.sock
unixsocketperm 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
$ 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/redis mkdir /var/redis mkdir /var/redis/log mkdir /var/redis/run mkdir /var/redis/6379
在redis解压根目录中找到配置文件模板,复制到如下位置。
cp redis.conf /etc/redis/redis.conf
通过vim命令修改配置文件里面的参数:
daemonize yes
设置服务在后台运行
再设置一下redis的pid路径,日志路径,数据库存放路径
pidfile /var/redis/run/redis_6379.pid logfile /var/redis/log/redis_6379.log dir /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=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_6379.pid CONF="/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=nginx Group=nginx Type=forking ExecStart=/etc/init.d/redis start ExecStop=/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 找到更多有关基于sysctl的ip网络隧道的信息。
sysctl -w net.core.somaxconn=512
取消对透明巨页内存(transparenthuge
pages)的支持,因为这会造成redis使用过程产生延时和内存访问问题。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
安装php的redis扩展
$ 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.sock
unixsocketperm 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
相关文章推荐
- 非关系型数据库redis(三):Redis数据类型
- Centos6.5搭建Redis集群
- Redis学习笔记01--NoSQL/Redis概述
- 安装phpredis模块
- redis —— 第一篇 开始入手
- redis 存储对象
- spring-boot-data-redis线程池配置
- Redis-sentinel哨兵模式集群方案配置
- Redis安装+主从配置 过程中 的几个小 Tips
- redis的单实例配置+web链接redis
- Redis使用工具类
- webpy save session to redis
- redis视频学习笔记-1
- redis.conf配置文件详解
- redis实现附近的人,但jedis中没有相关api,那么直接使用lua脚本执行。
- Redis 主从同步配置
- Redis AOF 全持久化
- 非关系型数据库redis(二):Redis配置
- CentOS6.5安装redis(3.0.3)
- redis 配置文件详解