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
Налаштування 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 -tuln | grep 6379
Або за допомогою ss
:
- sudo ss -tuln | grep 6379
Якщо порт прослуховується, це підтверджує, що Redis працює.
4. Додаткова перевірка конфігурації Redis.
Щоб дізнатися активні параметри Redis, підключіться до нього за допомогою клієнта:
- redis-cli
І введіть команду:
- CONFIG GET *
Це дозволить побачити всі параметри конфігурації, включаючи порт, режим роботи та інші налаштування.