CentOs 7.9 安装 Redis redis-7.2.5.tar.gz 设置开机启动详解,密码设置,开机启动...

CentOS 7.9 安装、配置与管理 Redis 7.2.5

好的,我将每个步骤更加详细地展开,并且说明如何为 Redis 设置密码。以下是更完整的过程:

1. 安装依赖项

在安装 Redis 之前,需要确保系统安装了必需的依赖项(编译工具和库):

sudo yum update -y
sudo yum install -y gcc make jemalloc
  • gcc:GNU 编译器,用于编译 C 代码。
  • make:构建工具,用于自动化编译程序。
  • jemalloc:内存分配器,Redis 默认使用 jemalloc 来优化内存管理。

2. 下载 Redis 安装包

到 Redis 的官网下载你需要的版本,或者使用 wget 直接下载:

cd /usr/local/src
sudo wget http://download.redis.io/releases/redis-7.2.5.tar.gz

3. 解压 Redis 安装包

下载完成后,解压 .tar.gz 文件:

sudo tar -xvzf redis-7.2.5.tar.gz
cd redis-7.2.5
  • tar:用于解压 .tar.gz 压缩包。
  • -xvzf:参数含义:x 表示解压,v 表示显示详细输出,z 表示解压 .gz 格式,f 表示指定文件名。

4. 编译 Redis

进入 Redis 安装包目录后,通过 make 命令编译 Redis:

sudo make

这个过程将编译 Redis 的所有源代码,并生成可执行文件。

安装 Redis 后,可以执行以下命令验证安装:

sudo make install
  • make install 命令会将编译好的文件复制到系统目录中(通常是 /usr/local/bin)。

5. 配置 Redis

复制 Redis 配置文件

Redis 包含一个默认配置文件 redis.conf,你需要将它复制到 /etc/ 目录,这样更方便管理。

sudo cp redis.conf /etc/redis.conf
修改 Redis 配置文件

编辑 /etc/redis.conf 配置文件来进行必要的修改。使用 Vim 或任何编辑器:

sudo vim /etc/redis.conf

以下是常用的配置修改:

  1. 让 Redis 在后台运行
    修改 daemonizeyes,这样 Redis 就会以后台服务的形式运行,而不是在前台运行:

    daemonize yes
    
  2. 配置 Redis 监听的 IP
    如果你希望 Redis 允许远程连接,需要修改 bind 设置为 0.0.0.0,让 Redis 监听所有 IP 地址。如果你只想让本地访问,保留默认的 127.0.0.1

    bind 0.0.0.0
    
  3. 开启 Redis 密码保护
    为了确保 Redis 安全性,你可以为 Redis 设置密码。修改 requirepass 配置项并设置密码,例如:

    requirepass your_password_here
    

    your_password_here 替换为你想要设置的密码。

  4. 关闭保护模式
    默认情况下,Redis 会启用保护模式,以防止未经授权的访问。在开放访问时,可以关闭保护模式:

    protected-mode no
    

完成配置后,保存并退出编辑器(在 Vim 中按 Esc,然后输入 :wq)。

6. 创建 Redis 用户和工作目录

为 Redis 创建专用用户和目录,以提高安全性:

sudo useradd redis
sudo mkdir /var/lib/redis
sudo mkdir /var/log/redis

设置目录权限,使 Redis 用户可以访问这些目录:

sudo chown redis:redis /var/lib/redis /var/log/redis

7. 配置 Redis 为系统服务

为了使 Redis 在系统启动时自动运行,需要创建一个 systemd 服务文件。

创建 Redis 服务文件

创建一个新的 systemd 服务文件 /etc/systemd/system/redis.service

sudo vim /etc/systemd/system/redis.service

将以下内容粘贴到文件中:

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
User=redis
Group=redis
PrivateTmp=yes

[Install]
WantedBy=multi-user.target
  • ExecStart:指定 Redis 服务器启动的命令。
  • ExecStop:指定停止 Redis 服务器的命令。
  • Restart:设为 always,确保 Redis 在崩溃时能够自动重启。
  • UserGroup:以 Redis 用户身份启动进程。
  • PrivateTmp:开启独立的临时文件夹,增强安全性。

保存并退出。

重新加载 systemd 配置并启动 Redis 服务

在创建了 Redis 的 systemd 服务文件后,重新加载 systemd 配置并启动 Redis 服务:

sudo systemctl daemon-reload
sudo systemctl start redis

8. 设置 Redis 开机自启动

确保 Redis 服务在系统启动时自动启动:

sudo systemctl enable redis

9. 验证 Redis 服务是否成功启动

检查 Redis 服务的状态,确保它正在运行:

sudo systemctl status redis

如果 Redis 正在运行,你应该看到类似如下的信息:

● redis.service - Redis In-Memory Data Store
   Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-12-16 13:25:55 UTC; 1min 30s ago
 Main PID: 2035 (redis-server)
   CGroup: /system.slice/redis.service
           └─2035 /usr/local/bin/redis-server 127.0.0.1:6379

10. 测试 Redis 是否正常运行

你可以通过 Redis 命令行工具 redis-cli 来测试 Redis 是否正常运行:

redis-cli

连接后,如果你设置了密码,可以通过以下命令进行身份验证:

auth your_password_here

然后你可以执行一个简单的 Redis 命令来确认 Redis 是否正常运行:

ping

如果返回 PONG,说明 Redis 正常运行。

总结

至此,你已经成功地在 CentOS 7.9 上安装并配置了 Redis 7.2.5,并设置了 Redis 服务在系统启动时自动启动,且为 Redis 配置了密码保护。

果返回 PONG,说明 Redis 正常运行。 怎么退出

redis-cli 中,退出 Redis 客户端的方法很简单,只需输入以下命令:

exit

或者,你也可以按 Ctrl + C 直接退出。

这两种方法都会退出 Redis 命令行界面。

根据以上 我怎么知道我登录的是 专用用户 redis

要确认你是否以 Redis 专用用户身份登录,可以通过以下几种方法来检查:

方法 1: 使用 whoami 命令

在命令行中使用 whoami 命令来查看当前登录的用户。如果你已经使用 Redis 配置文件设置了 Redis 作为专用用户启动服务,可以在 redis-cli 之外的终端执行以下命令:

whoami

如果输出的用户名是 redis,那么说明你当前是以 Redis 用户身份登录的。

方法 2: 使用 ps 命令查看进程

你还可以使用 ps 命令查看 Redis 进程的执行用户。执行以下命令:

ps aux | grep redis

你应该能看到类似以下的输出:

redis     2035  0.0  0.1  127208  3724 ?        Ssl  12:25   0:00 /usr/local/bin/redis-server 127.0.0.1:6379

在这行输出中,第一个字段显示的是运行 Redis 进程的用户(在这个例子中是 redis)。如果它显示为 redis,则说明 Redis 是由专用的 redis 用户启动和运行的。

方法 3: 检查 ps 命令输出的进程所属用户

你也可以使用 pstree 命令查看 Redis 服务的父子进程,并检查它是否由 redis 用户启动:

pstree -u redis

这会显示以 redis 用户身份运行的进程树。如果你看到 Redis 的父进程是 redis 用户,则确认 Redis 是由该用户运行的。

方法 4: 检查 Redis 配置文件中的 usergroup 设置

Redis 服务是通过 systemd 启动的,在配置文件 /etc/systemd/system/redis.service 中,UserGroup 被设置为 redis,这意味着 Redis 会以 redis 用户和组身份运行。

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
User=redis
Group=redis

如果你的 redis.service 文件中确实设置了 User=redisGroup=redis,那么 Redis 就应该在 redis 用户下运行。

小结

  • 通过 whoami 命令检查当前登录用户。
  • 通过 ps aux | grep redis 查看 Redis 进程所属用户。
  • 确认 Redis 服务的启动用户是否为 redis 用户。

root 用户 能操作 运行redis 吗?

是的,root 用户可以操作和运行 Redis,但通常不推荐root 用户运行 Redis,原因如下:

1. 安全性问题

  • root 用户运行 Redis 会使得系统面临潜在的安全风险。如果 Redis 进程遭到攻击或出现漏洞,攻击者将能够获得 root 权限,从而完全控制整个系统。
  • Redis 作为一个数据库和缓存系统,其本身并不需要 root 权限来运行,且大多数情况下没有特别的需求要求 root 用户执行它。运行在普通用户下可以减少被攻击时的危害。

2. 最小权限原则

  • 根据“最小权限”原则,程序应只拥有执行其任务所必需的最低权限。以 redis 用户运行 Redis 能保证即使 Redis 被攻击,攻击者也只能对 Redis 本身的进程和文件进行操作,无法对整个系统进行更改或危害。
  • 在本例中,redis 用户并不需要执行系统级别的管理任务,除非做某些特定操作,如安装或配置文件的修改,这时可以暂时切换到 root 用户进行管理。

3. 如何操作 Redis

如果你是 root 用户,你依然可以启动和管理 Redis。你可以通过以下几种方式操作 Redis 服务:

启动 Redis 服务:

如果你以 root 用户身份启动 Redis 服务,可以使用 systemctl 启动:

