Вступление
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.