linux下设置redis开机启动

1、 设置redis.conf中daemonize为yes,确保守护进程开启。
2、 编写开机自启动脚本

基本原理为:
系统开机启动时会去加载/etc/init.d/下面的脚本,通常而言每个脚本文件会自定义实现程序的启动;若想将新的程序开机自启动,只需在该目录下添加一个自定义启动程序的脚本,然后设置相应规则即可。
如在这里我们在/etc/init.d/下新建一个 redis 的脚本,开机启动时会去加载执行该脚本。

[root@VM-16-6-centos ~]# find / -name redis.conf
/www/server/redis/redis.conf
#设置redis.conf中daemonize为yes,确保守护进程开启。
[root@VM-16-6-centos ~]# vim /www/server/redis/redis.conf

#查找redis_init_script文件,在redis安装目录下/utils/redis_init_script
[root@VM-16-6-centos /]# find / -name redis_init_script
/www/server/redis/utils/redis_init_script
#复制启动脚本到/etc/init.d
[root@VM-16-6-centos /]# cp /www/server/redis/utils/redis_init_script  /etc/init.d/redis
#修改 /etc/init.d/redis
[root@VM-16-6-centos /]# vim /etc/init.d/redis

脚本内容如下:

#!/bin/sh  
#chkconfig: 2345 80 90  
# Simple Redis init.d script conceived to work on Linux systems  
# as it does use of the /proc filesystem.  
REDISPORT=6379                          #端口号,这是默认的,如果你安装的时候不是默认端口号,则需要修改
REDISPATH=/usr/local/bin/                #redis-server启动脚本的所在目录,你如果忘了可以用find / -name redis-server 或whereis redis-server找到 
EXEC=${REDISPATH}/redis-server            
CLIEXEC=${REDISPATH}/redis-cli  
PIDFILE=/var/run/redis_${REDISPORT}.pid  #在redis.conf中可找到该路径
CONF="${REDISPATH}/redis.conf"           #redis.conf的位置, 如果不和redis-server在同一目录要修改成你的redis.conf所在目录
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  
    ;;  
  stop)  
    if [ ! -f $PIDFILE ]  
    then  
        echo "$PIDFILE does not exist, process is not running"  
    else  
        PID=$(cat $PIDFILE)  
        echo "Stopping ..."  
        $CLIEXEC -p $REDISPORT shutdown  
        while [ -x /proc/${PID} ]  
        do  
          echo "Waiting for Redis to shutdown ..."  
          sleep 1  
        done  
        echo "Redis stopped"  
    fi  
    ;;  
  *)  
    echo "Please use start or stop as first argument"  
    ;;  
esac  

写完后保存退出

我这里宝塔自动配置了

#!/bin/sh
# chkconfig: 2345 56 26
# description: Redis Service

### BEGIN INIT INFO
# Provides:          Redis
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts Redis
# Description:       starts the BT-Web
### END INIT INFO

# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
#pkill -9 redis-server
ulimit -n 10240
CONF="/www/server/redis/redis.conf"
REDIS_PORT=$(cat $CONF |grep port|grep -v '#'|awk '{print $2}')
REDIS_PASS=$(cat $CONF |grep requirepass|grep -v '#'|awk '{print $2}')
REDIS_HOST=$(cat $CONF |grep bind|grep -v '#'|awk '{print $2}')
if [ "$REDIS_PASS" != "" ];then
	REDIS_PASS=" -a $REDIS_PASS"
fi
if [ -f "/www/server/redis/start.pl" ];then
	STAR_PORT=$(cat /www/server/redis/start.pl)
else
	STAR_PORT="6379"
fi
EXEC=/www/server/redis/src/redis-server
CLIEXEC="/www/server/redis/src/redis-cli -h ${REDIS_HOST} -p ${STAR_PORT}${REDIS_PASS}"
PIDFILE=/www/server/redis/redis.pid

