CentOS 7编译安装Redis
安装编译相关依赖
- CentOS/Fedora
 yum install gcc gcc-c++ cmake tcl
下载Redis源码包
curl -o redis-4.0.10.tar.gz http://download.redis.io/releases/redis-4.0.10.tar.gz
解压Redis源码包
tar -xzvf redis-4.0.10.tar.gz
编译
具体过程:
# 进入解压目录, 默认在当前目录
cd redis-4.0.10
# 执行make
make
# 安装, 指定目录
make PREFIX=/usr/local/redis install
Redis配置
# 将配置文件放在/usr/local/redis/etc/下面, 放在/etc/redis/下也可以
mkdir /usr/local/redis/etc/
# 将解压目录中的redis.conf拷贝到/usr/local/redis/etc/下面
cp redis.conf /usr/local/redis/etc/
# 进入redis的执行文件目录
cd /usr/local/redis/bin/
# 将redis-benchmark, redis-cli, redis-server复制到/usr/bin
cp redis-benchmark redis-cli redis-server /usr/bin/
调整内存分配使用方式, 并使其生效:
# 此参数可用的值为0,1,2
# 0.表示当用户空间请求更多的内存时,内核尝试估算出可用的内存
# 1.表示内核允许超量使用内存直到内存用完为止
# 2.表示整个内存地址空间不能超过swap+(vm.overcommit_ratio)%的RAM值 
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl -p
修改Redis配置和Redis加固
Redis配置
编辑配置文件vim /usr/local/redis/etc/redis.conf, 将其中的对应内容修改为:
# redis以守护进程的方式运行, no表示不以守护进程的方式运行(会占用一个终端)
daemonize yes
# 密码
requirepass password
# 绑定ip
# bind 127.0.0.1
# 端口
port 7480
# 数据目录
dir /data/redis
# 客户端闲置多长时间后断开连接,默认为0关闭此功能
timeout 300
# 设置redis日志级别,默认级别:notice
loglevel verbose
# 设置日志文件的输出方式,如果以守护进程的方式运行redis 默认:""
# 并且日志输出设置为stdout,那么日志信息就输出到/dev/null里面去了
logfile stdout
Redis加固
- 绑定127.0.0.1 
 如果只是本地通信, 就确保监听在本地, 修改配置文件的- bind 127.0.0.1
- 设置防火墙 
 如果需要其他机器访问,或者设置了slave模式,那就记得加上相应的防火墙设置,命令如下:
 - iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT
- 认证 
 添加密码, 修改配置文件- requirepass asdlkashdkj123123
- 低权限账户 
 创建一个redis用户, 使用这个用户执行- redis-server
useradd -M -s /sbin/nologin redis
setsid sudo -u redis /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf'
Redis启动脚本
- CentOS 6的- service服务
cp /root/redis-4.0.10/utils/redis_init_script  /etc/rc.d/init.d/redis
在文件的开头#!的下一行添加vim /etc/rc.d/init.d/redis:
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
如果添加了密码, 请添加-a password在$CLIEXEC -a password -p $REDISPORT shutdown中.
再在stop的;;后添加:
restart)
    $0 stop
    $0 start
    ;;
status)
    PID=$(cat $PIDFILE)
    if [ ! -x /proc/${PID} ]
    then
        echo 'Redis is not running'
    else
        echo "Redis is running ($PID)"
    fi
    ;;
例如:
#!/bin/sh
#
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides:     redis_7480
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO
REDISPORT=7480
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/usr/local/redis/etc/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
                printf "Redis \033[1;32;32mStarted...\033[0m\n"
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, Process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -a password -p $REDISPORT shutdown >> /dev/null 2>&1
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                printf "Redis \033[1;32;32mStopped...\033[0m\n"
        fi
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    status)
        if [ ! -f $PIDFILE ]
        then
            echo "$PIDFILE does not exist, Process is not running"
            exit 6379
        fi
        PID=$(cat $PIDFILE)
        if [ ! -x /proc/${PID} ]
        then
            printf "Redis is \033[1;31;31mnot running\033[0m\n"
        else
            printf "Redis is \033[1;32;32mrunning\033[0m ($PID)\n"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac
# 如果没报错的话,说明成功,可以用
chkconfig --add redis
# 启动redis服务器
service redis start
# 开机自启
chkconfig redis on
# 查看是否启动成功
ps -ef | grep redis
- CentOS 7的- systemd服务
在/usr/lib/systemd/system目录下创建redis.service文件, 权限为root.root 755, 输入以下内容, 将ExecStart后面的执行路径修改为自己的路径:
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --daemonize yes
ExecStop=/usr/local/redis/bin/redis-cli -a password -p 6379 shutdown
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
然后创建/usr/libexec/redis-shutdown文件, 输入以下内容, 记得将REDIS_CLI和CONFIG_FILE修改为自己的路径:
#!/bin/bash
#
# Wrapper to close properly redis and sentinel
test x"$REDIS_DEBUG" != x && set -x
REDIS_CLI=/usr/local/redis/bin/redis-cli
# Retrieve service name
SERVICE_NAME="$1"
if [ -z "$SERVICE_NAME" ]; then
   SERVICE_NAME=redis
