15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
31.10.2024
1 +1

Як встановити та налаштувати Redis на Linux: повний покроковий посібник

Redis — це потужне, відкрите програмне забезпечення, сховище структур даних у пам’яті, яке широко використовується як база даних, кеш і брокер повідомлень. Відомий своєю винятковою продуктивністю та універсальністю, Redis — це рішення, яке вибирають розробники, які хочуть значно прискорити програми шляхом кешування часто запитуваних даних, управління сеансами та обробки аналітики в реальному часі. Незалежно від того, чи ви запускаєте високонавантажену веб-програму на плані VPS Hosting або керуєте виділеною інфраструктурою, цей комплексний посібник проведе вас через кожен крок встановлення, налаштування та захисту Redis у системі Linux.

Що таке Redis і чому його варто використовувати?

Перш ніж перейти до процесу встановлення, варто зрозуміти, що робить Redis таким популярним:

  • Сховище в пам’яті: Redis зберігає дані в RAM, що робить операції читання та запису надзвичайно швидкими — часто завершуються менше ніж за мілісекунду.
  • Універсальні структури даних: підтримує рядки, хеші, списки, набори, відсортовані набори, бітмапи та інше.
  • Параметри збереження: незважаючи на те, що це сховище в пам’яті, Redis може зберігати дані на диску, щоб вони збереглися після перезавантаження.
  • Обмін повідомленнями Pub/Sub: Redis підтримує шаблони обміну повідомленнями publish/subscribe для спілкування в реальному часі між сервісами.
  • Широка підтримка мов: офіційні бібліотеки клієнтів існують для Python, PHP, Node.js, Java, Ruby, Go та багатьох інших.

Redis особливо цінний у середовищах, де критична продуктивність програми — наприклад, коли ваш бекенд розміщений на Dedicated Server, який обслуговує мільйони запитів на день.

Передумови

Перш ніж розпочати, переконайтеся, що у вас є:

  • Сервер Linux з Ubuntu/Debian або CentOS/RHEL
  • Доступ root або sudo до сервера
  • Базове розуміння командного рядка Linux
  • Активне підключення до Інтернету для завантаження пакетів

Крок 1: Оновіть вашу систему

Завжди починайте з оновлення індексу пакетів вашої системи та оновлення встановлених пакетів до їхніх найновіших версій. Це забезпечує сумісність і безпеку:

sudo apt update && sudo apt upgrade -y

Для систем CentOS/RHEL:

sudo yum update -y

Утримання вашого сервера в актуальному стані — це фундаментальна практика безпеки, особливо у виробничих середовищах.

Крок 2: Встановіть Redis

Більшість основних дистрибутивів Linux включають Redis у свої офіційні репозиторії пакетів, що робить встановлення простим.

На Ubuntu / Debian

sudo apt install redis-server -y

На CentOS / RHEL

Системи CentOS/RHEL вимагають спочатку ввімкнути репозиторій EPEL (Extra Packages for Enterprise Linux):

sudo yum install epel-release -y
sudo yum install redis -y

> Примітка: На новіших версіях CentOS/RHEL (8+) ви можете використовувати dnf замість yum:

> “`bash

> sudo dnf install redis -y

> “`

Крок 3: Перевірте встановлення

Після завершення встановлення підтвердіть, що Redis встановлено правильно, перевіривши його версію:

redis-server --version

Очікуваний результат (приклад):

Redis server v=7.0.12 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=...

Якщо ви бачите номер версії, Redis успішно встановлено на вашій системі.

Крок 4: Запустіть та ввімкніть сервіс Redis

Після встановлення вам потрібно запустити сервіс Redis і налаштувати його на автоматичний запуск при завантаженні системи.

На Ubuntu / Debian

sudo systemctl start redis
sudo systemctl enable redis

На CentOS / RHEL

sudo systemctl start redis
sudo systemctl enable redis

Перевірте, чи Redis запущено

sudo systemctl status redis

Очікуваний результат:

● redis.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis.service; enabled)
   Active: active (running) since ...

Зелений статус active (running) підтверджує, що Redis працює правильно.

Крок 5: Налаштуйте Redis

Поведінка Redis контролюється його основним файлом конфігурації:

  • Ubuntu/Debian: /etc/redis/redis.conf
  • CentOS/RHEL: /etc/redis.conf

Відкрийте файл конфігурації за допомогою текстового редактора:

sudo nano /etc/redis/redis.conf

Нижче наведені найважливіші параметри конфігурації, які варто переглянути та відрегулювати.

5.1 Встановіть пароль (аутентифікація)

За замовчуванням Redis не вимагає аутентифікації. Для будь-якого виробничого середовища встановлення надійного пароля є важливим:

Знайдіть рядок, що містить # requirepass та оновіть його:

requirepass your_strong_password_here

Виберіть довгий, випадково згенерований пароль. Redis надзвичайно швидкий, що означає, що атаки перебору можуть спробувати сотні тисяч здогадок на секунду без обмеження швидкості.

5.2 Прив’яжіть IP-адресу

За замовчуванням Redis прив’язується лише до 127.0.0.1 (localhost), що запобігає зовнішньому доступу. Це найбезпечніше стандартне налаштування.

Якщо вашій програмі потрібно підключитися до Redis з іншого сервера, ви можете прив’язати додаткову IP-адресу:

bind 127.0.0.1 192.168.1.100

> Попередження про безпеку: ніколи не прив’язуйте Redis до 0.0.0.0 (всі інтерфейси) на публічно доступному сервері без належних правил брандмауера. Відкриті екземпляри Redis — це поширений вектор атак.

5.3 Змініть стандартний порт

Redis прослуховує порт 6379 за замовчуванням. Зміна цього порту додає рівень приховування:

port 6380

