目录
/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