Назад в блог

Настройка сервера Redis в качестве обработчика сессий для PHP на Ubuntu 20.04

Настройка сервера Redis в качестве обработчика сессий для PHP на Ubuntu 20.04

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

Преимущества Redis

Когда дело доходит до скорости, серверам Redis нет равных. Как NoSQL-сервер баз данных, он обеспечивает фантастическую скорость хранения и извлечения данных. Кроме того, Redis обладает выдающимися функциональными возможностями, которые позволяют беспрепятственно работать с различными данными, включая сложные. Простота использования и сложные функции Redis не только выделили его среди других, но и способствовали его растущей стандартизации в качестве основной базы данных для корпоративных и индивидуальных пользователей.

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

Начало работы

Для выполнения этих шагов вам понадобятся два разных сервера баз данных (дроплета), расположенных в одном дата-центре с включенной частной сетью. К ним относятся:

  • Веб-сервер PHP, работающий под управлением LAMP и LEMP на Ubuntu 20.04 – мы будем называть этот сервер web.

  • Второй, чистый сервер Ubuntu 20.04, на который будет установлен Redis – мы будем называть этот сервер redis.

Шаг 1 — Установка сервера Redis

Наш первый шаг — установить сервер Redis на Ubuntu 20.04. После этого убедитесь, что сервер запущен и работает на нашем дроплете redis.

В этом руководстве мы будем использовать персональные архивы пакетов (PPA). Мы настоятельно рекомендуем использовать PPA из соображений безопасности. По сравнению с другими сторонними репозиториями, PPA стабильны, просты в установке и, прежде всего, этот репозиторий разработан для пользователей Ubuntu. PPA позволяет получать последнюю доступную версию программного обеспечения, даже для тех программ, которых нет в официальных репозиториях Ubuntu.

Использование PPA из неавторизованных источников категорически не рекомендуется. Убедитесь, что вы получаете PPA только из надежных и проверенных источников. Вы можете добавить репозиторий PPA с помощью команды:

Нажмите клавишу Enter для подтверждения. После подтверждения мы обновим кэш менеджера пакетов с помощью следующей команды:

Next, we will install Redis using the command:

После выполнения команды Redis будет установлен на вашем сервере. Давайте протестируем установку с помощью команды:

После выполнения команды вы увидите экземпляр Redis, работающий на localhost на порту 6379. Также будет получен ответ PONG. Если вы видите это, значит, вы успешно выполнили первый шаг. Подробное руководство по установке и защите Redis можно найти в нашей статье Как установить и защитить Redis на Ubuntu 18.04.

Далее перейдем к следующему шагу — настройке Redis.

Шаг 2 — Настройка Redis для приема внешних подключений

Основная цель настройки Redis — разрешить прием внешних подключений. Почему? Потому что по умолчанию Redis разрешает подключения только к localhost, и существует ограничение на подключение из любого другого места. Проще говоря, у вас будет доступ только изнутри сервера, на котором установлен Redis.

Сначала получите подробную информацию о ваших сетевых интерфейсах с помощью команды ifconfig:

Вы получите следующий вывод:

На eth1 интерфейсе вы найдете inet_addr. Здесь у нас 10.133.14.9. Мы будем использовать этот IP-адрес на следующих шагах для подключения к серверу redis с web сервера.

Шаг 3 — Привязка к Localhost

Вы можете использовать любой текстовый редактор по вашему выбору (наиболее популярными являются Atom и Visual Studio Code).

Теперь откройте файл /etc/redis/redis.conf и найдите строку, содержащую определение bind. Вам нужно добавить ваш IP-адрес частной сети в эту строку:

Вы можете увидеть localhost, вместо 127.0.0.1. Не беспокойтесь, вам просто нужно добавить свой частный IP-адрес. Затем перезапустите службу Redis, чтобы применить изменения. Используйте команду ниже для перезапуска сервера redis сервера:

Те пользователи, которые установили Redis с помощью приложения в один клик, должны использовать следующую команду для перезапуска сервера:

После перезапуска сервера redis, любой сервер в той же частной сети автоматически подключится к этому экземпляру Redis без необходимости делать это индивидуально.

Шаг 4 — Настройка пароля сервера Redis

Вы можете пропустить этот шаг, если используете установку Redis в учебных целях. Тем не менее, настройка пароля для сервера redis крайне рекомендуется, если вы хотите добавить дополнительный уровень безопасности для вашей установки Redis. Давайте изменим тот же конфигурационный файл, что и на предыдущем шаге. Используйте команду для редактирования:

Раскомментируйте строку, содержащую requirepass, и установите надежный пароль:

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

Шаг 5 — Тестирование подключения и аутентификации Redis

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

Здесь, даже если вы пропустите указание имени хоста, команда все равно выполнится. Наша основная цель — убедиться, что служба Redis без проблем принимает подключения:

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

Ваш вывод будет выглядеть примерно так:

Для аутентификации выполните команду AUTH вместе с тем же паролем, который вы определили в файле /etc/redis/redis.conf :

Затем снова запустите команду:

На этот раз вы получите ответ OK вместо ошибки. Вы получите следующий вывод:

Вывод empty list или set означает, что сервер Redis пуст. Это связано с тем, что мы еще не настроили веб-сервер в качестве обработчика сессий.

Примечание: Прежде чем двигаться дальше, убедитесь, что сессия SSH открыта и подключена к redis-cli. На следующих шагах мы вернемся к командной строке redis-cli, чтобы проверить, правильно ли сохранились данные сессии после внесения необходимых изменений на web сервере.

Шаг 6 — Установка расширения Redis на веб-сервере

Следующие шаги должны быть выполнены на web сервере. Нам нужно установить расширение PHP Redis, чтобы PHP мог подключаться к серверу Redis.

Сначала обновите кэш менеджера пакетов, выполнив команду:

Затем установите пакет php5-redis :

Все готово для подключения к Redis.

Шаг 7 — Настройка Redis в качестве обработчика сессий по умолчанию на веб-сервере

В PHP есть обработчик сессий по умолчанию. На этом шаге мы отредактируем файл php.ini на web сервере, чтобы изменить настройки по умолчанию. Расположение файла php.ini зависит от текущего стека:

  • Для стека LAMP на Ubuntu 20.04 используйте: /etc/php5/apache2/php.ini.

  • Для стека LEMP на Ubuntu 20.04 путь обычно следующий: /etc/php5/fpm/php.ini.

Если вы не уверены в расположении вашего основного файла php.ini, воспользуйтесь функцией phpinfo(). Поместите следующий код в файл с именем info.php в корневом каталоге вашего веб-сайта:

При попытке получить доступ к скрипту из браузера найдите строку, содержащую «Loaded Configuration File». Вы найдете точное расположение загруженного основного файла php.ini. Обязательно удалите файл info.php, так как он содержит конфиденциальные данные о вашем окружении.

После этого откройте файл php.ini и найдите строку, содержащую session.save_handler. Значение по умолчанию будет files, обязательно измените его на redis.

В окружении LAMP :

В окружении LEMP :

Затем раскомментируйте session.save_path и измените значение, чтобы оно содержало строку подключения к Redis. Содержимое должно соответствовать следующему формату:

Используйте пароль, который мы настроили на шаге 4.. Если вы не используете установленный пароль, укажите параметр auth при настройке Redis. Теперь сохраните файл и перезапустите php службу в обеих средах.

В средах LAMP:

В средах LEMP:

Шаг 8 — Тестирование обработки сессий в Redis

На последнем шаге нам понадобится PHP-скрипт или приложение, чтобы убедиться, что ваши сессии теперь обрабатываются Redis. Мы будем использовать простой скрипт, реализующий счетчик — при каждой перезагрузке страницы выводимое число увеличивается.

Создайте файл с именем demo.php на сервере web и сохраните его в корневой папке документов:

Затем измените /usr/share/nginx/html, чтобы указать путь к корневой папке документов:

Затем вам нужно открыть в браузере http://web/demo.php для доступа к скрипту. Программа будет увеличивать число при каждой перезагрузке страницы.

Теперь информация о сессии будет храниться на сервере Redis. Чтобы проверить это, вам нужно вернуться к вашей SSH-сессии на машине redis с помощью redis-cli. Получите содержимое еще раз с помощью keys *:

Вы увидите следующий вывод:

Вывод подтверждает, что вся информация надежно хранится на сервере redis. Если вы хотите подключить дополнительные web серверы, вы можете сделать это аналогичным образом.

Заключение

Redis — это база данных NoSQL, которая позволяет хранить большие объемы неструктурированных данных. Очень немногие базы данных могут сравниться по функциональности и простоте с сервером redis. Его растущая популярность делает его незаменимым решением, имеющим мало альтернатив благодаря широкому набору функций.

Чтобы еще больше углубить свои знания о PHP-приложениях и их использовании, вы можете ознакомиться со следующими руководствами в нашем блоге:

Приятной работы!

author

Shreyas Patil

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.