sudo systemctl start redis
查看 Redis 服务状态:

你也可以通过 systemctl 查看 Redis 服务的状态:

sudo systemctl status redis
root 用户运行 Redis:

如果你不想使用 systemd 启动 Redis,直接以 root 用户启动 Redis 服务:

/usr/local/bin/redis-server /etc/redis.conf
切换到 redis 用户后运行:

如果你希望保持 root 用户的管理权限,可以使用 susudo 切换到 redis 用户后再启动 Redis。

sudo su - redis
/usr/local/bin/redis-server /etc/redis.conf

4. 如何限制 root 用户操作 Redis

为了防止 root 用户意外地以不安全的方式操作 Redis,通常我们会通过以下步骤来确保 Redis 以专用用户 redis 运行:

  1. 确保 Redis 的配置文件 /etc/redis.conf 设置了 daemonize yes,并且启用了密码保护 (requirepass),以减少潜在的安全隐患。
  2. 通过 systemd 启动 Redis 服务,并在服务文件中配置 User=redisGroup=redis,确保 Redis 永远以非 root 用户身份运行。

例如,配置 redis.service 文件如下:

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
User=redis
Group=redis
PrivateTmp=yes

[Install]
WantedBy=multi-user.target

总结

  • root 用户当然可以启动和操作 Redis,但出于安全性考虑,通常我们建议使用专用的非特权用户(如 redis 用户)来运行 Redis。
  • 以非 root 用户(如 redis)运行 Redis,能够限制潜在的安全风险,并遵循最小权限原则,避免系统被全面破坏。

完成以上操作后,怎么来停止启动 reidis ?

完成 Redis 安装和配置后,停止和启动 Redis 服务器有几种方法。如果你使用的是 systemd 来管理 Redis 服务,可以通过以下命令来启动和停止 Redis。

1. 使用 systemctl 管理 Redis 服务

如果你通过 systemd 配置 Redis 作为服务启动(参考之前的步骤),你可以使用以下命令来停止和启动 Redis。

启动 Redis 服务:
sudo systemctl start redis
  • 启动 Redis 服务并让它在后台运行。
停止 Redis 服务:
sudo systemctl stop redis
  • 停止正在运行的 Redis 服务。
重启 Redis 服务:
sudo systemctl restart redis
  • 如果你修改了 Redis 配置文件(如 /etc/redis.conf),可以通过重启服务来应用更改。
查看 Redis 服务状态:
sudo systemctl status redis
  • 查看 Redis 服务的当前状态。如果 Redis 正在运行,你会看到它的 PID 和状态信息。

2. 直接使用 Redis 命令手动停止

如果你没有通过 systemd 启动 Redis,而是直接在终端运行了 redis-server,你可以通过以下方法停止 Redis。

使用 redis-cli 停止 Redis:

如果你已经进入了 redis-cli,可以使用 shutdown 命令来停止 Redis。

  1. 启动 redis-cli

    redis-cli
    
  2. 进入 redis-cli 后,输入:

    shutdown
    

    这将关闭 Redis 服务。

    如果 Redis 配置了密码保护(如在 /etc/redis.conf 中设置了 requirepass),你需要先进行身份验证:

    auth your_password_here
    shutdown
    
使用 kill 命令手动终止 Redis 进程:

如果你不能通过 redis-clisystemctl 停止 Redis,也可以手动终止 Redis 进程。首先,通过 ps 命令查找 Redis 进程:

ps aux | grep redis

然后使用 kill 命令终止 Redis 进程:

sudo kill -9 <pid>

其中 <pid> 是 Redis 进程的 ID。

3. 如何配置 Redis 服务在启动时自动启动/关闭

如果你想确保 Redis 服务在系统启动时自动启动,可以使用以下命令:

sudo systemctl enable redis
  • 这样每次系统启动时,Redis 会自动启动。

如果你想禁止 Redis 在系统启动时自动启动,使用以下命令禁用它:

sudo systemctl disable redis

总结:

  • 通过 systemctl

    • 启动:sudo systemctl start redis
    • 停止:sudo systemctl stop redis
    • 重启:sudo systemctl restart redis
    • 查看状态:sudo systemctl status redis
  • 通过 redis-cli

    • 连接 Redis 后,执行 shutdown 命令来停止服务。
  • 直接终止进程

    • 使用 ps aux | grep redis 查找 Redis 进程 ID,使用 kill -9 <pid> 来强制终止进程。

使用 systemctl 管理 Redis 是最常见且最推荐的方式,因为它能够确保 Redis 作为系统服务正常运行,并能够在系统启动时自动启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值