Понадобилось недавно установить memcached и memcacheq на CentOs 6.2 и к сожалению было обнаружено, что готовых в репозитории нет, и надо компилировать самостоятельно. Причем, по сборке второго — нормальной и актуальной инструкции нету ни на русском, ни на английском. Последняя которая есть на всех сайтах достаточно древна и не совсем актуальна. Поиск гуглом находит только какие-то убогие китайские сайты. Вот и хочу восполнить этот пробел в русском сегменте сети.
Зависимости MemcacheQ
- Libevent > 2.0.19 (текущая 2.0.19)
- Berkeley DB > 4.7 (текущая 5.3.21)
Версия libevent в репозитории
[root@oracle134 ~]# rpm -qa libevent
libevent-1.4.13-1
Berkeley DB в репозитории нет.
Все дальнейшие действия выполняются под учетной записью с правами root.
Ставим Libevent
Переходим в любую удобную вам папку — например /tmp
[root@oracle134 tmp]#wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz
[root@oracle134 tmp]#tar xvzf libevent-2.0.19-stable.tar.gz
[root@oracle134 tmp]#cd libevent-2.0.19-stable
[root@oracle134 libevent-2.0.19-stable]#./configure
[root@oracle134 libevent-2.0.19-stable]#make
[root@oracle134 libevent-2.0.19-stable]#make install
Berkeley DB
Berkeley DB нужно сначала скачать с сайта Oracle.com и загрузить на сервер вручную, поскольку Оракл требует обязательной регистрации и аутенфикации на сайте для скачивания. Далее…
[root@oracle134 tmp]#tar xvzf db-5.3.21.tar.gz
[root@oracle134 tmp]]#cd db-5.3.21/build_unix
[root@oracle134 build_unix]#../dist/configure
[root@oracle134 build_unix]#make
[root@oracle134 build_unix]#make install
Несколько дополнительных действий
Нужно добавить строки:
/usr/local/lib
/usr/local/berkeleydb/lib/
в файл /etc/ld.conf.so, что бы подгрузить нужные .so модули.
echo '/usr/local/lib' >> /etc/ld.conf.so
echo '/usr/local/berkeleydb/lib/' >> /etc/ld.conf.so
Осталось их загрузить и создать ссылку на директорию, для того, что бы memcacheq скомпилировался, поскольку в его конфиге наживую прописан не верный, старый, путь к файлам Berkeley DB.
[root@oracle134 tmp]#ln -s /usr/local/berkeleydb/ /usr/local/BerkeleyDB.4.7
[root@oracle134 tmp]#ldconf
Ставим MemcacheQ
[root@oracle134 tmp]#wget http://memcacheq.googlecode.com/files/memcacheq-0.2.0.tar.gz
[root@oracle134 tmp]#tar xvzf memcacheq-0.2.0.tar.gz
[root@oracle134 tmp]#cd memcacheq-0.2.0
[root@oracle134 memcacheq-0.2.0]#./configure –enable-threads
[root@oracle134 memcacheq-0.2.0]#make
[root@oracle134 memcacheq-0.2.0]#make install
После всего вышеописанного процесс должен пройти без проблем. Для проверки установки запустим и попробуем подсоедениться:
[root@oracle134 memcacheq-0.2.0]#memcacheq -d -r -H /tmp/memcacheq -N -R -v -L 1024 -B 1024 > /tmp/mq_error.log -u nobody 2>&1
[root@oracle134 memcacheq-0.2.0]#telnet localhost 22201
Если установить telnet соединение удалось, значит все настроено верно. Можно выполнить команды stats/stats queue для того, что бы посмотреть текущее состояние очередей. quit — что бы выйти.
Кратко по опциям с которыми запущен memcacheq:
- -d — заустить как демон
- -H /tmp/memcacheq — файл где храниться база очередей
- -u nobody — запуск от имени пользователя nobody
- -L 1024 — размер буфера логов
- -B 1024 — размер элемента
- -R — автоматическое удаление не нужных логов
- -v -подробный режим логов
- -N — включение какой-то не понятной опции DB_TXN_NOSYNC для увеличения производительности
- -r -делает максимальным размер файла ядра(с данными?)
Последние мелочи
Остается лишь добавить скрипт запуска в /etc/init.d/, который можно безвозмедно взять по ссылке
gkirok.blogspot.com, скопировать в /etc/init.d/, дать права на выполнение и добавить в автозагрузку
[root@oracle134 ~]#chmod +x /etc/init.d/memcacheq
[root@oracle134 ~]#chkconfig memcacheq on
Ссылки
PS.
Получил инвайт из песочницы, переношу статью в паблик. Если выбрал не те хабы, просьба сильно не пинать, а указать верные.
Автор: someoneisusingmyusualnick