fi
# Get the proper config file based on service name
CONFIG_FILE="/usr/local/redis/etc/$SERVICE_NAME.conf"
# Use awk to retrieve host, port from config file
HOST=`awk '/^[[:blank:]]*bind/ { print $2 }' $CONFIG_FILE | tail -n1`
PORT=`awk '/^[[:blank:]]*port/ { print $2 }' $CONFIG_FILE | tail -n1`
PASS=`awk '/^[[:blank:]]*requirepass/ { print $2 }' $CONFIG_FILE | tail -n1`
SOCK=`awk '/^[[:blank:]]*unixsocket\s/ { print $2 }' $CONFIG_FILE | tail -n1`
# Just in case, use default host, port
HOST=${HOST:-127.0.0.1}
if [ "$SERVICE_NAME" = redis ]; then
    PORT=${PORT:-6379}
else
    PORT=${PORT:-26739}
fi
# Setup additional parameters
# e.g password-protected redis instances
[ -z "$PASS"  ] || ADDITIONAL_PARAMS="-a $PASS"
# shutdown the service properly
if [ -e "$SOCK" ] ; then
    $REDIS_CLI -s $SOCK $ADDITIONAL_PARAMS shutdown
else
    $REDIS_CLI -h $HOST -p $PORT $ADDITIONAL_PARAMS shutdown
fi
修改/usr/libexec/redis-shutdown权限, chmod 755 /usr/libexec/redis-shutdown
重新载入systemd, 扫描新的或有变动的service, systemctl daemon-reload
开机自启, systemctl enable redis
CentOS 7编译安装Redis的更多相关文章
- Linux Centos下编译安装Redis
		需要安装 tcl 8.5 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz //直接下载 sudo tar xzvf tcl8 ... 
- Centos 下编译安装Redis
		安装环境说明: 操作系统:Centos 6.5 -64bit 安装路径:/usr/local/redis 开始编译redis tar -zxvf redis-2.8.19.tar.gz cd redi ... 
- CentOS 6编译安装Redis
		[root@localhost ~]# vim /etc/sysconfig/iptables # 添加如下:-A INPUT -m state –state NEW -m tcp -p tcp –d ... 
- CentOS 7.4  源码编译安装 Redis
		一.CentOS 7.4 源码编译安装 Redis 1.下载源码并解压 wget http://download.redis.io/releases/redis-4.0.10.tar.gz tar ... 
- Redis学习笔记(1)- CentOS 6.4 安装Redis
		Redis学习笔记(1)- CentOS 6.4 安装Redis 2013.10.13 学习环境 vm 10.1 + 默认.新装的干净 CentOS 6.4 64BIT系统 准备 1 ... 
- redis学习之——CentOS 6  下载安装redis
		一.检查当前环境: 安装过程中没有这些,命令,在CentOS 6,最小安装导致..如果执行完命令,Noting to do...字样说明环境正常. yum -y install rpm gcc w ... 
- Docker容器编译安装Redis
		Docker容器编译安装Redis 1.创建容器 -i 交互模式 -d 后端运行 -h 容器的hostname --name 容器名 --network 网卡 --ip IP地址 -p 端口映射 -- ... 
- centos下编译安装lnmp
		centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ... 
- CentOS 7 编译安装 Code::Blocks
		CentOS 7 编译安装 Code::Blocks yum install cairo-devel yum install pango-devel yum install atk-devel yum ... 
随机推荐
- 【剑指offer】直扑克
			个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想測測自己的手气,看看能不能抽到顺子,假设抽到的话,他决定去买体育彩票,嘿嘿! ! "红心A,黑桃3,小王,大王,方 ... 
- Hadoop源代码分析:HDFS读取和写入数据流控制(DataTransferThrottler类别)
			DataTransferThrottler类别Datanode读取和写入数据时控制传输数据速率.这个类是线程安全的,它可以由多个线程共享. 用途是构建DataTransferThrottler对象,并 ... 
- WPF窗体隐藏鼠标光标的方法
			原文:WPF窗体隐藏鼠标光标的方法 要引用 System.Windows.Input; Mouse.OverrideCursor = Cursors.None; 去掉 Override 则使用: ... 
- <PC>HP网络共享并创建一个热点问题
			郁闷了一年多 你不能使用本地连接的开放热点 网上说的网卡驱动程序,系统设置等.,我们解决不了 原本BIOS节能设置错误 导致在连续主动对自己的有线无线功能被禁用 该LAN\WLAN Switchin ... 
- C++ 异常机制分析(C++标准库定义了12种异常,很多大公司的C++编码规范也是明确禁止使用异常的,如google、Qt)
			阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开.RAII 异常机制与构造函数 异常机制与析构函数 noexcept修饰符与noexcept操作符 异常处理的性能 ... 
- 自动备份Mysql数据库脚本
			[root@bogon ~]# cat auto_backup_mysql.sh #!/bin/bash #auto backup mysql db #by authors wugk #define ... 
- SQL Server数据库碎片整理
			碎片产生 在SQL Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构 SQL Server向每个页内存储数据的最小单位是表的行(Row) ... 
- Django 下添加左侧字段显示和搜索
			在对应的apps下建立xadmin.py from .models import EmailVerifyRecord import xadminclass EmailVerifyRecordAdmin ... 
- 原 BinaryWriter和BinaryReader(二进制文件的读写)
			原文 BinaryWriter和BinaryReader(二进制文件的读写) C#的FileStream类提供了最原始的字节级上的文件读写功能,但我们习惯于对字符串操作,于是StreamWriter和 ... 
- 伪类&伪元素
			刚开始学习伪类和伪元素的时候,觉得好混乱呀,分不清有什么区别,用的时候也没注意对比.现在总结一下他们的区别吧. w3c中对它们的定义分别为: css伪类用于向某些选择器添加特殊的效果. css伪元素用 ... 
