Установка php-handlersocket 0.0.7 на ubuntu (новые грабли)

// Январь 28th, 2011 // Ubuntu, Веб-разработка

Со времени прошлого поста прошло много времени, расширение php-handlersocket успело обновитсья с 0.5 до 0.7, автор исправил некоторые баги. Спасибо вам, за то что находили их и постили в Issues. Сегодня обновили Ubuntu на компе разработчика с 10.04 до 10.10 и старая метода установки HandlerSocket работать перестала. Но нам всё-таки удалось его установить! Баг актуален только в случае обновления Ubuntu c 10.04 на 10.10 На чистой ОС таких проблем нет.

Проблема

При коннфигурировании (./configure) расширения php-handlersocket вылетают ошибки вида:

"error: Please reinstall the hsclient distribution"
"configure: error: wrong hsclient lib version or lib not found"

а при компиляции(make) такие:

"checking for mysql_config... no
checking mysql binary... configure: error: mysql_config not found! You have to specify the directory where mysql_config resides to --with-mysql-bindir=PATH."

"checking if --enable-mysql-debug is specified... no
checking mysql source... configure: error: --with-mysql-source=PATH is required for standalone build"

Суть проблемы

Для компиляции расширения необходим скомпилированный плагин handlersocket для mysql. А для компиляции плагина необходимы исходники mysql.

Решение

0. Подготавливаем систему

sudo apt-get install libmysqlclient-dev

1. Смотрим какая версия mysql стоит в системе.

$ mysql -u root -p
Server version: 5.1.52-rel12.3 (Percona Server (GPL), 12.3 , Revision 159)

У нас стоит Percona Server.

2. Идём на их сайт и качаем исходники:
http://www.percona.com/redir/downloads/Percona-Server-5.1/Percona-Server-5.1.52-12.3/source/Percona-Server-5.1.52-12.3.tar.gz

3. Распаковываем папку Percona-Server из архива в папку /usr/local/src/percona

4. Скачиваем плагин handlersocket отсюда:
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/archives/master
Распаковываем его в папку /home/user/1/hs

5. Конфигурируем плагин вместе с исходниками mysql и компилим

andrey@vaio:/home/user/1/hs# ./autogen.sh
andrey@vaio:/home/user/1/hs# ./configure --with-mysql-source=/usr/local/src/percona
andrey@vaio:/home/user/1/hs# make

Если вылезает ошибка:

checking mysql binary... configure: error: mysql_config not found! You have to specify the directory where mysql_config resides to --with-mysql-bindir=PATH.

значит вы не поставили sudo apt-get install libmysqlclient-dev
6. Скачиваем расширение php-handlersocket(http://code.google.com/p/php-handlersocket/downloads/list),
если ещё не скачали, и распаковываем их в папку (/usr/local/HandlerSocket-Plugin/).

7. Конфигурируем php-расширение вместе с плагином handlersocket и компилим:

./configure --with-handlersocket-includedir=/usr/local/HandlerSocket-Plugin/libhsclient
make

Должно вывести:

----------------------------------------------------------------------
Libraries have been installed in:
   /home/user/1/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

и ставим:

# make install

Installing shared extensions:     /usr/lib/php5/20090626+lfs/
Installing header files:          /usr/include/php5/

8. Создаем файл /etc/php5/conf.d/handlersocket.ini в котором пишем

extension=handlersocket.so

9. Перезагружаем php
sudo service apache2 restart (для php, установленного, как модуль Apache)
sudo service php5-fpm restart (для php-fpm)

10. Смотрим phpinfo(); и там должен появиться раздел про HandlerSocket

Ура! Теперь мы можем работать с HS!

Share

Спасибо!


Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:


9 Responses to “Установка php-handlersocket 0.0.7 на ubuntu (новые грабли)”

  1. Sergey:

    Помогите пожалуйста!

    Сдела все как говориться тут. Все скомпилил. Согдал таблицы как в примере и запустил php скрипт.
    Вот получил такой ответ
    Connected to HandlerSocket
    Can not open index
    -1:connect: 111

    Народ подскажите что нетак?!
    Это я не так скомпилил или это вообще в базе проблема или в чем?!

    • google.com Андрей Токарчук:

      Сергей, какая у вас структура таблицы и данные и какой запрос к HandlerSocket?

  2. Sergey:

    И еще.
    У меня после установки percona server кол-во используемой памяти резко возрасло в разы — так и должно быть?!

  3. Sergey:

    $hs = new HandlerSocket(‘127.0.0.1’, 9998);
    if($hs) {
    print ‘Connected to HandlerSocket’;
    } else {
    print ‘Can not connect’;
    die();
    }
    //index
    $index = $hs->openIndex(
    1,
    ‘mysql’,
    ‘user’,
    HandlerSocket::PRIMARY,
    ‘Host,User,Password’
    );

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