Не забудьте оновити правила брандмауера та рядки підключення програми, якщо ви змінюєте порт.

5.4 Застосуйте зміни конфігурації

Після редагування redis.conf перезапустіть сервіс Redis, щоб застосувати всі зміни:

sudo systemctl restart redis

Крок 6: Протестуйте встановлення Redis

Використовуйте вбудований Redis CLI (інтерфейс командного рядка) для перевірки правильної роботи Redis:

redis-cli

Якщо ви встановили пароль, спочатку аутентифікуйтеся:

AUTH your_strong_password_here

Запустіть тест Ping

ping

Очікувана відповідь:

PONG

Встановіть та отримайте пару ключ-значення

SET mykey "Hello, Redis!"
GET mykey

Очікувана відповідь:

"Hello, Redis!"

Якщо Redis правильно повертає збережене значення, ваше встановлення повністю функціональне, а база даних зберігає та отримує дані як очікується.

Вийдіть з CLI

exit

Крок 7: Налаштуйте Redis як фоновий демон (необов’язково)

Якщо ви хочете, щоб Redis запускався як фоновий процес демона (а не як процес переднього плану), налаштуйте параметр daemonize у redis.conf:

daemonize yes

Після збереження файлу перезапустіть Redis:

sudo systemctl restart redis

Перевірте, чи сервіс запущено у фоні:

sudo systemctl status redis

Ви також можете підтвердити, що процес Redis активний, використовуючи:

ps aux | grep redis

Крок 8: Ввімкніть збереження Redis (необов’язково, але рекомендується)

За замовчуванням Redis зберігає дані лише в пам’яті, що означає, що дані втрачаються, якщо сервер перезавантажується. Redis надає два механізми збереження для вирішення цієї проблеми:

Варіант 1: RDB (Redis Database Backup) — снімки

RDB створює снімки вашого набору даних у певний момент часу через певні інтервали. Налаштуйте його у redis.conf:

# Save a snapshot if at least 1 key changed in 900 seconds (15 minutes)
save 900 1

# Save a snapshot if at least 10 keys changed in 300 seconds (5 minutes)
save 300 10

# Save a snapshot if at least 10,000 keys changed in 60 seconds
save 60 10000

RDB ефективний для резервних копій та відновлення після катастроф, але може втратити дані, написані між снімками.

Варіант 2: AOF (Append Only File) — реєстрація запису

AOF реєструє кожну операцію запису у файл, забезпечуючи набагато більш сильні гарантії надійності:

appendonly yes

Ви також можете налаштувати політику синхронізації AOF:

# Options: always, everysec, no
appendfsync everysec
  • always — найбезпечніша, але найповільніша (синхронізується після кожного запису)
  • everysec — хороший баланс продуктивності та безпеки (синхронізується щосекунди)
  • no — найшвидша, але залежить від розкладу скидання ОС

> Найкраща практика: для виробничих середовищ використовуйте як RDB, так і AOF разом для максимальної надійності даних.

Крок 9: Захист Redis — найкращі практики

Безпека критична для будь-якого розгортання Redis. Дотримуйтеся цих найкращих практик для посилення вашого екземпляра Redis:

1. Ввімкніть аутентифікацію за паролем

Як описано на кроці 5.1, завжди встановлюйте сильне значення requirepass у redis.conf.

2. Обмежте мережевий доступ

  • Прив’яжіть Redis до 127.0.0.1 якщо дистанційний доступ явно не потрібен.
  • Використовуйте приватну мережу або VPN для спілкування Redis між серверами.

3. Налаштуйте правила брандмауера

Дозволяйте трафік Redis лише з надійних IP-адрес. Використовуючи ufw на Ubuntu:

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

Використовуючи firewalld на CentOS/RHEL:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="6379" accept'
sudo firewall-cmd --reload

4. Перейменуйте або вимкніть небезпечні команди

Redis має потужні адміністративні команди (як-от FLUSHALL, CONFIG, DEBUG), які можуть бути використані. Перейменуйте або вимкніть їх у redis.conf:

rename-command FLUSHALL ""
rename-command CONFIG "SECURE_CONFIG_XYZ123"
rename-command DEBUG ""

5. Запустіть Redis як користувач без прав root

Пакет Redis у більшості дистрибутивів уже створює виділеного користувача системи redis. Переконайтеся, що Redis ніколи не запускається від root.

6. Утримуйте Redis в актуальному стані

Регулярно оновлюйте Redis, щоб виправити відомі вразливості:

sudo apt update && sudo apt upgrade redis-server -y

Крок 10: Інтеграція Redis з вашими програмами

З встановленим і захищеним Redis ви можете тепер інтегрувати його у свій стек програм. Ось короткий огляд популярних інтеграцій мов:

Python — redis-py

pip install redis
import redis

r = redis.Redis(host='127.0.0.1', port=6379, password='your_password', decode_responses=True)
r.set('greeting', 'Hello from Python!')
print(r.get('greeting'))

PHP — розширення phpredis

sudo apt install php-redis -y
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('your_password');
$redis->set('greeting', 'Hello from PHP!');
echo $redis->get('greeting');
?>

Node.js — ioredis

npm install ioredis
const Redis = require('ioredis');
const redis = new Redis({ host: '127.0.0.1', port: 6379, password: 'your_password' });

redis.set('greeting', 'Hello from Node.js!');
redis.get('greeting').then(value => console.log(value));

Redis легко інтегрується практично з кожною сучасною веб-фреймворком і CMS, включаючи WordPress, Laravel, Django та Express.js — що робить його неоціненним інструментом для стека будь-якого розробника.

Поширені випадки використання Redis

Розуміння того, де Redis виділяється, допомагає вам отримати максимум від вашого розгортання:

Випадок використанняОпис
Зберігання сеансів
15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати