Установка и настройка redis debian

Обновлено: 03.07.2024

Для работы вам понадобится сервер Debian 9, настроенный по этому мануалу.

1: Установка и настройка Redis

Последнюю версию Redis можно найти в официальных репозиториях Debian.

Обновите локальный индекс пакетов и установите Redis:

sudo apt update
sudo apt install redis-server

Эта команда загрузит и установит Redis и его зависимости. После этого в конфигурационный файл Redis, который был создан автоматически во время установки, нужно внести одно важное изменение.

Откройте этот файл с помощью текстового редактора:

sudo nano /etc/redis/redis.conf

Внутри файла найдите директиву supervised . Эта директива позволяет объявить систему инициализации для управления сервисом Redis, предоставляя вам больше контроля над ним. По умолчанию директива supervised имеет значение no. Поскольку вы используете Debian, который использует систему инициализации systemd, укажите здесь systemd:

Пока что это все, вы можете сохранить и закрыть файл. После этого перезапустите сервис Redis:

sudo systemctl restart redis

Теперь Redis установлен, настроен и работает на вашей машине. Теперь нужно протестировать установку.

2: Тестирование Redis

Как и любое новое ПО, Redis нужно проверить после установки.

Для начала убедитесь, что сервис Redis запущен:

sudo systemctl status redis

Если команда не вернет ошибок, вы увидите такой вывод:

Как видите, Redis работает и уже включен как сервис (то есть добавлен в автозагрузку).

Примечание: Этот параметр является желательным для многих общих случаев использования Redis. Если, однако, вы предпочитаете запускать Redis вручную после загрузки сервера, вы можете удалить сервис из автозагрузки с помощью следующей команды:

sudo systemctl disable redis

Чтобы убедиться, что Redis работает правильно, запустите клиент командной строки:

В командную строку введите такую команду, чтобы проверить соединение:

Это значит, что программа правильно отвечает на запросы. Теперь убедитесь, что можете добавлять ключи:

set test "It's working!"
OK

Извлеките значение ключа:

Команда должна ответить:

Убедившись, что вы можете получить значение, выйдите из командной строки Redis, чтобы вернуться в оболочку:

В качестве финального теста убедитесь, что Redis может сохранять данные даже после остановки или перезапуска. Для этого сначала перезапустите экземпляр Redis:

sudo systemctl restart redis

Затем снова подключитесь к клиенту командной строки и запросите значение:

redis-cli
get test

Вы должны получить:

Закройте командную строку:

Теперь вы знаете, что установка Redis полностью работоспособна и готова к использованию. Однако некоторые из настроек конфигурации по умолчанию небезопасны и предоставляют злоумышленникам возможность атаковать Redis и получить доступ к серверу и его данным. Остальные разделы в этом мануале предлагают методы смягчения этих уязвимостей (по рекомендациям официального веб-сайта Redis). Все это опционально, Redis будет функционировать и без этого, однако выполнить эти разделы настоятельно рекомендуется, чтобы повысить безопасность системы.

3: Подключение к localhost

По умолчанию Redis доступен только с localhost. Однако если вы установили и настроили Redis по другому мануалу, вы могли обновить конфигурации и включить удаленные подключения. Это не так безопасно, как привязка к localhost.

sudo nano /etc/redis/redis.conf

Найдите эту строку и раскомментируйте ее:

Сохраните и закройте файл (CTRL + X, Y, ENTER).

sudo systemctl restart redis

Убедитесь, что настройки обновились:

sudo netstat -lnp | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 10959/redis-server

Этот вывод показывает, что программа redis-server привязана к localhost (127.0.0.1), что и должно быть согласно конфигурации. Если вы видите в этом столбце другой IP-адрес (например, 0.0.0.0), вы должны убедиться, что вы раскомментировали правильную строку. Затем снова перезапустите Redis.

4: Настройка парольной аутентификации Redis

Настройка пароля Redis включает одну из двух встроенных функций безопасности – команду auth, которая требует от клиентов аутентификации для доступа к базе данных. Пароль настраивается непосредственно в файле конфигурации Redis, /etc/redis/redis.conf; снова откройте этот файл с помощью редактора:

sudo nano /etc/redis/redis.conf

Найдите раздел SECURITY, а в нем – закомментированную директиву:

Раскомментируйте эту строку, а вместо foobared укажите надежный пароль.

Примечание: В файле redis.conf над директивой requirepass вы увидите такое предупреждение:

