文章目录
前言
前面介绍了如何安装、启动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
,并且指定TimeoutStartSec
和TimeoutStopSec
的值。
具体配置步骤:
- 如果需要systemd支持,编译时要添加参数
make USE_SYSTEMD=yes
yum install systemd-devel -y
make distclean
make USE_SYSTEMD=yes
- 将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
- 修改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
- 修改6379.conf配置文件
主要是将redis配置文件中的supervised属性改为systemd。
vi /etc/redis/6379.conf
supervised systemd
- 加载、启动服务
//重新加载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