巧用install_server.sh脚本将redis进程服务化


前言

前面介绍了如何安装、启动redis服务,但是默认的启动脚本来管理服务还是非常不方便,并且不容易进行服务进程的管理。本文将介绍如果通过Redis安装文件中提供的工具脚本install_server.sh将Redis进程服务化。


一、为什么要进程服务化

  • 统一服务管理命令
    如果不进行服务化管理,那么在Centos上每个服务进程的启动、关闭都各不相同,也不便设置为后台守护进程启动,而进行服务化后,可以使用统一的一套命令:
    比如:
//以Centos6中service命令为例
//查看服务状态
service service.name status
//服务启动
service service.name start
//服务停止
service service.name stop
//服务重启
service service.name restart
  • 便于管理服务的生命周期,比如开机启动,监控
chkconfig –-add xxx //把服务添加到chkconfig列表
chkconfig --del xxx //把服务从chkconfig列表中删除
chkconfig xxx on //开启开机自动启动
chkconfig xxx off //关闭开机自动启动
chkconfig --list //查看所有chklist中服务
chkconfig --list xxx 查看指定服务

二、CentOS中服务管理的方式

  • 在Centos6之前,都是采用service + chkconfig命令进行服务管理。
  • 在Centos7之后,推荐采用systemd管理服务。
cp systemd-redis_server.service /etc/systemd/system/redis_6379.service
//重载服务配置
systemctl daemon-reload

//启动服务
systemctl start redis_6379.service

//关闭服务
systemctl stop redis_6379.service

//查看服务
systemctl list-unit-files |grep redis

//查看服务状态
systemctl status redis_6379.service

//服务开机自启动
systemctl enable redis_6379.service

//取消服务开机自启动
systemctl disable redis_6379.service

三、利用install_server.sh将redis进程服务化

环境说明

  • Centos7.0
  • Redis7.0

1、service + chkconfig方式

本质是通过脚本,在/etc/init.d/目录下生成了一个服务控制文件。

如果直接执行install_server.sh脚本,会出现如下提示:

cd /usr/local/redis-stable/utils
./install_server.sh

在这里插入图片描述
说明:
当前系统似乎使用的是systemd进行服务管理,请参考当前目录中的示例服务文件进行配置。

解决方案:
查看脚本,注释掉systemd服务的相关判断,采用service + chkconfig方式进行服务配置。
在这里插入图片描述
再次执行install_server.sh脚本,根据提示进行输入,即可完成服务化配置,自动安装好redis_6379服务,并添加开机启动,最后启动服务。
在这里插入图片描述

cat /etc/init.d/redis_6379
在这里插入图片描述

2、采用systemd管理服务

在/utils目录中,为我们提供了2个systemd-redis服务的脚本样例,
其中systemd-redis_server.service是单服务实例的样例,[email protected]是多服务实例配置样例。
在这里插入图片描述
查看systemd-redis_server.service文件:
需要设置supervised systemd,并且指定TimeoutStartSecTimeoutStopSec的值。
在这里插入图片描述

具体配置步骤:

  1. 如果需要systemd支持,编译时要添加参数make USE_SYSTEMD=yes
    在这里插入图片描述
yum install systemd-devel -y

make distclean

make USE_SYSTEMD=yes
  1. 将systemd-redis_server.service文件拷贝到/etc/systemd/system/目录下
//复制示例服务配置到/etc/systemd/system/目录下,文件名改为redis_6379.service,其中redis_6379是服务名称
cp systemd-redis_server.service /etc/systemd/system/redis_6379.service
  1. 修改redis_6379.service配置文件
    vi /etc/systemd/system/redis_6379.service
[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
#Before=your_application.service another_example_application.service
#AssertPathExists=/var/lib/redis
Wants=network-online.target
After=network-online.target

[Service]
#ExecStart=/usr/local/bin/redis-server --supervised systemd --daemonize no
## Alternatively, have redis-server load a configuration file:
//启动命令,需要修改
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
//停止命令,需要修改
ExecStop=/usr/local/bin/redis-cli -p 6379 shutdown
LimitNOFILE=10032
NoNewPrivileges=yes
#OOMScoreAdjust=-900
#PrivateTmp=yes
Type=notify
//需要修改
TimeoutStartSec=90
//需要修改
TimeoutStopSec=90
UMask=0077
//建议设置
#User=redis
#Group=redis
//建议设置
WorkingDirectory=/var/lib/redis/6379

[Install]
WantedBy=multi-user.target
  1. 修改6379.conf配置文件
    主要是将redis配置文件中的supervised属性改为systemd。
    vi /etc/redis/6379.conf
supervised systemd
  1. 加载、启动服务
//重新加载systemd的服务配置
systemctl daemon-reload

systemctl start redis_6379.service
//服务开机启动
systemctl enable redis_6379.service
//查看服务
systemctl list-unit-files |grep redis_6379
//查看服务状态
systemctl status redis_6379.service
systemctl stop redis_6379.service

猜你喜欢

转载自blog.csdn.net/w1014074794/article/details/129367170