ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Centos7中将redis服务写入systemctl

2022-06-19 19:04:38  阅读:158  来源: 互联网

标签:systemd service redis Centos7 systemctl usr 6.2


 CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,比起原来的service和config两套命令,systemd整合了service和config的功能。Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。先安装一下redis,我这里是redis-6.2.3版本,不多说命令如下:

# 下载安装redis.
$ cd /usr/local/redis
$ wget https://download.redis.io/releases/redis-6.2.3.tar.gz
$ tar xzf redis-6.2.3.tar.gz
$ cd redis-6.2.3
$ make

# 安装完成之后添加快捷方式进/usr/bin中以方便后期使用redis-cli。
$ cd /usr/local/redis
$ mkdir etc
$ cp redis-6.2.3/redis.conf etc/
$ ln -s /usr/local/redis/redis-6.2.3/src/redis-server /usr/bin/redis-server
$ ln -s /usr/local/redis/redis-6.2.3/src/redis-cli /usr/bin/redis-cli

    这时redis就可以通过 redis-server /usr/local/redis/etc/redis.conf启动了。然后我们开始将其写入systemd中。进入/usr/lib/systemd/system/目录中,创建redis.service文件,.service文件定义一个服务,分为[Unit],[Service],[Install]三个部分,需要更改的就基本只有ExecStart这一行,即是你本机的redis启动命令。另外PIDFile保持和redis配置文件中一样。

$ cd /usr/lib/systemd/system/
$ vim redis.service
[Unit]
Description=Redis #描述内容
#在哪些服务启动之后启动
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
#PIDFile和redis.conf配置中一致
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/redis-6.2.3/src/redis-server /usr/local/redis/etc/redis.conf
#重新加载和停止服务的命令
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

#系统以默认多用户方式启动时,此服务自动运行。
[Install]
#Alias:服务别名
WantedBy=multi-user.target

  保存好之后开始操作systemctl,首先要执行 systemctl daemon-reload 命令,重载systemd配置以引入redis.service。然后使用命令将redis.service加进开机启动:systemctl enable redis.service。完成之后我们就可以启动redis服务。systemctl start redis.service。

    发现redis.service启动启来了,但碰到一个问题,systemctl start redis.service执行之后就阻塞在那里,后台服务配置相关肯定有问题。在redis的配置文件中可以看到有两项配置daemonize和supervised,配置文件中说,如果以systemd启动daemonize配置将不会有什么影响(但我测试发现并不是这样)。应该同时修改daemonize yes和修改supervised配置。建议使用auto或者systemd。这两项配置修改掉任何一项发现systemctl start redis.service都会被阻塞运行:

 

# When Redis is supervised by upstart or systemd, this parameter has no impact.
daemonize yes
#If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#supervised auto    - detect upstart or systemd method based on UPSTART_JOB or NOTIFY_SOCKET environment variables
supervised auto

systemctl其它命令:
查看服务是否设置开机启动: systemctl is-enabled redis.service
查看服务是否启动: systemctl is-active redis.service
禁止服务开机启动: systemctl disable redis.service
列出已经启动的unit: systemctl list-units (也可直接:systemctl)

标签:systemd,service,redis,Centos7,systemctl,usr,6.2
来源: https://www.cnblogs.com/xzlive/p/16391089.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有