Потому очень важно выбрать в качестве пароля очень сложное и очень длинное значение. Вместо того, чтобы самостоятельно составлять пароль, вы можете использовать команду openssl, которая сгенерирует случайный пароль. Направив вывод первой команды во вторую команду openssl, как показано ниже, вы удалите разрывы строк, созданные первой командой:

openssl rand 60 | openssl base64 -A

Вы получите такой вывод:

Скопируйте и вставьте полученное значение в requirepass:

/etc/redis/redis.conf
requirepass RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

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

sudo systemctl restart redis.service

Чтобы убедиться, что аутентификация настроена правильно, откройте командную строку Redis:

Для проверки работоспособности пароля Redis используйте такую последовательность команд. Первая команда пытается установить ключ без пароля:

set key1 10
Redis должен вернуть ошибку:
(error) NOAUTH Authentication required.

Следующая команда пройдет аутентификацию:

auth your_redis_password
OK

После того как Redis принял пароль, попробуйте снова добавить ключ:

Запросите свой новый ключ:

Убедившись, что после аутентификации вы можете запускать команды Redis, вы можете выйти из redis-cli:

Далее мы рассмотрим переименование команд Redis, которые могут нанести серьезный урон серверу, если они будут введены по ошибке или злоумышленником.

5: Переименование команд

Еще одна встроенная функция безопасности Redis позволяет вам переименовывать или полностью отключать определенные команды, которые считаются опасными. Злоумышленники могут использовать такие команды для перенастройки, уничтожения или повреждения данных. Как и парольная аутентификация, переименование или отключение команд настраивается в разделе SECURITY файла /etc/redis/redis.conf. Вот краткий список опасных команд:

  • FLUSHDB
  • FLUSHALL
  • KEYS
  • PEXPIRE
  • DEL
  • CONFIG
  • SHUTDOWN
  • BGREWRITEAOF
  • BGSAVE
  • SAVE
  • SPOP
  • SREM RENAME DEBUG

Это не полный список, но для начала достаточно будет переименовать или отключить все команды в этом списке.

Отключать или переименовывать команду – это зависит от конкретной ситуации. Если вы знаете, что никогда не будете использовать опасную команду, вы можете ее отключить. В противном случае вы должны переименовать ее.

sudo nano /etc/redis/redis.conf

Важно! Далее в мануале приведены общие примеры. Вы должны отключить или переименовать команды, которые важны в вашей конкретной ситуации. Вы можете узнать больше о вредоносном использовании команд на redis.io/commands.

Чтобы отключить команду, просто переименуйте ее в пустую строку, как показано ниже:

Чтобы переименовать команду, дайте ей другое имя, как в приведенных ниже примерах. Переименованные команды другим пользователям должно быть трудно угадать, а вам – легко запомнить.

Сохраните и закройте файл. Перезапустите Redis:

sudo systemctl restart redis

Чтобы проверить новую команду, откройте командную строку Redis:

Пройдите аутентификацию, используя пароль, который вы определили ранее:

auth your_redis_password
OK

Предположим, что вы переименовали команду CONFIG в ASC12_CONFIG; в таком случае попытка запустить команду config должна завершиться ошибкой.

config get requirepass
(error) ERR unknown command 'config'

Теперь сработает переименованная команда:

asc12_config get requirepass
1) "requirepass"
2) "your_redis_password"

Обратите внимание, если вы перезагружаете Redis, не закрыв перед этим командную строку, вам необходимо повторно пройти аутентификацию. В противном случае вы получите эту ошибку:

NOAUTH Authentication required.

Важно! Что касается переименования команд, в конце раздела SECURITY в файле /etc/redis.conf содержится предостерегающее заявление:

Please note that changing the name of commands that are logged into the AOF file or transmitted to slaves may cause problems.

Это означает, что если переименованная команда не находится в файле AOF или этот файл не был передан slave машинам, тогда проблем не должно быть. Помните об этом при переименовании команд. Лучшее время для переименования команды – это сразу после установки или когда вы не используете AOF (то есть перед развертыванием приложения, использующего Redis).

Если вы используете AOF в установке master-slave, GitHub советует вот что:

Команды регистрируются в AOF и реплицируются на slave так же, как отправляются; поэтому если вы попытаетесь воспроизвести AOF на экземпляре, который не поддерживает таких же переименованных команд, вы можете столкнуться с конфликтом.

Лучший способ избежать проблем с переименованием в таких случаях – убедиться, что переименованные команды применяются ко всем экземплярам установки master-slave.

Заключение

Имейте в виду, если злоумышленник получит доступ к серверу, специальные функции безопасности Redis, которые вы установили, будет довольно легко обойти. Вот почему самая важная функция безопасности – это брандмауэр, поскольку он блокирует неизвестных пользователей.

В этом руководстве объясняется, как установить и настроить Redis на сервере Debian 9.

Подготовка

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

Установка Redis на Debian

Пакет Redis включен в репозитории Debian 9 по умолчанию. Установка довольно проста, просто выполните следующие действия:

Начните с обновления списка пакетов apt, введя следующую команду:

Установите Redis, набрав:

Когда установка будет завершена, служба Redis запустится автоматически. Вы можете проверить статус службы, набрав:

Вы должны увидеть что-то вроде этого:

Служба Redis не запустится, если на вашем сервере отключен IPv6.

На этом этапе Redis установлен и запущен на вашем сервере Debian 9, и вы можете начать его использовать.

Настроить удаленный доступ Redis

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

Чтобы настроить Redis для приема удаленных подключений, откройте файл конфигурации Redis в текстовом редакторе:

Найдите строку, которая начинается с bind 127.0.0.1 и замените 127.0.0.1 на 0.0.0.0 .

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

Перезапустите службу Redis, чтобы изменения вступили в силу:

Используйте следующую команду, чтобы убедиться, что Redis прослушивает все интерфейсы на порту 6379 :

Вы должны увидеть примерно следующее:

Затем вам нужно добавить правило брандмауэра, которое разрешает трафик с ваших удаленных машин на TCP-порт 6379 .

Предполагая, что вы используете UFW для управления своим брандмауэром и хотите разрешить доступ из подсети 192.168.121.0/24 вы должны выполнить следующую команду:

Убедитесь, что ваш брандмауэр настроен на прием подключений только из доверенных диапазонов IP-адресов.

Чтобы убедиться, что все настроено правильно, вы можете попробовать проверить связь с сервером Redis со своего удаленного компьютера с помощью redis-cli :

Команда должна вернуть ответ PONG :

Выводы

Поздравляем, вы успешно установили Redis на свой сервер Debian 9. Чтобы узнать больше о том, как управлять установкой Redis, посетите страницу документации Redis .


Redis (англ. remote dictionary server) — сетевое журналируемое хранилище данных типа «ключ — значение» с открытым исходным кодом. Нереляционная высокопроизводительная СУБД.

Установка Redis в Unix/Linux

Я расскажу как можно установить redis на различные Unix/Linux ОС.

Установка Redis на Debian/Ubuntu

Самый простой способ установки Redis- просто запустите:

Обновляемся и ставим необходимое ПО:

Собственно, выкачиваем последнюю и стабильную версию редиса:

Распаковываем скачанный архив:

Переходим в папку и собираем сборку:

Redis установлен. Чтобы настроить redis для запуска в фоновом режиме, запустите скрипт:

Вам будет предложено ввести различные значения для создания конфигурации, но вы можете просто нажать клавишу «enter», чтобы принять значения по умолчанию.

Проверим версию редиски:

Запустить сервис, можно:

Презапустить сервис, можно:

Чтобы проверить статус:

Для остановки, используем:

Для использования редиса, запустите:

Чтобы посмотреть, открыл ли редис-сервер соединения, можно использовать:

Создаем папку где будут лежать конфиги с редисом:

Я хотел бы чтобы сервер работал как демон:

Так же, нужно прописать какой гипервизорд будем использовать:

PS: Чтобы проверить что используется, используйте:

И так, мой конфиг выглядит:

SYSTEMD запуск.

Создаем Redis systemd Unit файл:

INIT запуск.

Создаем папку где будут лежать либы:

Выставляем группу и владельца:

И, выставляем права:

Создаем папку где будет лежать файлы с редисом:

Копируем нужные данные в созданную папку:

Для запуска, используем:

Или (если для инита):

Установка Redis на CentOS/RedHat/Fedora

Подключаем EPEL репозиторий:

Самый простой способ установки Redis- просто запустите:

Но вы не получите самую новую версию ПО.

Обновляемся и ставим необходимое ПО:

Собственно, выкачиваем последнюю и стабильную версию редиса:

Распаковываем скачанный архив:

Переходим в папку и собираем сборку:

Redis установлен. Чтобы настроить redis для запуска в фоновом режиме, запустите скрипт:

Вам будет предложено ввести различные значения для создания конфигурации, но вы можете просто нажать клавишу «enter», чтобы принять значения по умолчанию.

Проверим версию редиски:

Запустить сервис, можно:

Презапустить сервис, можно:

Чтобы проверить статус:

Для остановки, используем:

Для использования редиса, запустите:

Чтобы добавить службу в автозагрузку, используем:

Нас интересует 2 файла:

Берем и переименовываем их:

И собственно, 2-й файл:

После этого, стоит поменять путь к данным файлам, для этого открываем:

И перезапускаем редиску:

Установка Redis на Mac OS X

Можно поискать редис:

Получить информацию о пакете Redis:

Для установки, используйте:

Добавить редис в автозагрузку ОС:

Чтобы убрать редис с автозагрузки ОС, используйте:

Запустите Redis-сервер, используя конфигурационный файл:

Чтобы удалить, используйте:

Настройка Redis в Unix/Linux

У меня он выглядит следующим образом:

И так, у меня редис висит на локалхосте ( 127.0.0.1 ), вот строка:

Сервер использует 6379-й порт. Можно повесить на сокет при необходимости.

И приводим к виду:

Это запретит использования CONFIG команды в редис. Но можно и переименовать некоторую команду, например:

Данное выражение, заменит использование CONFIG на rename_CONFIG.

Чтобы проверить бенчмарк (нагрузку на редис-сервер), используйте команду:


3 Сен 2017 00:09:02 | 0 comments

Установка и настройка Redis на Debian 8

Для начала немного информации.

1. Что такое Redis?

Redis — это высокопроизводительное нереляционное распределённое хранилище данных. В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.

2. Чем Redis отличается от существующих решений?

API для работы с Memcached (MemcacheDB) позволяет хранить массивы, но эти массивы будут сериализованы и сохранены как строки, таким образом атомарные операции над такими массивами не возможны.
Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop/push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.

3. Производительность

110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня (тесты).

Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлемо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.

4. Sharding

Redis, как и Memcached, может работать как распределённое хранилище на многих физических серверах. Такой функционал реализуется в клиентских библиотеках, и к сожалению, «из коробки» этот функционал реализован пока только в Ruby API, однако это не мешает вам хешировать ключ самостоятельно и получать ID сервера, к которому с этим ключом обращаться.

Установка и базовая настройка.

Исходные данные: Debian 8.8 Jessie (amd64)

Все нормально, Redis слушает на порту 6379.

Настройка безопасности.

1. Запускаем redis-server только на localhost

В некоторых дистрибутивах Linux после установки Redis принимает запросы на всех интерфейсах, что недопустимо из соображений безопасности, т.к. по-умолчанию доступ к Redis не защищен паролем.

Поэтому будет не лишним проверить в файле /etc/redis/redis.conf
наличие строки

Если её нет, обязательно пропишите.

Далее, если прописали, то перезапускаем Redis:

2. Ставим пароль на доступ к redis-server:

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

Поэтому создаем пароль:

И в файле /etc/redis/redis.conf пишем

Далее, если прописали, то перезапускаем Redis:

Теперь при попытке сделать:

мы видим, что анонимно заходить нельзя.

А как тогда можно?

ВНИМАНИЕ! Запуская redis-cli и вводя в нем команды, включая AUTH с паролем история этих команд сохраняется в файле

/.rediscli_history
Если злоумышленник получит к нему доступ, то и сможет узнать пароль.
Конечно

/.rediscli_history доступен только текущему пользователю, например root и никто другой его не прочитает, но об этом лучше знать.
Так же пароль хранится в файле /etc/redis/redis.conf и по-умолчанию этот файл доступен на чтение всем пользователям сервера, что совершенно неправильно и это мы исправим далее.

3. Переименовываем и отключаем особо важные команды, это FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME и DEBUG

Для этого в файле /etc/redis/redis.conf пишем:

Далее, если прописали, то перезапускаем Redis:

4. Смена прав на директорию с базой и файл конфигурации

Смотрим права по-умолчанию на директорию с базой:

Смотрим права по-умолчанию на файл конфигурации

Далее, если все сделали, то перезапускаем Redis:

На этом базовая настройка Redis закончена.

На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.

Читайте также: