目录
1.概述
解决部分老系统,如Centos6上启停Redis服务的问题。
2.Redis自带脚本
- Redis安装包下载
bash
wget http://download.redis.io/releases/redis-6.2.9.tar.gz
- 脚本存放在解压后安装包路径下utils目录中,redis_init_script与redis_init_script.tpl两个文件
bash
[root@centos utils]# pwd
# 请将/home/redis-6.2.9替换为安装包解压路径
/home/redis-6.2.9/utils
# 查看服务管理脚本
[root@centos utils]# ll redis_init_script*
-rwxrwxr-x 1 root root 1352 5月 19 14:12 redis_init_script
-rwxrwxr-x 1 root root 1047 5月 19 14:12 redis_init_script.tpl
3.Redis安装
参见我另一篇笔记: Redis单例部署
4.修改Redis默认脚本
bash
vim /etc/init.d/redis-server
bash
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFO
# 服务主目录
REDIS_HOME=/usr/local/redis
# 服务端口
REDISPORT=6379
# 服务端程序路径
EXEC=${REDIS_HOME}/bin/redis-server
# 客户端程序路径
CLIEXEC=${REDIS_HOME}/bin/redis-cli
# PID文件路径,注意与redis.conf配置文件中保持一致
PIDFILE=/var/run/redis/redis_${REDISPORT}.pid
# 配置文件路径
CONF="${REDIS_HOME}/redis.conf"
# 定义运行服务的普通用户,需要提前创建
USER="redis"
#if [ `whoami` != "${USER}" ]; then
# exec su - "${USER}"
#fi
# 定义sudo命令
CMD="/usr/bin/sudo -u ${USER}"
case "$1" in
# 启动服务
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
# 使用普通用户启动服务
exec $CMD $EXEC $CONF
fi
;;
# 停止服务
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
#$CLIEXEC -p $REDISPORT shutdown
# 因为Redis设置了密码,所以修改停止服务命令。
/bin/kill -s TERM ${PID}
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
/bin/rm -rf $PIDFILE
echo "Redis stopped"
fi
;;
# 服务状态
status)
if [ ! -f $PIDFILE ]
then
echo 'Redis is not running'
else
PID=$(cat $PIDFILE)
echo "Redis is running ($PID)"
fi
;;
# 重启服务
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Please use start or stop as first argument"
;;
esac
5.注册为Service
检验脚本/etc/init.d/redis-server
- 确保程序和配置文件路径正确
- 确保端口是redis服务监听端口(会使用pid文件,pid文件与redis.conf中配置需一致)。
脚本添加执行权限
bash
chmod +x /etc/init.d/redis-server
添加到redis-server服务
bash
chkconfig --add redis-server
启用redis-server服务
bash
# chkconfig redis-server on
6.功能验证
启动服务
bash
[root@centos utils]# service redis-server start
Starting Redis server...
bash
# 服务使用普通用户(redis)运行
[root@centos init.d]# ps -ef | grep 6379 | grep -v grep
redis 12530 1 0 18:54 ? 00:00:00 /usr/local/redis/bin/redis-server *:6379
服务状态
bash
[root@centos utils]# service redis-server status
Redis is running (11304)
bash
[root@centos utils]# netstat -nltp | grep 6379 | grep -v grep
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 11304/redis-server
tcp 0 0 :::6379 :::* LISTEN 11304/redis-server
重启服务
bash
[root@centos utils]# service redis-server restart
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...
停止服务
bash
[root@centos utils]# service redis-server stop
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped