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

Вступление

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

Предпосылки

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

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

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

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

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

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

sudo apt-get update
sudo apt-get install build-essential tcl

Скачать, скомпилировать и установить Redis

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

Скачать и извлечь исходный код

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

cd /tmp

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

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

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

tar xzvf redis-stable.tar.gz

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

cd redis-stable

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

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

make

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

make test

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

sudo make install

Настроить Redis

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

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

sudo mkdir /etc/redis

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

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

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

sudo nano /etc/redis/redis.conf

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

/etc/redis/redis.conf

. . .

# 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, который мы сейчас создадим:

/etc/redis/redis.conf

. . .

# 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, чтобы система init могла управлять процессом Redis.

Создайте и откройте файл/etc/systemd/system/redis.service, чтобы начать:

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

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

/etc/systemd/system/redis.service

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

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

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

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

/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

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

Создайте пользователя, группу и каталоги 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

Запустите и проверьте Redis

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

Запустите сервис Redis

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

sudo systemctl start redis

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

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 с помощью клиента командной строки:

redis-cli

В появившейся подсказке проверьте соединение, набрав:

ping

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

OutputPONG

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

set test "It's working!"
OutputOK

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

get test

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

Output"It's working!"

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

exit

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

sudo systemctl restart redis

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

redis-cli
get test

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

Output"It's working!"

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

exit

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

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

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

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

Заключение

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

Related