Redis编译安装以及service配置

今天写这篇的原因是刚好在搭建一个东西需要用到redis环境,关于原因也就不多说了。
Redis是什么这种问题也不具体说了,就是一个基于内存的数据库软件。这边贴一段百科的介绍,具体的可以自己去查资料。

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

这篇的操作是基于linux的安装,redis版本5.0,Windows可以退散了。
这边就不扯其他的了,单刀直入地讲了

源码编译安装

为什么选择源码编译安装,这点我在介绍【nginx编译安装】那篇博文里讲过一点原因,redis的话主要还是因为软件包管理安装的版本比较老吧。

惯例编译安装前需要安装gcc和make,如果是ubuntu可以直接安装build-essential,这点我在nginx编译安装那篇也说过了,不赘述。

首先在官网下载redis源码包后解压,进入解压的源码包目录直接make、make install两步走就行了

这边make install默认的redis安装位置在/usr/local目录下,二进制文件在/usr/local/bin,不是root用户的话可能需要sudo
如果需要改变安装位置的话可以在make install后指定PREFIX
譬如make install PREFIX=/usr/local/redis修改安装位置在/usr/local/redis下,二进制文件就在/usr/local/redis/bin里。

我这里还是按照默认的位置安装,这样的话安装完成后可以直接使用redis-server测试运行一下。

配置文件

redis源码包里有示例的配置文件,我们直接使用即可,不过建一个专门存放redis配置文件的目录比较好,一般软件的配置文件都放在/etc下
我们就在/etc下创建一个redis的目录用来存放redis的配置文件,然后把源码包下的示例配置文件复制过去,并重命名为6379.conf

1
2
sudo mkdir /etc/redis
sudo cp /your/redis/redis.conf /etc/redis/6379.conf

这里重命名的6379是redis默认的启动端口。

现在修改一下6379.conf这个配置文件
将里面的daemonize no改为yes,启用后台运行

添加服务项

这边参考了这篇博文的内容,感兴趣可以看看

关于linux的系统服务管理的说明

linux的系统服务管理命令主要有两个,service和systemctl。
现在新版本发行版的linux基本上都是用systemctl,然后service命令也可以使用,但是执行时会被重写成systemctl命令,所以实际上用的还是systemctl。服务项的配置一般是放在/etc/systemd/system或者/lib/systemd/system下的,这个根据发行版本不同略有区别,自行确认。
老一点的发行版本可能用的就是原来的service命令,它的命令脚本位置一般在/etc/init.d或者/etc/rc.d/init.d下,根据发行版本不同略有区别,自行确认。

这边接下来就根据这两个不同情况来说明配置方法:

systemctl(systemd)

上面也说过了,服务配置可能放在/etc/systemd/system或者/lib/systemd/system下,自行确认。
现在服务配置的目录下新建一个redis.service脚本,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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/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

这里要注意,里面变量的具体值要是你自身安装的实际情况自行修改,譬如你修改了安装位置,那么ExecStart项里redis-server的绝对路径肯定也是要修改的
然后提一下这个PIDFile的值是和6379配置文件里的pidfile项一致。

接下来重载一下系统服务,就可以使用redis服务了

1
2
3
4
5
systemctl daemon-reload  # 重载系统服务

systemctl start redis # 启动redis服务
systemctl status redis # 查看redis服务状态
systemctl stop redis # 停止redis服务

service(init.d)

一开始也说过了,服务配置脚本位置可能在/etc/init.d或者/etc/rc.d/init.d下,自行确认
在redis的源码包下的utils目录里有redis服务的启动脚本,我们只需要将它复制到系统服务配置的目录下即可,这里假设是/etc/init.d

1
sudo cp /your/redis/utils/redis_init_script /etc/init.d/redis

然后将下面两行的内容添加到redis启动脚本的第二、三行(也就是#!/bin/sh的下面)

1
2
# chkconfig: 2345 90 10
# description: Redis is a persistentkey-value database

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

接下来就可以添加并使用服务了

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

service redis start # 启动redis服务
service redis status # 查看redis服务状态
service redis stop # 关闭redis服务