Установка phpDaemon + libevent на Ubuntu

// Сентябрь 10th, 2010 // Highload, PHP, Веб-разработка

Зачем нам это надо можно понять из предыдущей статьи, теперь о том как нам всё это установить:

0. PHP должен быть собран с этим:

PHP5 CLI >= 5.3 с поддержкой pcntl, shmop и sockets

1. На всякий случай удаляем старывй libevent (если его не было ничего страшного не будет).

apt-get remove --purge libevent1

2. Качаем libevent из ветки 1.4.x по этой ссылке

3. Распаковываем архив

4. Выполняем конфигурирование и компилируем библиотеку

./configure
make
make install

5. Устанавливаем pecl расширение для php

pecl install channel://pecl.php.net/libevent-0.0.4

6. Добавляем расширение в php.ini для php-cli, т.е. /etc/php5/cli/php.ini

extension=libevent.so

7. Перезапускаем веб-сервер

8. Смотрим phpinfo(); и убеждаемся, что там есть раздел про libevent

7. Заходим в папку, куда будем ставить phpDaemon

cd /usr/local/lib

8. Делаем туда импорт из GIT репозиатрия phpDaemon

git clone git://github.com/kakserpom/phpdaemon.git $path

9. Ставим права

cd ./phpdaemon
chmod +x ./bin/phpdaemon

10. Ставим расширение proctitle

pecl install proctitle

11. Добавляем его в php.ini для php-cli, т.е. /etc/php5/cli/php.ini

и снова перезапускаем веб сервер

extension=proctitle.so
service apache2 restart

12. Запускаем phpdaemon

/usr/local/lib/phpdaemon/bin/phpdaemon start --user=andrey

Дальше для удобства сделаем симлинк:

ln /usr/bin/phpdaemon /usr/local/lib/phpdaemon/bin/phpdaemon

Теперь можно в конфиг-файле, который находится в /usr/local/lib/phpdaemon/conf/phpdaemon.conf.php закомментировать строчку

'mod-fastcgi-enable' => 1,

(т.к. у меня кто-то уже висел на 9000 порту, который он хотел занять), и добавить строчку

'mod-http-enable' => 1,

А в файле /app-servers/HTTP.php меняем listen-port с 80 на 82 дабы не толкаться с apache.

После этого убиваем старого демона командой

phpdaemon stop --user=andrey

и запускаем его заново

phpdaemon start --user=andrey

заходим по адресу http://127.0.0.1:82 и наслаждаемся картинкой.

Мы получили рабочий мнопроцессный HTTP-сервер на PHP! Потестим его:

siege http://127.0.0.1:82/ -d1 -r10 -c25

Transactions:                 250 hits
Availability:              100.00 %
Elapsed time:                8.06 secs
Data transferred:            0.46 MB
Response time:                0.00 secs
Transaction rate:           31.02 trans/sec
Throughput:                0.06 MB/sec
Concurrency:                0.13
Successful transactions:         250
Failed transactions:               0
Longest transaction:            0.03
Shortest transaction:            0.00

Получается он работает с частотой 30Hz

Share

Спасибо!


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


12 Responses to “Установка phpDaemon + libevent на Ubuntu”

  1. Romz:

    Эх с установкой то проблем нет.
    лучше бы показали на примере как пользоваться этим чудом

  2. dr3dd:

    Здравствуйте, не могу запустить Демон, все библиотеки установил, демон установил, не могу запустить, пишется ошибка

    PHP Warning: Module ‘libevent’ already loaded in Unknown on line 0
    [PHPD] Config file not found in ‘/etc/phpd/phpd.conf;./conf/phpd.conf’.

    помогите )

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

      По поводу Warning -> скорее всего libevent подключается сразу в нескольких конфигах. Посмотрите и снесите лишний.
      По поводу второй ошибки -> собственно нет файла с конфигом демона ни в системной папке (/etc/phpd/) ни в текущей(./conf)/ Надо его создать. Вот его образец: https://github.com/kakserpom/phpdaemon/blob/master/conf/phpd.conf.example

  3. dr3dd:

    ура, заработал демон, как примеры в демоне запустить ?

  4. dr3dd:

    Уважаемый господин Андрей Токарчук.
    Объясните пожалуйста тупому, как запустить примеры которые входят в состав phpDaemon. В последней версии демона нет конфига phpdaemon.conf.php, есть phpd.conf, в него не прописывается ‘mod-http-enable’ => 1, я поменял в /app-servers/HTTP.php listen-port 80 на 82, перегрузил демон, зашел по адресу http://127.0.0.1:82, и страницей которая вывелась у вас не насладился :(,

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

      Да, Вася там знатно поменял всё. Файла phpdaemon.conf.php действительно нет, где указать порт — вообще непонятно.
      Нашел вот несколько ссылок:
      По установке
      По конфигурированию

      но пока больше вопросов. У них там намечаклся грандиозный рефакторинг, видимо до конфа ещё не сделали. Пойду, у него спрошу, может просветит, чего и как.

      • Варианта два.
        Первый вариант: — прямо в настройках app есть стартовый конфиг, который можно править…
        Например HTTP.php — прописываем биндинг, порт, дефаултное приложение и т.п.
        Второй вариант: — он уже описан в примерах на ГИТЕ
        в phpd.conf :
        _Имя_Модуля {
        _НАСТРОЙКИ МОДУЛЯ_
        }
        Например:: ServerStatus {
        enable 1;
        }
        HTTP {
        enable 1;
        privileged;
        }

  5. Андрей Токарчук
    Вы разобрались как все таки установить phpdaemon ???
    У меня тоже не получается по Вашей статье!

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