Default Green Orange
Gemini_13's Blog
Блокнот полезных вещей
Home
    • Карта сайта
    • Обо мне
RSS

Обработка сессий PHP с помощью Redis + phpredis на Debian 7.8

Linux, Настройка сервера Add comments

На одном из проектов я захотел, чтобы обработчиком сессий PHP был Redis. Пробежавшись по просторам инета понял, что не так всё просто. Если переключить на memcached — это дело редактирования двух строк, то с redis не так просто и нужно ставить дополнительную либу для PHP. Кстати, ее сборка уже проскакивала в одной из старых заметок — Установка Redis + Redis PHP на Debian 6.

Установка Redis

Поставить redis сейчас намного проще, чем написано в той старой статье. Достаточно выполнить команду:

# apt-get install redis-server

Сборка и установка phpredis для PHP

C phpredis уже куда интереснее… Сначала нужно скачать исходники с репозитория в папку /tmp и перейти в нее:

# cd /tmp
# git clone git://github.com/nicolasff/phpredis.git
# cd phpredis

Собираем библиотеку из исходников

# phpize
# ./configure
# make && make test
# make install

В результате увидим адрес папки, где сохранилась наша либа. У меня она сохранилась в /usr/lib/php5/20121212/. Дальше, нужно выставить на нее общие права:

# chmod 644 /usr/lib/php5/20121212/redis.so

Теперь создадим ini-файл с настройками модуля в стиле других модулей PHP в Debian:

# nano /etc/php5/mods-available/redis.ini

Напишем в файл такую инфу:

; configuration for phpredis module
; priority=20
extension=redis.so

Теперь создадим линки на модуль для PHP-FPM, CGI и CLI:

# ln -s ../../mods-available/redis.ini /etc/php5/fpm/conf.d/20-redis.ini
# ln -s ../../mods-available/redis.ini /etc/php5/cli/conf.d/20-redis.ini
# ln -s ../../mods-available/redis.ini /etc/php5/cgi/conf.d/20-redis.ini

Перезапускаем PHP-FPM:

# service php5-fpm restart

Проверяем подключился ли модуль к PHP:

# php -m | grep redis

Если в ответе получили «redis», тогда всё прошло хорошо и модуль подключен.

Теперь можно удалить исходники модуля:

# cd ..
# rm -R phpredis/

Подлючение Redis в роли обработчика сессий

Для начала попробуем подключить redis и php через tcp. Для этого нам нужно открыть конфиг php:

# nano /etc/php5/fpm/php.ini

Заменяем две строки:

session.save_handler = redis
session.save_path = tcp://127.0.0.1:6379

Перезапускаем PHP и радуемся 🙂

# service php5-fpm restart

Для верности можно проверить логи php и, если есть какое-то приложение или веб-сайт на сервере, проверить на нем.

Подключение Redis и PHP через unix socket

Но мне tcp как-то не очень нравится, поэтому я выбрал подключение через unix socket. Для этого нужно отредактировать конфиг redis:

# unixsocket /tmp/redis.sock
# unixsocketperm 700

меняем на:

unixsocket /tmp/redis.sock
unixsocketperm 777

Теперь отредактируем настройки PHP:

# nano /etc/php5/fpm/php.ini

Редактируем такие параметры:

session.save_handler = redis
session.save_path = unix:///tmp/redis.sock?persistent=1&weight=1&database=0

Перезапускаем Redis и PHP:

# service redis-server restart && service php5-fpm restart

Теперь можно проверить работоспособность сессий и получать удовольствие. Надеюсь, кому-то будет полезным! 🙂


3 августа, 2015  
Tags: debian, debian 7, php, phpredis, redis, редис

4 комментария to “Обработка сессий PHP с помощью Redis + phpredis на Debian 7.8”

  1. black
    26 августа, 2015 at 8:13 дп

    Почему redis, а не memcache?


  2. Gemini_13
    1 октября, 2015 at 2:19 пп

    Redis мне как-то больше нравится, чем мемкеш. Да и на сервере уже использовался редис для кеша.


  3. Елена
    30 августа, 2015 at 11:49 дп

    Спасибо за мануал.
    А скажите пожалуйста, для такой связки Nginx + Apache + fastcgi данный мануал подойдет?


  4. Gemini_13
    1 октября, 2015 at 2:27 пп

    Да, подойдет. Не уверен, что с такой связкой есть смысл думать о другом обработчике сессий, но если хотите попробовать, возможно, Вам будет удобнее использовать memcached, для него не нужно собирать модули. По сути устанавливаете memcached, модуль для php и правите конфиг php.ini согласно документации: http://php.net/manual/ru/memcached.sessions.php — первый комментарий


Leave a Reply

  • Рубрики

    • FreeBSD (20)
    • Linux (46)
    • MySQL (11)
    • Windows (14)
    • Железо (3)
    • Мои моды к TorrentPier II (16)
    • Настройка сервера (49)
    • Разное (33)
    • Скрипты (30)
  • Свежие записи

    • Поля форм на Yii2: textInput(), passwordInput() и hiddenInput()
    • Поля форм на Yii2: CheckboxList()
    • SpeedTest датацентров Digital Ocean
    • Патчим Gearman на Debian
    • nginx + Apache 2.4 и REMOTE_ADDR (решение проблемы)
    • Создание и подключение swap-файла в Debian
    • Запуск PhpStorm 9 x64 на Windows
    • Рекурсивная замена прав доступа для папок и файлов в Linux
    • VirtualBox 5 + phpVirtualBox на Debian 8.2 (jessie)
    • Обработка сессий PHP с помощью Redis + phpredis на Debian 7.8
  • Ссылки

    • My GitHub
  • Архивы

    • Июнь 2016 (2)
    • Март 2016 (2)
    • Январь 2016 (3)
    • Ноябрь 2015 (2)
    • Август 2015 (1)
    • Февраль 2015 (1)
    • Январь 2015 (7)
    • Октябрь 2014 (1)
    • Июнь 2014 (1)
    • Май 2014 (1)
    • Апрель 2014 (7)
    • Февраль 2014 (9)
    • Январь 2014 (5)
    • Декабрь 2013 (7)
    • Ноябрь 2013 (1)
    • Октябрь 2013 (3)
    • Август 2013 (4)
    • Июль 2013 (4)
    • Июнь 2013 (3)
    • Апрель 2013 (2)
    • Март 2013 (2)
    • Февраль 2013 (6)
    • Январь 2013 (2)
    • Декабрь 2012 (1)
    • Ноябрь 2012 (2)
    • Октябрь 2012 (7)
    • Сентябрь 2012 (22)
Все права защищены © 2015 Gemini_13's Blog
G13.org.ua