И вот все в нем хорошо. Кроме одного - установки и настройки. Ну блин, как подумаю об этом, у меня тут же перед глазами эта картинка
В конце концов решился. Как всегда на ночь глядя :-)
Оказался не так страшен черт, как его малют. А точнее, все дело в правильных мануалах.
Одного такого правильного я не нашел, поэтому скомпилирую его для себя здесь.
Ну, понеслась...
Для начала соберем все необходимые ссылки
Собственно сам сервер Redis
PhpRedis API
Расширение Cm_Cache_Backend_Redis для Magento
Делаем все из под root в ssh
# wget http://redis.googlecode.com/files/redis-2.6.11.tar.gzАктуальную ссылку на текущую версию дистрибутива берем сверху
# tar xzf redis-2.6.11.tar.gz # cd redis-2.6
Примечание: если устанавливаем на 32-х битную систему, необходимо предварительно изменить одну строчку в файле src/Makefile
В данной версии, это 214 строка.
В оригинале это выглядит так:
$(MAKE) CFLAGS="-m32" LDFLAGS="-m32"
а мы сделаем вот так:
$(MAKE) CFLAGS="-m32 -march=i686" LDFLAGS="-m32 -march=i686"
Затем переносим файлы сервера из папки 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 134217728 (значение памяти должно быть в байтах. я пока что назначил 128Mb)
На этом с установкой и настройкой сервера Redis пока что закончили. Переходим к следующему этапу - установке и настройке phpRedis.
Я знаю, что я не продвинутый чувак и не устанавливаю на своих серверах git и modman чтобы тянуть нужные мне дистры прямо из GitHub. Я все больше по старинке качаю из всяких репозиториев и уже на месте компилирую. Вот так мне удобнее.
# cd ~ # wget https://github.com/nicolasff/phpredis/archive/master.zip # unzip master.zip # cd phpredis-master # phpize # ./configure # make && make install
Скорее всего файл модуля не пропишется в конфигурационном файле 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
Сразу же после <session_save><![CDATA[]]></session_save>
Добавляем
<cache> <backend>Cm_Cache_Backend_Redis</backend> <backend_options> <server>127.0.0.1</server> <!-- or absolute path to unix socket --> <port>6379</port> <persistent></persistent> <!-- Specify a unique string like "cache-db0" to enable persistent connections. --> <database>0</database> <password></password> <force_standalone>0</force_standalone> <!-- 0 for phpredis, 1 for standalone PHP --> <connect_retries>1</connect_retries> <!-- Reduces errors due to random connection failures --> <read_timeout>10</read_timeout> <!-- Set read timeout duration --> <automatic_cleaning_factor>0</automatic_cleaning_factor> <!-- Disabled by default --> <compress_data>1</compress_data> <!-- 0-9 for compression level, recommended: 0 or 1 --> <compress_tags>1</compress_tags> <!-- 0-9 for compression level, recommended: 0 or 1 --> <compress_threshold>20480</compress_threshold> <!-- Strings below this size will not be compressed --> <compression_lib>gzip</compression_lib> <!-- Supports gzip, lzf and snappy --> </backend_options> </cache>
Наиболее актуальный конфиг можно всегда посмотреть здесь.
Не забыть очистить старые кеши и сессии в папках
/var/session
/var/cache
Перезапустить apache до кучи.
После этого можно запускать Redis
# /etc/init.d/redis_6379 start
Вот, собственно и все :-) Ну, на самом деле почти все. Потому что если уж быть маньяком кеша и скорости, то быть им до конца. А это значит, что нужно установить еще один модуль для кеширования самих сессий Magento внутри Redis.
Но, тут и так слишком много букв получилось. Напишу об этом в другом посте. Заодно проверю что лучше, хранить сессии в Memcached или же в Redis.
Комментариев нет :
Отправить комментарий