- 操作系统:centos7
- 确保redis.conf中daemonize为yes,确保守护进程开启。
1.创建redis脚本
vim /etc/init.d/redis.sh
#!/bin/sh
#redis 服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。
# chkconfig: 2345 10 90
# description: Start and Stop redis
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
export PATH
REDISPORT=6379 #端口号,根据实际开放需求修改
EXEC=/usr/local/redis/bin/redis-server #redis-cli客户端启动脚本的位置
REDIS_CLI=/usr/local/redis/bin/redis-cli #redis-cli客户端启动脚本的位置
PIDFILE=/var/run/redis.pid #要与redis.conf配置文件中的配置相同
CONF="/usr/local/redis/etc/redis.conf" #redis.conf所在的位置
AUTH=123456 #redis-cli 认证密码,脚本关闭是需要用到
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed."
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE exists, process is not running."
else
PID=$(cat $PIDFILE)
echo "Stopping..."
$REDIS_CLI -p $REDISPORT -a $AUTH SHUTDOWN
sleep 2
while [ -x $PIDFILE ]
do
echo "Waiting for Redis to shutdown..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
chmod a+x chmod a+x /etc/init.d/redis.sh
2.创建自启服务
vim /etc/systemd/system/redis.service
#unit 本身的说明,以及与其他相依 daemon 的设置,包括在什么服务之后才启动此 unit 之类的设置值;
[Unit]
Description=redis.service
After=network.target #在network.target 启动之后执行
[Service]
Type=forking #以后台守护进程方式运行
PIDFile=/var/run/redis.pid #要注意的是,systemctl执行脚本需要确认其解释器 #!/bin/sh
ExecStart=/etc/init.d/redis start #systemctl start redis
ExecReload=/etc/init.d/redis restart
ExecStop=/etc/init.d/redis stop
PrivateTmp=true #分配临时独立空间
[Install]#这个项目就是将此 unit 安装到哪个 target 里面去的意思!
WantedBy=multi-user.target
3.设置开机服务自启
systemctl daemon-reload 重新加载systemctl配置文件
systemctl stop redis 停止运行中的redis
systemctl start redis 运行redis
systemctl enable redis 设置开机自启
注
- 1.systemctl start redis如Process 报错 (code=exited, status=203/EXEC)
第一步创建redis脚本完之后一定要 指定文件为可执行文件,并且文件中需要加上其解释器(#!/bin/sh
)chmod a+x chmod a+x /etc/init.d/redis.sh
- 2.创建redis.service时去掉中文