红联Linux门户
Linux帮助

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

发布时间:2016-07-05 10:38:17来源:linux网站作者:yongzhang52545
安装采用源码编译安装方法:
$ 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
最好把默认端口改改,比如改为6380,则在配置文件如此改: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  ""
 
本文永久更新地址:http://www.linuxdiyf.com/linux/22081.html