redis_start(){
	if [ -f "/www/server/redis/redis.pid" ]; then
		ps -p $(cat ${PIDFILE}) > /dev/null 2>&1
		if [ $? -ne "0" ]; then
			rm -f ${PIDFILE}
		else
			echo "redis is running! ($(cat ${PIDFILE}))"
			exit 0
		fi
	fi
	echo "Starting redis server..."
	sudo -u redis $EXEC $CONF
	echo ${REDIS_PORT} > /www/server/redis/start.pl
	echo "Starting redis success!"
}
redis_status(){
	if [ -f "/www/server/redis/redis.pid" ]; then
		ps -p $(cat ${PIDFILE}) > /dev/null 2>&1
		if [ $? -ne "0" ]; then
			echo "Redis is not running, buy pid file is exits ${PIDFILE}"
			exit 1
		else
			echo "redis is running! ($(cat ${PIDFILE}))"
			exit 0
		fi
	else
		echo "redis is stopped"
		exit 0
	fi
}
redis_stop(){
	echo "Stopping ..."
	$CLIEXEC shutdown
	sleep 1
	if [ -f "/www/server/redis/redis.pid" ];then
		kill -9 $(cat /www/server/redis/redis.pid)
	fi
	rm -f ${PIDFILE}
	echo "Redis stopped"
}

case "$1" in
	start)
		redis_start
		;;
	stop)
		redis_stop
		;;
	status)
		redis_status
		;;
	restart|reload)
		redis_stop
		sleep 0.3
		redis_start
		;;
	*)
		echo "Please use start or stop as first argument"
		;;
esac

设置可执行权限:

chmod 777 /etc/init.d/redis

启动redis:

/etc/init.d/redis start

执行结束之后用redis-cli 或者 ps aux|grep redis 查看redis是否成功启动.

设置开机启动:
chkconfig redis on

关机重启测试:

reboot

如何查看redis服务正常启动?
使用ps查看或netstat

ps aux | grep redis-server 
netstat -tunple | grep 6379

systemctl管理Redis启动、停止、开机启动

  1. 创建服务
    用service来管理服务的时候,是在/etc/init.d/目录中创建一个脚本文件,来管理服务的启动和停止;

在systemctl中,也类似,文件目录有所不同,在/lib/systemd/system目录下创建一个脚本文件redis.service,里面的内容如下:

[Unit]
Description=Redis
After=network.target
[Service]
ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis.conf --daemonize no
ExecStop=/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
[Install]
WantedBy=multi-user.target
 

[Unit] 表示这是基础信息
Description 是描述
After 是在那个服务后面启动,一般是网络服务启动后启动
[Service] 表示这里是服务信息
ExecStart 是启动服务的命令
ExecStop 是停止服务的指令
[Install] 表示这是是安装相关信息
WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

  1. 创建软链接
    创建软链接是为了下一步系统初始化时自动启动服务
ln -s /lib/systemd/system/redis.service /etc/systemd/system/multi-user.target.wants/redis.service

创建软链接就好比Windows下的快捷方式

ln -s 是创建软链接
ln -s 原文件 目标文件(快捷方式的决定地址)

如果创建软连接的时候出现异常,不要担心,看看/etc/systemd/system/multi-user.target.wants/ 目录是否正常创建软链接为准,有时候报错只是提示一下,其实成功了。

$ ll /etc/systemd/system/multi-user.target.wants/
total 8
drwxr-xr-x 2 root root 4096 Mar 30 15:46 ./
drwxr-xr-x 13 root root 4096 Mar 13 14:18 ../
lrwxrwxrwx 1 root root 31 Nov 23 14:43 redis.service -> /lib/systemd/system/redis.service
  1. 刷新配置
    刚刚配置的服务需要让systemctl能识别,就必须刷新配置
 systemctl daemon-reload

如果没有权限可以使用sudo
$ sudo systemctl daemon-reload
4. 启动、重启、停止
启动redis
$ systemctl start redis
重启redis
$ systemctl restart redis
停止redis
$ systemctl stop redis

  1. 开机自启动
    redis服务加入开机启动
    $ systemctl enable redis
    禁止开机启动
    $ systemctl disable redis
  2. 查看状态
    查看状态
    $ systemctl status redis
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值