Установка Redis из исходного кода на Ubuntu 18.04

Введение

Redis — это key-value хранилище, которое хранит данные в оперативной памяти. Отличается производительностью и гибкостью. Используется в основном как хранилище для кеша или других временных данных.

Из этой статьи вы узнаете как установить Redis из исходного кода на Ubuntu 18.04.

Подготовка

Для начала установите необходимые для компиляции зависимости.

$ sudo apt update
$ sudo apt install build-essential tcl gcc libc6-dev make

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

Поскольку исходный код не нужно долго хранить, загрузите его в /tmp каталог.

Перейдите во временный каталог:

$ cd /tmp

Загрузите архив. По данной ссылке всегда будет доступна последняя стабильная версия:

$ curl -O http://download.redis.io/releases/redis-stable.tar.gz

Затем распакуйте архив:

$ tar xzf redis-stable.tar.gz

Перейдите в каталог с исходным кодом:

$ cd redis-stable

Скомпилируйте двоичные файлы:

$ make

Затем выполните установку:

$ sudo make install

Теперь Redis установлен. Пришло время его настроить.

Создайте каталог, в котором будет храниться файл конфигурации:

$ sudo mkdir /etc/redis

Скопируйте файл конфигурации из каталога с исходным кодом:

$ sudo cp /tmp/redis-stable/redis.conf /etc/redis

Затем откройте файл в редакторе, чтобы внести кое-какие изменения:

$ sudo vim /etc/redis/redis.conf

Найдите директиву supervised и поменяйте ее значение на systemd:

supervised systemd

Далее найдите директиву dir и поменяйте ее значение на /var/lib/redis:

dir /var/lib/redis

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

Создание системного файла Redis

Чтобы можно было управлять Redis как службой, а так же автоматически запускать Redis после загрузки системы — создайте файл systemd.

Откройте в редакторе файл:

$ sudo vim /etc/systemd/system/redis.service

И внесите в него следующие данные:

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

Директивы User и Group указывают на то, под каким пользователем и группой будет запущена служба. В целях безопасности служба будет запущена не от root а от пользователя redis, которого вы создадите чуть позже.

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

Создание пользователя Redis и каталога для данных

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

Это можно сделать одной командой:

$ sudo adduser --system --group --no-create-home redis

Затем создайте каталог /var/lib/redis:

$ sudo mkdir /var/lib/redis

Сделайте пользователя redis владельцем этого каталога:

$ sudo chown redis:redis /var/lib/redis

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

$ sudo chmod 770 /var/lib/redis

Запуск и тестирование

Запустите службу systemd, выполнив:

$ sudo systemctl start redis

Проверьте, нет ли ошибок:

$ sudo systemctl status redis

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

$ redis-cli

Проверьте соединение, выполнив:

127.0.0.1:6379> PING

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

PONG

Затем установите ключ:

127.0.0.1:6379> set movie "Terminator 2: Judgment Day"

Получите значение ключа:

127.0.0.1:6379> get movie

В ответ вы должны получить значение, которое установили:

"Terminator 2: Judgment Day"

Чтобы вернуться назад в shell, выполните:

127.0.0.1:6379> exit

И в заключение проверьте, может ли Redis сохранять данные после остановки или перезапуска.

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

$ sudo systemctl restart redis

А затем снова подключитесь к серверу и проверьте, сможете ли вы все еще получить значение установленного ключа:

$ redis-cli
127.0.0.1:6379> get movie

Вернитесь назад в shell, выполнив:

127.0.0.1:6379> exit

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

$ sudo systemctl enable redis

Заключение

Теперь Redis полностью настроен и готов к работе.

Комментариев нет

Добавить комментарий

Ваш e-mail не будет опубликован.