Гид по технологиям

Установка и базовая настройка Redis Server на Ubuntu 22.04

• 7 min read • Базы данных • Обновлено 23 Nov 2025
Redis на Ubuntu 22.04 — установка и безопасность
Redis на Ubuntu 22.04 — установка и безопасность

Иллюстрация логотипа Redis

  • Пошагово: обновите систему, установите пакет redis-server, отредактируйте /etc/redis/redis.conf для привязки к нужному интерфейсу и supervised=systemd, включите аутентификацию и переименуйте опасные команды. Перезапустите сервис и проверьте через redis-cli.
  • В продакшне дополнительно включите шифрование на транспортном уровне (TLS), настройте резервное копирование, мониторинг и ACL/пароли.

О чём эта статья

В этой инструкции описано, как установить Redis Server на Ubuntu 22.04 LTS, выполнить базовую конфигурацию и применить простые меры безопасности, подготовив инстанс для тестирования и дальнейшей продакшен-подготовки. Подходит для администраторов и инженеров DevOps.

Ключевые варианты использования: база данных в памяти, кэш, брокер сообщений. Поддерживаемые структуры: строки, хэши, списки, множества, отсортированные множества, битмапы, HyperLogLog, потоки и геоданные с radius-запросами.

Предварительные требования

  • Ubuntu 22.04 LTS.
  • Для тестовой установки достаточно 1 ГБ ОЗУ и 2 CPU, но для продакшена нужно больше ресурсов в зависимости от нагрузки и объёма данных.
  • Доступ по sudo.

Важно: всегда тестируйте конфигурацию на выделённом стенде перед переносом в продакшен.

Что мы сделаем

  • Установим redis-server из репозитория Ubuntu
  • Настроим базовую конфигурацию (bind, supervised)
  • Включим базовую защиту: сеть, пароль, переименование и отключение опасных команд
  • Проверим работу и покажем приемочные тесты

Шаг 1 — Установка Redis Server

Сначала обновите индекс пакетов и обновите установленные пакеты:

sudo apt update
sudo apt upgrade -y

Обновление пакетов

Установите пакет redis-server из официального репозитория Ubuntu:

sudo apt install redis-server -y

Установка Redis

Если после установки появится сообщение о нестарте службы — не паникуйте: обычно требуется настроить supervised и bind, и затем перезапустить сервис.


Шаг 2 — Базовая конфигурация Redis Server

Конфигурационный файл Redis находится в каталоге /etc/redis. Откройте основной файл конфигурации redis.conf в текстовом редакторе:

sudo nano /etc/redis/redis.conf
  1. Привязка сетевого интерфейса

По умолчанию Redis слушает все интерфейсы, что опасно. Для тестовой установки и когда клиент и сервер на одной машине — ограничьте доступ локальным интерфейсом:

bind 127.0.0.1 ::1

Привязка Redis к localhost

На продакшене используйте внутренние IP сети (например 10. или 192.168.) и никогда не оставляйте Redis доступным напрямую из публичного интернета.

  1. Supervised для systemd

Если вы используете systemd (стандарт для Ubuntu), задайте supervised:

supervised systemd

Использование systemd

Сохраните файл и закройте редактор.

Перезапустите и включите сервис в автозагрузку:

sudo systemctl restart redis-server
sudo systemctl enable redis-server

Перезапуск Redis для применения изменений

Проверьте статус:

sudo systemctl status redis-server

Статус сервиса Redis

Убедитесь, что служба активна. Далее проверьте, на каком порту слушает Redis (по умолчанию 6379):

ss -plnt4

Порт, на котором слушает Redis

Проверка через клиент:

redis-cli ping
redis-cli ping "Hello Howtoforge redis Server"

Тест Redis

Ожидаемый ответ: PONG или строка, которую вы передали.


Шаг 3 — Защита установки Redis

Здесь собраны базовые шаги по повышению безопасности. Это не исчерпывающий набор мер, но достаточный для начального hardening.

1. Сетевая безопасность

  • Всегда ограничивайте bind к localhost или к закрытой внутренней сети.
  • Используйте межсетевой экран (ufw/iptables) для запрета доступа к 6379 извне.

Пример правила ufw, которое разрешает только локальную сеть 192.168.1.0/24:

sudo ufw allow from 192.168.1.0/24 to any port 6379 proto tcp
sudo ufw deny 6379/tcp

Примечание: настройки ufw применяются после включения ufw.

2. Аутентификация по паролю

Разкомментируйте и установите сильный пароль в redis.conf:

requirepass MySecretSecurePassword

После этого все клиенты должны выполнять AUTH перед выполнением команд.

Важно: храните пароли в безопасном хранилище (vault) и не коммитите их в репозитории.

3. Отключение опасных команд

Переименование или отключение команд снижает риск случайной или злонамеренной очистки данных и изменения конфигурации через CLI:

# rename-command COMMAND "CUSTOM"
rename-command FLUSHALL "DELITALL"
rename-command CONFIG "MYSERVERCONF"

Перезапустите сервис:

sudo systemctl restart redis-server

После этого попытки вызвать старые команды вернут ошибку.

4. Рекомендации по шифрованию и каналам связи

Redis по умолчанию не шифрует трафик. Для защищённого продакшена рассмотрите:

  • Включение TLS в Redis (доступно в официальных релизах, требует генерации сертификатов)
  • Или настройка TLS через proxy (stunnel, HAProxy, nginx)
  • Использование VPN или private VPC для коммуникации между приложениями и Redis

5. ACL и пользователи (если поддерживается)

Начиная с Redis 6, доступны ACL: создавайте отдельные пользователей с минимально необходимыми правами вместо общего requirepass, когда это возможно.

6. Права на файлы и системные ограничения

  • Запустите Redis от непользовательского системного аккаунта
  • Убедитесь, что /var/lib/redis и /etc/redis имеют корректные права
  • Настройте ulimit и systemd ресурсов для предотвращения потребления всех системных ресурсов

Шаг 4 — Тестирование

Ниже — приёмочные тесты и примеры команд.

1. Тест хоста и аутентификации

Подключитесь к серверу:

redis-cli -h 127.0.0.1 -p 6379

Если включён пароль, потребуется авторизация:

AUTH MySecretSecurePassword

После успешной авторизации попробуйте:

PING "Hello Redis"

Ожидаемый ответ: “Hello Redis” или PONG в зависимости от запроса.

Успешная аутентификация Redis

2. Тест переименованных команд

Попробуйте вызвать запрещённые команды:

FLUSHALL
CONFIG

Они должны вернуть ошибку. Вместо них используйте переименованные команды:

DELITALL
MYSERVERCONF get bind
MYSERVERCONF get requirepass

Тестирование переименованных команд

3. Примеры CRUD через redis-cli

SET Name "Hakase Labs"
SET Blog "Howtoforge.com"
KEYS *
DELITALL

Команда DELITALL (переименованный FLUSHALL) удалит все ключи.


Дополнительные рекомендации для продакшена

Ниже — подборка практик и методологии, которые помогут подготовить Redis к реальной нагрузке.

  • Репликация: используйте master-replica для высокой доступности и чтения с реплик.
  • Персистентность: выберите RDB или AOF в зависимости от требований к потерям данных (RPO). AOF обеспечивает более мелкие интервалы потерь при правильной конфигурации.
  • Бекапы: регулярные копии RDB/AOF и проверка восстановления на стенде.
  • Мониторинг: метрики памяти, number of keys, eviction, hit/miss rate, connected clients. Интегрируйте в Prometheus/Grafana.
  • Ограничения по памяти: устанавливайте maxmemory и политику вытеснения (eviction policy).
  • Планирование ресурсов: Redis чувствителен к задержкам ввода-вывода и недостатку памяти — используйте быстрые диски и достаточный объём ОЗУ.
  • High Availability: рассмотрите Sentinel или внешние решения с автоматическим failover.

