好的,我将每个步骤更加详细地展开,并且说明如何为 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 在后台运行:
    修改 daemonize 为 yes,这样 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 在崩溃时能够自动重启。
  • User 和 Group:以 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 配置文件中的 user 和 group 设置

Redis 服务是通过 systemd 启动的,在配置文件 /etc/systemd/system/redis.service 中,User 和 Group 被设置为 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=redis 和 Group=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 用户的管理权限,可以使用 su 或 sudo 切换到 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=redis 和 Group=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-cli 或 systemctl 停止 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 作为系统服务正常运行,并能够在系统启动时自动启动。

更多推荐