0%

Linux 安装redis 并配置服务

Centos 安装redis 并配置服务

一.下载源码包

1
2
3
4
5
6
# 安装gcc依赖
yum install -y gcc gcc-c++
wget http://download.redis.io/releases/redis-4.0.14.tar.gz
tar -zxvf redis-4.0.14.tar.gz -C /opt/
cd /opt/redis-4.0.14/
make PREFIX=/usr/local/redis install //指定安装的路径,

可能报错一

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error “Newer version of jemalloc required”
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src’
make: *** [all] Error 2

可以改成

make MALLOC=libc PREFIX=/usr/local/redis install
ll /usr/local/redis/bin

可以报错二

1
2
3
4
5
cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
cc: error: ../deps/lua/src/liblua.a: No such file or directory
make[1]: *** [redis-server] Error 1
make[1]: Leaving directory `/usr/local/src/redis-4.0.1/src'
make: *** [all] Error 2

解决方法:

  • 进入源码包目录下的deps目录中执行:
  • make lua hiredis linenoise

二、添加服务

a)、这个是centos6 的service 命令

1、创建服务脚本

1
2
3
4
cp /opt/redis-4.0.14/utils/redis_init_script  /etc/rc.d/init.d/redis
mkdir /etc/redis #创建redis目录,是为了以后可以存放多个redis配置
cp /opt/redis-4.0.14/redis.conf /etc/redis/6379.conf
vim /etc/rc.d/init.d/redis #修改如下圈出来的地方

前面两行注释是:redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。

2、修改配置文件

1
vim /etc/redis/6379.conf  
把daemnize no改为yes,意思是后台运行

3、添加服务

1
2
3
4
5
chkconfig --add redis   	#如果没报错的话,说明成功,可以用
chkconfig --list #查看所有服务

service redis start #启动redis服务器
ps -ef | grep redis #查看是否启动成功

b)、这个是centos 7 的systemctl 命令

使用systemctl 命令之前先来说说 systemctl脚本的配置

位置:/lib/systemd/system/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
部分主要是对这个服务的说明,内容包括Description和After,
Description 用于描述服务,
After 用于描述服务类别;
[Service]
部分是服务的关键,是服务的一些具体运行参数的设置,
这里:
Type=forking 是后台运行的形式,
PIDFile 为存放PID的文件路径,
ExecStart 为服务的运行命令,
ExecReload 为重启命令,
ExecStop 为停止命令,
PrivateTmp=True 表示给服务分配独立的临时空间,


[Install]
部分是服务安装的相关设置,可设置为多用户的

1、创建redis 脚本

1
vim /lib/systemd/system/redis.service

2、编辑内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/6379.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

先说明一下啊,上面的:
PIDFile 这个值要和 上面配置脚本中的 ExecStart 命令启动 redis 的配置文件(/etc/redis/6379.conf)里的pidfile 一样,比如下图:

ExecStart 前面是redis启动的服务脚本 空格 之后是启动需要的配置文件路径

3、重载系统服务

1
systemctl daemon-reload

4、启动redis 服务

1
systemctl start redis.service 

5、开机自启动 (可选)

1
systemctl enable redis.service

结束,配置不成功,评论说明,不出意外 3分钟之内回复

三、Centos一键脚本安装Redis

  • 使用脚本安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
set -e

REDIS_CONF="/etc/redis.conf"
SERVICE_NAME="redis"

echo -e "\033[36m[1/5] 安装EPEL仓库\033[0m"
dnf install -y epel-release

echo -e "\033[36m[2/5] 安装Redis\033[0m"
dnf install -y redis

echo -e "\033[36m[3/5] 配置Redis\033[0m"
# 备份原始配置
cp ${REDIS_CONF} ${REDIS_CONF}.bak

# 基础优化配置
sed -i 's/^bind 127.0.0.1 -::1/# bind 127.0.0.1 -::1/' ${REDIS_CONF}
sed -i 's/^protected-mode yes/protected-mode no/' ${REDIS_CONF}
sed -i 's/^daemonize no/daemonize yes/' ${REDIS_CONF}
sed -i 's/^# requirepass foobared/requirepass MyRedisPwd!/' ${REDIS_CONF}

echo -e "\033[36m[4/5] 启动服务\033[0m"
systemctl enable --now ${SERVICE_NAME}
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload

echo -e "\033[36m[5/5] 验证安装\033[0m"
echo "服务状态:"
systemctl status ${SERVICE_NAME} --no-pager

echo -e "\n连接测试:"
redis-cli -a MyRedisPwd! ping


您的打赏,是我创作的动力!不给钱?那我只能靠想象力充饥了。