Как установить и настроить 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
и установить зависимости, набрав:
- sudo apt-get update
- sudo apt-get install build-essential tcl
Загрузите, скомпилируйте и установите Redis
Далее мы можем начать сборку Redis.
Загрузите и извлеките исходный код
Поскольку нам не нужно хранить исходный код, который мы будем компилировать в течение длительного времени (мы всегда можем повторно загрузить его), мы будем собирать его в каталоге /tmp
. Теперь переместимся туда:
- cd /tmp
Теперь загрузите последнюю стабильную версию Redis. Это всегда доступно по стабильному 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
:
. . .
# 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
:
- 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
. Это можно сделать одной командой, набрав:
- 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, ознакомьтесь с нашей статьей Как защитить вашу установку Redis в Ubuntu 14.04 (начиная с шага 3 и далее). Хотя он был написан с учетом Ubuntu 14.04, в основном он должен работать и для 16.04.