6.17 Установка и настройка Redis
Redis (Remote Dictionary Server) является мощной системой управления базами данных типа “ключ-значение”, получившей широкое распространение среди разработчиков благодаря своей высокой производительности и универсальности. Эта технология выступает не просто хранилищем данных, а служит эффективным инструментом кэширования, очередей сообщений и реализации сложных структур данных в реальном времени.
Уникальность Redis заключается в её способности хранить различные типы данных — от простых строк до сложных структур, таких как списки, множества, хэш-таблицы и другие. Благодаря поддержке операций in-memory и возможности сохранения данных на диск, Redis обеспечивает непревзойденную скорость работы с данными при сохранении надежности.
Важно: перед установкой Redis убедитесь, что Ваша система соответствует минимальным системным требованиям и имеет актуальные системные обновления.
Важно иметь уровень доступа root
. Настройку можно реализовать на наших услугах виртуальных и выделенных серверов.
Подготовка системы
Обновление системы
Для Debian/Ubuntu:
- sudo apt update
- sudo apt upgrade -y
Для CentOS/AlmaLinux/RockyLinux:
- sudo dnf update -y
Установка Redis
Debian/Ubuntu:
- # Загружаем и добавляем ключ для репозитория Redis
- curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
-
- # Добавляем репозиторий Redis в список источников APT
- echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
-
- # Устанавливаем Redis
- sudo apt install redis -y
CentOS/AlmaLinux/RockyLinux:
- sudo dnf install -y epel-release
- sudo dnf install -y redis
Базовая конфигурация Redis
- Редактирование конфигурационного файла:
- sudo nano /etc/redis/redis.conf
- Ключевые настройки безопасности:
# Ограничение прослушивания только для локального доступа
bind 127.0.0.1 ::1
# Установка надежного пароля
requirepass StrongRedisPassword2024!
# Ограничение использования памяти
maxmemory 2gb
maxmemory-policy allkeys-lru
# Отключение команд, которые могут использоваться для потенциального злоупотребления
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command SHUTDOWN ""
rename-command DEBUG ""
- Сохранение и перезапуск службы:
- sudo systemctl restart redis-server
- Включение автозапуска службы:
- sudo systemctl enable redis
- Проверка активности автозапуска:
- systemctl is-enabled redis
Если команда вернет enabled
, это означает, что автозапуск включен.
Может быть возвращен результат alias
, это означает, что сервис redis работает через символическую ссылку (alias) на другой сервис. Обычно это происходит, если в Вашей системе redis настроен как “псевдоним” к другому сервису, например, redis-server
.
Настройка межсетевых экранов
Информируем: для удобства ввода большого количества последовательных команд, Вам будет предоставлен пример с использованием Heredoc. Рассмотрим что это такое.
Heredoc (сокращенно от “here document”) является удобным механизмом в bash-скриптинге, который позволяет передавать многострочный текст или последовательность команд непосредственно в команду или интерпретатор. Синтаксис heredoc использует операторы <<
с произвольным разделителем (чаще всего EOF
), что создает уникальный способ группировки и выполнения команд.
Механизм heredoc работает следующим образом:
- Интерпретатор bash создает временный текстовый поток.
- Все команды между маркерами
<<EOF
иEOF
выполняются последовательно. - Позволяет группировать сложные последовательности команд без создания временных файлов.
- Обеспечивает контролируемую передачу данных между командами.
Основное преимущество — возможность выполнения блока команд с повышенными правами (через sudo
) без необходимости создания отдельного скрипта.
Настройка iptables:
- sudo bash << EOF
- # Полная конфигурация iptables для Redis
- iptables -F
- iptables -X
-
- # Базовые политики
- iptables -P INPUT DROP
- iptables -P FORWARD DROP
- iptables -P OUTPUT ACCEPT
-
- # Разрешение локальных соединений
- iptables -A INPUT -i lo -j ACCEPT
-
- # Разрешение установленных соединений
- iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-
- # Разрешение SSH
- iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-
- # Разрешение Redis из локальной сети
- iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 6379 -j ACCEPT
-
- # Закрытие порта Redis для внешних подключений
- iptables -A INPUT -p tcp --dport 6379 -j LOG --log-prefix "Redis Connection Attempt: "
- iptables -A INPUT -p tcp --dport 6379 -j DROP
- EOF
Сохранение правил:
- sudo apt install -y iptables-persistent
- netfilter-persistent save
При сохранении правил у Вас запросят подтверждение. Необходимо нажать Yes
.
Настройка firewalld:
- sudo bash << EOF
- # Установка и настройка firewalld
- dnf install -y firewalld
-
- # Запуск и активация службы
- systemctl enable firewalld
- systemctl start firewalld
-
- # Добавление правил для Redis
- firewall-cmd --permanent --add-port=6379/tcp
- firewall-cmd --permanent --add-rich-rule='
- rule family="ipv4"
- source address="192.168.0.0/24"
- port protocol="tcp" port="6379"
- accept'
-
- # Применение изменений
- firewall-cmd --reload
- EOF
Настройка UFW:
- sudo bash << EOF
- # Установка и базовая настройка UFW
- apt install -y ufw
-
- # Базовые политики
- ufw default deny incoming
- ufw default allow outgoing
-
- # Разрешение SSH
- ufw allow ssh
-
- # Разрешение Redis из локальной сети
- ufw allow from 192.168.0.0/24 to any port 6379
-
- # Активация UFW
- ufw enable
- EOF
Проверка статуса службы Redis
1. Проверка статуса системной службы Redis.
Чтобы узнать, работает ли служба Redis, выполните команду:
- sudo systemctl status redis
Вы увидите информацию о состоянии службы, включая активность и возможные ошибки.
2. Проверка работы Redis через redis-cli
.
Для быстрой проверки, отвечает ли Redis:
- redis-cli ping
В ответ должно быть PONG
, что указывает на корректную работу.
3. Проверка, прослушивает ли служба порт 6379 (порт по умолчанию).
Используйте netstat
или ss
, чтобы проверить, прослушивает ли Redis нужный порт:
- sudo netstat -lnp | grep 6379
Или с помощью ss
:
- sudo ss -lnp | grep 6379
Если порт прослушивается, это подтверждает, что Redis работает.
4. Дополнительная проверка конфигурации Redis.
Чтобы узнать активные параметры Redis, подключитесь к нему с помощью клиента:
- redis-cli
И введите команду:
- CONFIG GET *
Это позволит увидеть все параметры конфигурации, включая порт, режим работы и другие настройки.
