Впринципе в инете достаточно много мануалов по установке Redis, но как-то у меня так случилось, что подходящего мануала не нашел и поэтому ставил по 3-4 мануалам. Вдаваться в подробности я не буду, поскольку только набираюсь ума и толково не обьясню что куда, да и не все нюансы сам понимаю.
Заметка снова в стиле «копи-паст» для быстрой установки Redis на сервер с OC Debian под рутом.
Установка и настройка Redis
Ставим пакеты, которые нам будут нужны в процессе сборки и тестирования:
apt-get install make gcc unzip php5-dev
Переходим на страничку для скачивания свежей версии Redis на официальном сайте или же просто ищем по поисковику:
http://redis.io/download
На время написания заметки актуальная стабильная версия 2.4.17. Копируем справа напротив версии ссылку на скачивания архива:
http://redis.googlecode.com/files/redis-2.4.17.tar.gz
И приступаем к установке:
# wget http://redis.googlecode.com/files/redis-2.4.17.tar.gz # tar xzf redis-2.4.17.tar.gz # cd redis-2.4.17 # make && make test
Сборка будет пару минут, потому можно сходить покурить или взять чашечку кофе 🙂
Когда все удачно собралось, продолжаем установку:
# cp src/redis-server src/redis-cli /usr/bin # mkdir /etc/redis # cp redis.conf /etc/redis/ # groupadd redis # useradd -l -g redis redis # touch /var/log/redis.log # chown redis:redis /var/log/redis.log
Приступим к настройке конфига redis-ки:
# nano /etc/redis/redis.conf
Тут нам нужно обратить внимание на несколько параметров:
# Пусть работает как демон daemonize yes # Прослушиваем только локальный интерфейс bind 127.0.0.1 # Закрыть соединение после того, как клиент находится в режиме ожидания N секунд (0 для отключения) timeout 30 # Включаем логирование logfile /var/log/redis.log syslog-enabled yes syslog-ident redis # Папка для базы редиски dir /usr/var/redis/
Теперь нам нужен init-скрипт для управления демоном. Он уже есть, нужно в папке utils, но он поддерживает только start и stop. Можно использовать и его, но мне хотелось с возможностью перезагрузки одной командой. Такой скрипт нашелся тут. Его мы и будем использовать.
# nano /etc/init.d/redis
Заменям весь код на этот:
#! /bin/sh ### BEGIN INIT INFO # Provides: redis-server # Required-Start: $syslog # Required-Stop: $syslog # Should-Start: $local_fs # Should-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: redis-server - Persistent key-value db # Description: redis-server - Persistent key-value db ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/bin/redis-server DAEMON_ARGS=/etc/redis/redis.conf NAME=redis DESC=redis-server PIDFILE=/var/run/redis.pid test -x $DAEMON || exit 0 test -x $DAEMONBOOTSTRAP || exit 0 set -e case "$1" in start) echo -n "Starting $DESC: " touch $PIDFILE chown redis:redis $PIDFILE if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS then echo "$NAME." else echo "failed" fi ;; stop) echo -n "Stopping $DESC: " if start-stop-daemon --stop --retry 10 --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON then echo "$NAME." else echo "failed" fi rm -f $PIDFILE ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
Выдадим права:
# chmod 755 /etc/init.d/redis
Проверим работу скрипта командами:
# service redis start # service redis restart # service redis stop
Когда сервер запущен проверяем как он работает:
# telnet localhost 6379
Если получили такой ответ, значит всё работает нормально:
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. ^CConnection closed by foreign host.
Теперь положим redis в автозагрузку:
# update-rc.d redis defaults
Компиляция модуля для PHP
Для работы скриптов php с redis-сервером нужен еще дополнительный модуль. Их существует несоколько и их все можно найти на том же официальном сайте на вкладке Clients. Честно скажу разницу в них не знаю, но для себя выбрал phpredis (звездочка подкупила :-D). Начем…
Возвращаемся обратно в папку рута и скачиваем файлы (актуальная версия сейчас 2.2.2):
# cd ~ # wget https://github.com/nicolasff/phpredis/zipball/master # unzip master # cd nicolasff-phpredis-3a3ee37
Беремся за компиляцию модуля:
# phpize
Получаем в ответ нечто такое, версии могут отличатся, но нужно запомнить свою.
Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626
Компилируем:
# ./configure CFLAGS="-O3" # make clean all && make test
Если всё прошло успешно то в папке modules должен был появится модуль redis.so, который мы перекинем в папку к другим модулям php:
# cp modules/redis.so /usr/lib/php5/<folder>
— Ваша папка (версия), у меня 20090626
Теперь подключаем в php наш модуль. Для этого нам нужно создать файл redis.ini и вписать в него extension=redis.so:
# nano /etc/php5/apache2/conf.d/redis.ini
Перезапускаем apache:
# service apache2 restart
Удаляем весь мусор:
# cd .. # rm redis-2.4.17.tar.gz # rm master # rm -R redis-2.4.17 # rm -R nicolasff-phpredis-3a3ee37
Всё, Redis установлен и работает. 🙂
15 ноября, 2012 at 5:09 дп
[…] Логи великая штука и не зря советуют их просматривать. Вот по своей неопытности я засрал себе логи редиса аж на целых 2Гб за 3-4 недели. Что ж.. Нужно учится на ошибках. Как устанавливался Redis я описывал в заметке Установка Redis + Redis PHP на Debian 6. […]
30 ноября, 2012 at 7:10 дп
Good post, I always like them.
2 февраля, 2013 at 2:18 пп
[…] Redis установлен и работает. Источники: http://g13.org.ua/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-redis-redis-php-%D0%BD%D0%B… http://habrahabr.ru/qa/28525/ http://habrahabr.ru/post/134974/ This entry was posted in web and […]
29 декабря, 2013 at 1:18 пп
[…] Установка Redis + Redis PHP на Debian 6 How To Install and Use Redis Запись опубликована 29.12.2013 автором xandros в рубрике IT, Linux с метками redis, redis-server, redis.cofnf, tcl8.5. […]