如何在 Ubuntu Linux 上配置和安装 Redis
在本文中,我们将学习如何配置 Redis。Redis 是一种内存中的键值存储,因其灵活性和性能而广受欢迎,并支持多种语言。我们将在 Ubuntu Linux 服务器上配置它。为了演示,我们需要一个非 root 用户,并为该用户设置 Sudo 权限以执行操作。
安装构建和测试依赖项
为了获取 Redis 的最新版本,我们将获取最新的源代码,并编译和安装软件。为此,我们需要安装软件编译的依赖项。
我们还需要从 Ubuntu 存储库安装 build-essential 元软件包,并下载用于测试二进制文件的“tcl”软件包。
# sudo apt-get update # sudo apt-get install build-essentials tcl
Redis 下载、编译和安装
下载源代码并解压。在临时文件夹中创建一个文件夹
# mkdir /tmp/redis # cd /tmp/redis
下载 Redis 的最新稳定版本,我们可以使用以下命令获取
# curl -O http://download.redis.io/redis-stable.tar.gz # tar xzvf redis-stable.tar.gz # cd redis-stable
构建和安装 Redis
我们将使用以下命令编译和安装 Redis 二进制文件
# make
源代码编译完成后,我们将获得二进制文件,我们运行以下命令来测试套件
# make test
我们可以使用以下命令在系统上安装所有二进制文件。
# make install
在 Ubuntu 上配置 Redis
由于我们刚刚安装了 Redis,因此我们可以开始配置 Redis。我们需要创建目录 /etc/redis
# mkdir /etc/redis
复制包含在 Redis 源代码归档文件中的 Redis 配置文件
# cp /tmp/redis/redis-stable/redis.conf /etc/redis
使用编辑器打开配置文件
# vi /etc/redis/redis.conf
在配置文件中,我们将找到一个名为“supervised”的指令,该指令设置为 no,因为我们使用 systemd 初始化系统,所以我们可以将其更改为 systemd。
# If you run Redis from upstart or systemd, Redis can interact with your # supervision tree. Options: # supervised no - no supervision interaction # supervised upstart - signal upstart by putting Redis into SIGSTOP mode # supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET # supervised auto - detect upstart or systemd method based on # UPSTART_JOB or NOTIFY_SOCKET environment variables # Note: these supervision methods only signal "process is ready." # They do not enable continuous liveness pings back to your supervisor. supervised systemd
接下来,找到 dir 指令并将 dire 指令更改为 /var/lib/redis,此选项用于指定 Redis 将用于转储持久数据目录的目录。此位置具有写权限,普通用户无法查看。
# The working directory. # # The DB will be written inside this directory, with the filename specified # above using the 'dbfilename' configuration directive. # # The Append Only File will also be created inside this directory. # # Note that you must specify a directory here, not a file name. dir /var/lib/redis Save the changes and close the file
为 Redis 创建 systemd 单元文件
我们可以创建一个 **systemd** 文件,以便 **init** 系统可以管理进程。
# touch /etc/systemd/system/redis.service # vi /etc/systemd/system/redis.service
我们从 [Unit] 部分开始,添加描述并定义一个需求,即我们需要网络能够最先可用以启动此服务。
[Unit] Description=Redis 内存数据存储 After=network.target
在 [service] 部分,我们将指定服务的行为。出于安全原因,我们不会以 root 用户身份运行服务。我们将专门分配一个用户和组,他们将简单地调用 Redis。
要启动服务,我们需要调用指向我们配置的 redis-server 二进制文件。要停止服务,我们将使用 Redis shutdown 命令,该命令将使用 redis-cli 二进制文件执行。
[Unit] Description=Redis In-Memory Data Store After=network.target [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always [Install] section, we define the systemd to target the service to attach to enable (configured to start at boot time). [Unit] Description=Redis In-Memory Data Store After=network.target [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target
创建 Redis 用户、组和目录
# add users --system --group --no-create-home redis # mkdir /var/lib/redis # chown redis:redis /var/lib/redis # chmod 770 /var/lib/redis
启动和测试 Redis
我们已准备好启动 Redis 服务器
# systemctl start redis
要检查服务是否无错误运行,我们可以运行以下命令 -
# systemctl status redis redis.service - Redis Server Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2016-05-13 11:42:00 EDT; 5min 03s ago Process: 7127 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS) Main PID: 7143 (redis-server) Tasks: 6 (limit: 512) Memory: 10864.0K CPU: 79ms CGroup: /system.slice/redis.service └─7143 /usr/local/bin/redis-server 127.0.0.1:6379
启用 Redis 在启动时启动
# sudo systemctl enable redis
我们应该已在我们的环境中安装并配置了一个 Redis 实例,以便我们可以将其用于内存数据结构存储,以及用作数据库、缓存和消息代理。