安装编译相关依赖

  • 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 6service服务
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 7systemd服务

/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_CLICONFIG_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的更多相关文章

  1. Linux Centos下编译安装Redis

    需要安装 tcl 8.5 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz //直接下载 sudo tar xzvf tcl8 ...

  2. Centos 下编译安装Redis

    安装环境说明: 操作系统:Centos 6.5 -64bit 安装路径:/usr/local/redis 开始编译redis tar -zxvf redis-2.8.19.tar.gz cd redi ...

  3. CentOS 6编译安装Redis

    [root@localhost ~]# vim /etc/sysconfig/iptables # 添加如下:-A INPUT -m state –state NEW -m tcp -p tcp –d ...

  4. CentOS 7.4 源码编译安装 Redis

    一.CentOS 7.4  源码编译安装 Redis 1.下载源码并解压 wget http://download.redis.io/releases/redis-4.0.10.tar.gz tar ...

  5. Redis学习笔记(1)- CentOS 6.4 安装Redis

    Redis学习笔记(1)- CentOS 6.4 安装Redis 2013.10.13     学习环境 vm 10.1 + 默认.新装的干净 CentOS 6.4  64BIT系统     准备 1 ...

  6. redis学习之——CentOS 6 下载安装redis

    一.检查当前环境: 安装过程中没有这些,命令,在CentOS 6,最小安装导致..如果执行完命令,Noting  to  do...字样说明环境正常. yum -y install rpm gcc w ...

  7. Docker容器编译安装Redis

    Docker容器编译安装Redis 1.创建容器 -i 交互模式 -d 后端运行 -h 容器的hostname --name 容器名 --network 网卡 --ip IP地址 -p 端口映射 -- ...

  8. centos下编译安装lnmp

    centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...

  9. CentOS 7 编译安装 Code::Blocks

    CentOS 7 编译安装 Code::Blocks yum install cairo-devel yum install pango-devel yum install atk-devel yum ...

随机推荐

  1. 正确 C# 未来的期望

    接触 C# 一年.整体上是一个很完好的语言,可是某些细节特征还是不够完美.这里记下我如今对它将来的一些期望. 更强大的泛型约束 与 C++ 的模板相似,C# 的泛型使得编写适用于多种类型的代码更加简洁 ...

  2. .net 模拟发起HTTP请求(用于上传文件)

    用C#在服务端发起http请求,附上代码一 /// <summary> /// 文件帮助类 /// </summary> public class FileHelper { / ...

  3. c#-WPF string,color,brush之间的转换

    原文:c#-WPF string,color,brush之间的转换 String转换成Color string-"ffffff" Color color = (Color)Colo ...

  4. 多线程——继承Thread类别

    详细java此前使用多线程,让我们来看看下面的问题. 什么是多线程     简单的理解成:cpu"同一时候"运行多个任务,这就是多线程. (究其本质,当涉及到进程和线程的概念.上面 ...

  5. 疯狂的图形(利用C# + GDI plus模拟杂乱无章的现实场景)

    原文:疯狂的图形(利用C# + GDI plus模拟杂乱无章的现实场景) 本文给出了模拟竹叶.长叶草.杂乱石头.天上繁星等关键代码.使用.Net环境下C#语言,GDI+编写.   模拟竹叶 挺像的吧? ...

  6. WCF服务的IIS托管(应用程序)

    基本思路 建立与发布参考网站托管 在IIS中某一网站,选择添加应用程序   访问服务uri:http://localhost/wcfAppTest/Service1.svcwcfAppTest/Ser ...

  7. 【C/S通信交互之Http篇】Cocos2dx(Client)使用Curl与Jetty(Server)实现手机网游Http通信框架(内含解决curl.h头文件找不到问题)

    之前已经分享过一篇基于Cocos2dx与服务器使用Socket进行通信的框架,还不太熟悉的请移步到如下博文中: [C/S通信交互之Socket篇]Cocos2dx(Client)使用BSD Socke ...

  8. 细谈unity资源管理的设计

    一.概要 本文主要说说Unity是如何管理的,基于何种方式,基于这种管理方式,又该如何规划资源管理,以及构建bundle,是后面需要详细讨论的. 二.Unity的资源管理方式 2.1 资源分类 uni ...

  9. UWP应用载入SVG图片的兼容性方案

    原文 UWP应用载入SVG图片的兼容性方案 新版本<纸书科学计算器>的更新点之一,就是优化了表达式的显示方式.在旧版本中,表达式里的符号是用png图片显示的,当用户放大看的时候会发现一些锯 ...

  10. 数据可视化图表ECharts

    介绍: ECharts是一个基于ZRender(轻量级Canvas类库)的纯javascript图表库,提供可交互.个性化的数据可视化图表. ECharts提供了折线图.柱状图.散点图.饼图.K线图, ...