SOP: Быстрый план развертывания нового Redis-инстанса

  1. Подготовка сервера: обновить ОС, установить базовые утилиты.
  2. Установить redis-server и выполнить systemctl enable.
  3. В /etc/redis/redis.conf:
    • Установить bind на внутренний IP
    • supervised systemd
    • requirepass или ACL
    • настроить persistence (RDB/AOF)
    • переименовать опасные команды
  4. Настроить ufw/iptables для запрета доступа из внешней сети.
  5. Перезапустить и проверить статус.
  6. Настроить мониторинг и резервное копирование.
  7. Выполнить нагрузочное тестирование и примеры функциональных сценариев.

План восстановления и инцидентный рукопис

Классические сценарии и быстрые действия:

  • Redis не запускается после конфигурации: проверить journalctl -u redis-server, вернуть изменения в redis.conf, перезапустить.
  • Падение по OOM: проанализировать maxmemory, eviction policy, уменьшить рабочую нагрузку, перезапустить с ограничениями памяти.
  • Коррупция RDB/AOF: остановить сервер, попытаться загрузить старую копию из бэкапа, промониторить время восстановления.
  • Случайное удаление данных: восстановить из последнего бэкапа и применить журналы изменений, если есть.

Шаги отката при неудачной конфигурации:

  1. Остановить redis-server.
  2. Вернуть резервную копию /etc/redis/redis.conf и /var/lib/redis.
  3. Перезапустить сервис и проверить целостность.

Критерии приёмки

  • Сервис redis-server запущен и активен (systemctl status)
  • Порт 6379 слушает только на ожидаемом интерфейсе
  • AUTH защищает доступ (если включён requirepass)
  • Переименованные команды запрещены для старых имён
  • Резервное копирование настроено и проверено на восстановление
  • Мониторинг собирает ключевые метрики

Стратегия выбора режима персистентности

flowchart TD
  A[Начало: нужна ли персистентность?] -->|Нет| B[Отключить персистентность, использовать как чистый кэш]
  A -->|Да| C[Требуется быстрое восстановление после сбоя?]
  C -->|Нет: допускаются потери данных| D[Выбрать RDB: периодические снапшоты]
  C -->|Да: минимизировать потери| E[Выбрать AOF либо RDB+AOF]
  E --> F[Настроить rewrite и fsync policy]
  D --> G[Настроить частые снапшоты и бекапы]

Роли и чек-листы

Оператор:

  • Проверить systemctl status
  • Настроить логирование и мониторинг
  • Регулярно тестировать бэкапы

Разработчик:

  • Использовать таймауты и обработки ошибок при подключении к Redis
  • Не полагаться на несохранённые данные при критичных операциях

Безопасность:

  • Проверить доступы по сети
  • Внедрить TLS/ACL и управление секретами

Тест-кейсы и критерии приёмки

  1. Установка: redis-server устанавливается без ошибок.
  2. Конфигурация: bind ограничен локальным/внутренним интерфейсом.
  3. Аутентификация: без AUTH соединение не выполняет опасные операции.
  4. Переименование команд: старые имена возвращают ошибку.
  5. Рестарт: перезапуск сервиса не теряет формат конфигурации.

Краткий глоссарий

  • RDB: снапшоты базы в файл (быстрый, но может потерять данные).
  • AOF: журнал команд, более подробное восстановление.
  • Sentinel: встроенный механизм для HA и failover.
  • ACL: управление доступом по пользователям и командам.

Когда этот подход не годится

  • Если у вас распределённый кластер с высокой нагрузкой и требованиями к отказоустойчивости, рассмотрите кластерный режим Redis Cluster и отдельные инструменты для оркестрации.
  • Если требуется встроённое шифрование и сложные политики доступа, может понадобиться дополнительный прокси/SSL-терминирование или коммерческие сборки.

Шаблон для проверки перед вводом в продакшен

  1. Резервное копирование конфигурации и данных — выполнено
  2. Мониторинг и алерты — настроены
  3. Бенчмарки на нагрузку — пройдены
  4. Проверка отказоустойчивости и failover — пройдена
  5. Документация: пароли и секреты в хранилище — оформлено

Ссылки


Краткое итоговое резюме

Установка Redis на Ubuntu 22.04 занимает несколько минут. Главное — ограничить сетевой доступ, настроить supervised для systemd, включить аутентификацию и отключить опасные команды. Для продакшена добавьте TLS, мониторинг, резервные копии и план восстановления.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро