Поиск по сайту:

Как установить и настроить Redis в Ubuntu 16.04


Введение

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

Предпосылки

Для выполнения этого руководства вам потребуется доступ к серверу Ubuntu 16.04. Вам потребуется пользователь без полномочий root с привилегиями sudo для выполнения административных функций, необходимых для этого процесса. Вы можете узнать, как настроить учетную запись с этими привилегиями, следуя нашему руководству по начальной настройке сервера Ubuntu 16.04.

Когда вы будете готовы начать, войдите на свой сервер Ubuntu 16.04 под своим пользователем sudo и продолжите ниже.

Установите зависимости сборки и тестирования

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

Для этого мы можем установить метапакет build-essential из репозиториев Ubuntu. Мы также будем загружать пакет tcl, который мы можем использовать для тестирования наших двоичных файлов.

Мы можем обновить наш локальный кэш пакетов apt и установить зависимости, набрав:

  1. sudo apt-get update
  2. sudo apt-get install build-essential tcl

Загрузите, скомпилируйте и установите Redis

Далее мы можем начать сборку Redis.

Загрузите и извлеките исходный код

Поскольку нам не нужно хранить исходный код, который мы будем компилировать в течение длительного времени (мы всегда можем повторно загрузить его), мы будем собирать его в каталоге /tmp. Теперь переместимся туда:

  1. cd /tmp

Теперь загрузите последнюю стабильную версию Redis. Это всегда доступно по стабильному URL-адресу загрузки:

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

Распакуйте архив, набрав:

  1. tar xzvf redis-stable.tar.gz

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

  1. cd redis-stable

Сборка и установка Redis

Теперь мы можем скомпилировать двоичные файлы Redis, набрав:

  1. make

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

  1. make test

Обычно это занимает несколько минут. После завершения вы можете установить двоичные файлы в систему, набрав:

  1. sudo make install

Настроить Redis

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

Для начала нам нужно создать каталог конфигурации. Мы будем использовать обычный каталог /etc/redis, который можно создать, набрав:

  1. sudo mkdir /etc/redis

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

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

Затем мы можем открыть файл, чтобы настроить несколько элементов в конфигурации:

  1. sudo nano /etc/redis/redis.conf

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

. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
#       They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

Затем найдите каталог dir. Этот параметр указывает каталог, который Redis будет использовать для создания дампа постоянных данных. Нам нужно выбрать место, для которого у Redis будет разрешение на запись и которое не будет доступно для просмотра обычными пользователями.

Для этого мы будем использовать каталог /var/lib/redis, который мы создадим через мгновение:

. . .

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

. . .

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

Создайте файл модуля Redis systemd

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

Для начала создайте и откройте файл /etc/systemd/system/redis.service:

  1. sudo nano /etc/systemd/system/redis.service

Внутри мы можем начать раздел [Unit], добавив описание и определив требование доступности сети перед запуском этой службы:

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

В разделе [Service] нам нужно указать поведение службы. В целях безопасности мы не должны запускать нашу службу как root. Мы должны использовать выделенного пользователя и группу, которую для простоты назовем redis. Мы создадим их на мгновение.

Чтобы запустить службу, нам просто нужно вызвать двоичный файл redis-server, указав на нашу конфигурацию. Чтобы остановить его, мы можем использовать команду Redis shutdown, которую можно выполнить с помощью двоичного файла redis-cli. Кроме того, поскольку мы хотим, чтобы Redis по возможности восстанавливался после сбоев, мы установим для директивы Restart значение «всегда»:

[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] мы можем определить цель systemd, к которой должна подключаться служба, если она включена (настроена для запуска при загрузке):

[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

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

Создайте пользователя Redis, группу и каталоги

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

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

  1. sudo adduser --system --group --no-create-home redis

Теперь мы можем создать каталог /var/lib/redis, набрав:

  1. sudo mkdir /var/lib/redis

Мы должны предоставить пользователю и группе redis право собственности на этот каталог:

  1. sudo chown redis:redis /var/lib/redis

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

  1. sudo chmod 770 /var/lib/redis

Запустите и протестируйте Redis

Теперь мы готовы запустить сервер Redis.

Запустите службу Redis

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

  1. sudo systemctl start redis

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

  1. sudo systemctl status redis

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

Output
● redis.service - Redis Server Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS) Main PID: 3124 (redis-server) Tasks: 3 (limit: 512) Memory: 864.0K CPU: 179ms CGroup: /system.slice/redis.service └─3124 /usr/local/bin/redis-server 127.0.0.1:6379 . . .

Тестирование функциональности экземпляра Redis

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

  1. redis-cli

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

  1. ping

Тебе следует увидеть:

Output
PONG

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

  1. set test "It's working!"
Output
OK

Теперь извлеките значение, набрав:

  1. get test

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

Output
"It's working!"

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

  1. exit

В качестве последнего теста давайте перезапустим экземпляр Redis:

  1. sudo systemctl restart redis

Теперь снова подключитесь к клиенту и подтвердите, что ваше тестовое значение все еще доступно:

  1. redis-cli
  1. get test

Значение вашего ключа должно быть доступно:

Output
"It's working!"

Когда закончите, снова вернитесь в оболочку:

  1. exit

Включить Redis для запуска при загрузке

Если все ваши тесты сработали, и вы хотите автоматически запускать Redis при загрузке сервера, вы можете включить службу systemd.

Для этого введите:

  1. sudo systemctl enable redis
Output
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.

Заключение

Теперь у вас должен быть установлен и настроен экземпляр Redis на вашем сервере Ubuntu 16.04. Чтобы узнать больше о том, как защитить вашу установку Redis, ознакомьтесь с нашей статьей Как защитить вашу установку Redis в Ubuntu 14.04 (начиная с шага 3 и далее). Хотя он был написан с учетом Ubuntu 14.04, в основном он должен работать и для 16.04.