Linux(阿里云服务器)安装Redis及配置redis开机自启动

  • Post author:
  • Post category:linux



目录


下载


解压


编译安装


文件管理


启动


常用配置


bind


logfile


dbfilename


dir


protected-mode


requirepass


将Redis设置成为一个服务开机自启


redis做成服务 – 方式一


redis做成服务 – 方式二


修改读写权限


修改redis.conf


开启服务自启动


加入开机自启服务


重启服务验证


启动停止服务


redis做成服务 – 方式三systemctl


修改redis.conf配置


创建服务


开机自启


相关操作命令


安装过程中的错误及解决方式


Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!


解决方式


Is this ok? Then press ENTER to go on or Ctrl-C to abort.Mmmmm… the default config is missing. Did you switch to the utils directory?


解决方式


/var/run/redis_6379.pid exists, process is already running or crashed


解决方式


下载

去官网下载

点此进入

解压

上传下载的 redis-6.2.6.tar.gz 文件到阿里服务器,我的存放路径在 /usr/local/software 目录下。

进入文件存储目录:

cd /usr/local/software

解压:

tar -xvf redis-6.2.6.tar.gz

编译安装

进入解压后的文件夹 redis-6.2.6 执行make命令进行编译,然后进入src目录安装。

进入redis解压目录:

cd /usr/local/software/redis-6.2.6

编译:

make

如果是新服务安装的时候可能缺少gcc等依赖,报错如下:

/bin/sh: cc: command not found

make[1]: *** [adlist.o] Error 127

make[1]: Leaving directory `/usr/local/software/redis-6.2.6/src’

make: *** [all] Error 2

使用如下命令安装完依赖,删掉解压包重新解压安装即可:

yum -y install gcc gcc-c++ libstdc++-devel

进入src目录:

cd /usr/local/software/redis-6.2.6/src

安装:

make install

文件管理

在解压包redis-6.2.6文件夹中创建bin和etc文件夹,将redis.conf文件移动到 /etc目录,进入src目录,移动mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server到/bin目录。

创建目录:

cd /usr/local/software/redis-6.2.6
mkdir bin

移动src目录下的几个文件到bin目录:

cd src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/software/redis-6.2.6/bin

启动

进入bin目录并指定配置文件启动。

cd /usr/local/software/redis-6.2.6/bin
redis-server /usr/local/software/redis-6.2.6/redis.conf

常用配置

bind

bind可以配置redis服务可以通过哪些ip进行访问,比如:0.0.0.0表示可以服务器上所有的ipv4地址都可以访问redis服务(对于阿里云服务器实际上就只有一个公网地址可以用来访问),也可以配置特定的ip地址,比如:bind 8.50.182.233

配置文件中注释如下,实际使用按自己的来,我配置成了bind * -::*

# bind 192.168.1.100 10.0.0.1     # listens on two specific IPv4 addresses
# bind 127.0.0.1 ::1              # listens on loopback IPv4 and IPv6
# bind * -::*                     # like the default, all available interfaces

logfile

配置日志存放路径,比如我配置的如下:

logfile /usr/local/software/redis-logs/log.log

如果没有redis-logs文件夹,需要先创建,否则启动会报错。

dbfilename

指定本地数据库文件名,默认为dump.rdb

dir

指定数据存放路径,比如我配置的如下:

dir /usr/local/software/redis-data/

如果没有redis-data文件夹,需要先创建,否则启动会报错。默认目录为

./

,表示在哪启动,dump.rdb就在哪生成。

protected-mode

redis的保护模式,默认为:protected-mode yes 有时候在配置允许远程访问的时候,不想指定bind,会将bind注释掉,然后将protected-mode改为no,关闭保护模式,这样就可以远程访问到redis服务了,但是要注意,这样是不安全的,最好设置一个复杂一点的密码。

requirepass

配置登录密码,比如我配置的如下:

requirepass sdzy&&@123

将Redis设置成为一个服务开机自启

redis做成服务 – 方式一

进入redis解压目录的utils目录:

/usr/local/software/redis-6.2.6/utils

执行如下命令:

./install_server.sh

控制台让输入的地方一路回车即可,如果过程中出现问题,看下面常见错误中的解决方法。

从上面的图中可以看到,服务名为redis_6379,改为redis。

mv /etc/init.d/redis_6379 /etc/init.d/redis


将以上红框中的配置根据实际情况自己设置,比如我设置的如下:

redis做成服务 – 方式二

将 /usr/local/software/redis-6.2.6/utils 目录下的 redis_init_script 文件复制到 /etc/init.d 目录下:

cp /usr/local/software/redis-6.2.6/utils/redis_init_script /etc/init.d/

进入 /etc/init.d 目录:

cd /etc/init.d/

重命名:

mv redis_init_script redis

同方法一,将里面的信息改为自己的,如果跟我同版本的redis,复制如下内容替换redis中的内容即可:

#!/bin/sh
#Configurations injected by install_server below....

EXEC=/usr/local/software/redis-6.2.6/bin/redis-server
CLIEXEC=/usr/local/software/redis-6.2.6/bin/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/usr/local/software/redis-6.2.6/redis.conf"
REDISPORT="6379"
###############
# SysV Init Information
# chkconfig: - 58 74
# description: redis_6379 is the redis daemon.
### BEGIN INIT INFO
# Provides: redis_6379
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop redis_6379
# Description: Redis daemon
### END INIT INFO


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
        ;;
    status)
        PID=$(cat $PIDFILE)
        if [ ! -x /proc/${PID} ]
        then
            echo 'Redis is not running'
        else
            echo "Redis is running ($PID)"
        fi
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Please use start, stop, restart or status as first argument"
        ;;
esac

修改读写权限

chmod +x /etc/init.d/redis

修改redis.conf

回到redis安装目录中的redis.conf。

cd /usr/local/software/redis-6.2.6/etc/redis.conf

将daemonize改为yes。

开启服务自启动

chkconfig redis on

加入开机自启服务

chkconfig --add redis

重启服务验证

重启服务器后,查看redis是否自启动,如下:

ps -ef|grep redis

启动停止服务

停止服务:

service redis stop

启动服务:

service redis start

启动时也可能发生如下错误:


/var/run/redis_6379.pid exists, process is already running or crashed

具体看下面常见错误中的解决方法。

redis做成服务 – 方式三systemctl

修改redis.conf配置

修改redis.conf配置文件中的以下几项:

bind 0.0.0.0

protected-mode no

daemonize yes

创建服务

在/usr/lib/systemd/system下创建redis.service文件,内容如下:

cat > /usr/lib/systemd/system/redis.service <<EOF
[Unit]
Description=Redis
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/software/redis-6.2.6/bin/redis-server /usr/local/software/redis-6.2.6/redis.conf
ExecReload=/usr/local/software/redis-6.2.6/bin/redis-server -s reload
ExecStop=/usr/local/software/redis-6.2.6/bin/redis-server -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

开机自启

使用如下命令配置redis开机自启,

systemctl enable redis

执行上面的命令之后,在 /etc/systemd/system/multi-user.target.wants目录下会添加一个符号链接,这个链接指向 /usr/lib/systemd/system/里面的 redis.service文件。

设置开机启动后,需要等下一次开机的时候,才会自动执行 /etc/systemd/system/目录中的文件。

相关操作命令

启动:

systemctl start redis

停止:

systemctl stop redis

重启:

systemctl restart redis

查看状态:

systemctl status redis

禁用开机自启:

systemctl disable redis

添加开机自启:

systemctl enable redis

安装过程中的错误及解决方式

Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!

以上错误会出现在执行

./install_server.sh

命令过程中。

vi ./install_server.sh

解决方式

注释掉相关代码:

Is this ok? Then press ENTER to go on or Ctrl-C to abort.

Mmmmm… the default config is missing. Did you switch to the utils directory?

以上错误也是出现在执行

./install_server.sh

命令过程中。

解决方式

install_server.sh的上一个目录层下没有找到配置文件 redis.conf


/var/run/redis_6379.pid exists, process is already running or crashed

解决方式

删掉已存在的redis_6379.pid文件,如下:

rm -rf /var/run/redis_6379.pid



版权声明:本文为H900302原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。