AddThis Smart Layers

понедельник, 21 апреля 2014 г.

Установка и настройка Redis кеширования в Magento. Ревизия 2

Этот пост является обновлением оригинальной статьи "Установка и настройка Redis кеширования в Magento" в старом блоге на Livejournal.

Установка и настройка Redis


Для начала соберем все необходимые ссылки

Собственно сам сервер Redis
PECL дистрибутив PhpRedis API
Расширение Cm_Cache_Backend_Redis для Magento

Делаем все из под root в ssh

# wget http://download.redis.io/releases/redis-2.8.9.tar.gz
Актуальную ссылку на текущую версию дистрибутива берем сверху
# tar xzf redis-2.8.9.tar.gz
# cd redis-2.8.9
# make

Примечание: данный мануал не будет работать на 32-х битных системах.

Затем переносим файлы сервера из папки src в папку /usr/local/bin/
# cd src
# cp redis-server /usr/local/bin/
# cp redis-cli /usr/local/bin/

Теперь создадим папки для конфигов
# mkdir /etc/redis
# mkdir /var/redis
# mkdir /var/redis/6379
Папку 6379 так назвали потому что сервер Redis использует порт 6379

Далее, копируем скрипты инициализации и конфига
# cp ../utils/redis_init_script /etc/init.d/redis_6379
# cp ../redis.conf /etc/redis/6379.conf

Правим файл конфига
# nano /etc/redis/6379.conf
Нужно найти следующие настройки:
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /var/log/redis_6379.log
dir /var/redis/6379
maxmemory 128M
maxmemory-policy volatile-lru

На этом с установкой и настройкой сервера Redis пока что закончили. Переходим к следующему этапу - установке и настройке phpRedis.

# cd ~
# pecl install redis

Намного проще, чем раньше, когда нужно было компилировать его из исходников :-)

В случае, если файл модуля не пропишется в конфигурационном файле php.ini, мы его ручками пропишем сами

# grep -q "redis.so" /usr/local/lib/php.ini || echo 'extension=redis.so' >> /usr/local/lib/php.ini

Проверка на всякий случай

# for i in `grep ^extension_dir /usr/local/lib/php.ini | awk {'print $3'} | cut -d\" -f2` ;do ls -lah $i/redis* ;done

Так как работаю я с серверами под управлением cPanel, то создам файлик скрипта, который будет добавлять дополнительно установленные модули в php.ini после перекомпиляции при помощи easyapache.
Если таких модулей несколько, то потом уже ручками буду в этот файлик добавлять нужные строки.

На деле же, сколько раз перекомпилировал apache+php, ни разу ничего не херилось. Но на всякий пожарный пускай будет.

# for i in `grep ^extension_dir /usr/local/lib/php.ini | awk {'print $3'} | cut -d\" -f2` ;
do cp $i/redis.so /root ;done
# for i in `grep ^extension_dir /usr/local/lib/php.ini | awk {'print $3'} | cut -d\" -f2` ;
do echo -e '#!/bin/bash\ncp /root/redis.so' "$i\ngrep -q 'redis.so' /usr/local/lib/php.ini || echo
'extension=redis.so' >> /usr/local/lib/php.ini\n/etc/init.d/httpd restart" > 
/usr/local/cpanel/scripts/posteasyapache ;done
# chmod +x /usr/local/cpanel/scripts/posteasyapache

Перезапускаем apache и снова небольшая проверка
# php -i | grep -i redis

Теперь едем дальше, устанавливаем модуль Cm_Cache_Backend_Redis

Модуль устанавливается непосредственно в систему Magento, поэтому ssh здесь уже не нужен, можно и через FTP все сделать.

Я скачал весь репо отсюда.
Из архива достаем папку Cm_Cache_Backend_Redis/Cm/Cache/Backend/ со всем ее содержимым и заливаем ее в app/code/community/
Должно получиться так:
/app/code/community/Cm/Cache/Backend/

Также, копируем папку /lib/Credis/ в соответствующую ей папку /lib в Magento

Теперь отдельно качаем файл Client.php
И закидываем его в эту папку
Должно получиться так
/lib/Credis/Client.php

Все готово, можно менять настройки кеширования в файле /app/etc/local.xml

Сразу же после


Добавляем

Cm_Cache_Backend_Redis

127.0.0.1 
6379
 
0

0  
1    
10         
0 
1  
1  
20480  
gzip 



Наиболее актуальный конфиг можно всегда посмотреть здесь.

Не забыть очистить старые кеши и сессии в папках
/var/session
/var/cache

Перезапустить apache до кучи.
После этого можно запускать Redis
# /etc/init.d/redis_6379 start

Вот, собственно и все :-) Ну, на самом деле почти все. Потому что если уж быть маньяком кеша и скорости, то быть им до конца. А это значит, что нужно установить еще один модуль для кеширования самих сессий Magento внутри Redis.


Комментариев нет :

Отправить комментарий