Как установить Redis 2.8 (новейший) + PhpRedis на Ubuntu из исходных кодов > stdout.in Ievgen Kuzminov IT blog

Как установить Redis 2.8 (новейший) + PhpRedis на Ubuntu из исходных кодов

25 сент. 2014 г., 18:55:35

redis

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

Изучаем Redis

Если вы тесно не знакомы с Redis. Начните с Маленькой книге о Redis от Карла Сегуина. Книга даёт базовое понимание и вдохновляет к использованию. После неё вы уже легко разберётесь в какую сторону "копать" дальше в изучении Redis (материалов и документации в Интернете великое множество).

Redis активно разрабатывают и часто обновляют новым функционалом, и потому многие менеджеры пакетов для Linux содержат устаревшие версии. Я рекомендую устанавливать Redis и php_redis (PHP расширание для связи с Redis) из свежайших исходных кодов - это легко и просто.

Я приготовил bash для инсталляции Redis в Ubuntu "одним махом".

Устанавливаем последний Redis из исходных кодов

Исходный скрипт в Gist

Пошагово : Сохраняем в .sh файл и запусткаем.

#!/bin/bash

if [ "$(whoami)" != "root" ]; then
 echo "ERROR : Run script as Root (sudo !!) please"
 exit 1
fi

read -e -p "Redis version to be installed (change if needed) : " -i "2.8.8" VERSION
echo 'Installing redis v.'$VERSION' ... '

# Устанавливаем build essentials, если необходимо
apt-get install build-essential

wget http://download.redis.io/releases/redis-$VERSION.tar.gz
tar xzf redis-$VERSION.tar.gz
cd redis-$VERSION
make
make install prefix=/usr/local/bin/
cp redis.conf /etc/redis.conf
cd ..
rm redis-$VERSION -R
rm redis-$VERSION.tar.gz

Добавляем сервис redis-server

useradd -r -s /bin/false redis
wget -O /etc/init.d/redis-server https://gist.github.com/iJackUA/5336459/raw/4d7e4adfc08899dc7b6fd5d718f885e3863e6652/redis-server-for-init.d-startup
touch /var/run/redis.pid
chown redis:redis /var/run/redis.pid
chmod 755 /etc/init.d/redis-server

Добавляем сервис redis-server в автозапуск

update-rc.d redis-server defaults

Устанавливаем PhpRedis из исходных кодов

PhpRedis это эффективное расширение PHP, написанное на языке C, предоставляющее API для работы с Redis.

Исходный скрипт в Gist

Сохраняем в .sh файл и запускаем. Это установит необъодимые PHP зависимости, последний php_redis, добавит настройки расширения и перезапустит сервер Apache. Если вы не используете Apache2, то подправьте скрипт с необходимыми вам шагами.

#!/bin/bash

if [ "$(whoami)" != "root" ]; then
 echo "ERROR : Run script as Root (sudo !!) please"
 exit 1
fi

read -e -p "php_redis version to be installed (change if needed) : " -i "2.2.5" VERSION
echo 'Installing php_redis v.'$VERSION' ... '

# installing build essentials if it is missing
apt-get install php5-dev php-pear

wget https://github.com/nicolasff/phpredis/archive/$VERSION.tar.gz
tar xzf $VERSION.tar.gz
cd phpredis-$VERSION
phpize
./configure
make
make install
cd ..
rm phpredis-$VERSION -R
rm $VERSION.tar.gz

mv /etc/php5/mods-available/redis.ini /etc/php5/mods-available/redis.bkp
touch /etc/php5/mods-available/redis.ini
echo "extension=redis.so" > /etc/php5/mods-available/redis.ini
ln -s /etc/php5/mods-available/redis.ini /etc/php5/apache2/conf.d/redis.ini
ln -s /etc/php5/mods-available/redis.ini /etc/php5/cli/conf.d/redis.ini

service apache2 restart

Для обновления - запустить ещё раз

Скрипты весьма понятны и линейны, т.к. используют только базовые операции, которые легко адаптировать под свою среду и сервер. И при необходимости обновить Redis - их можно просто перезапустить, указав новую версию.

comments powered by Disqus
Евгений
Кузьминов "iJackUA"
Web Team Lead
в MobiDev (Харьков, Украина)
Code in Ruby and Elixir, but still love PHP. Explore ES6 and Vue.js. Explore databases, use Ubuntu and MacOS, think about IT people and management

Заметки


Framework functionality that is not related to merely taking input from a Request and presenting output through a Response becomes entirely secondary to, perhaps even actively harmful to, building well-structured applications... [more]