четверг, 24 марта 2011 г.

Установка и настройка WebSockets Server на PhpDaemon в Ubuntu

Тестировалось на Ubuntu 10.10.

1. Загружаем последнюю версию phpDaemon из https://github.com/kakserpom/phpdaemon и распаковываем в удобную для вас директорию. Я распаковывал в /var/www/phpdaemon.

2.  Устанавливаем PEAR.
sudo apt-get install php-pear

3. Устанавливаем php5 и php5-dev для компилирования расширений php из pecl.
sudo apt-get install php5 php5-dev

4. Устанавливаем libevent.
pecl install libevent

Если ругнётся и выведет урл channel://..., то устанавливаем из канала:
pecl install channel://...

5. Устанавливаем proctitle.

pecl install proctitle

6. Прописываем расширения в /etc/php5/cli/php.ini

extension=libevent.so
extension=proctitle.so

7. Привязываем демона к команде phpd.
sudo ln -s /var/www/phpdaemon/bin/phpdaemon /usr/bin/phpd

8. Настраиваем /etc/phpd/phpd.conf

log-errors  1;
path    /var/www/phpdaemon/conf/AppResolver.php;

WebSocketServer {
  privileged;
}

HTTP {
  listenport 8080;
  path  /var/www/phpdaemon/app-servers/HTTP.php;
  privileged;
}

ExampleWebSocket {
    enable    1;
    path    /var/www/phpdaemon/app-examples/ExampleWebSocket.php;
    listenport    8047;
    user    www;
    group    www;
}

WebSocketOverCOMET {
  enable    1;
}

FlashPolicy {
  enable    1;
  path  /var/www/phpdaemon/app-servers/FlashPolicy.php;
}

9. Запускаем демона sudo phpd start.

При удачном запуске он должен вернуть что-то вроде:

[PHPD] M#6413 IPCManager instantiated.
[PHPD] M#6413 WebSocketServer instantiated.
[PHPD] M#6413 WebSocketServer up.
[PHPD] W#6419 HTTP instantiated.
[PHPD] W#6419 HTTP up.
[PHPD] W#6419 ExampleWebSocket instantiated.
[PHPD] W#6419 ExampleWebSocket up.
[PHPD] W#6417 HTTP instantiated.
[PHPD] W#6417 HTTP up.
[PHPD] W#6418 HTTP instantiated.
[PHPD] HTTP: Couldn't bind TCP-socket '0.0.0.0:8080' (98 - Address already in use).
[PHPD] W#6418 HTTP up.
[PHPD] W#6417 ExampleWebSocket instantiated.
[PHPD] W#6417 ExampleWebSocket up.
[PHPD] W#6419 WebSocketOverCOMET instantiated.
[PHPD] W#6419 WebSocketOverCOMET up.
...

10. Правим /var/www/phpdaemon/clientside-connectors/websocket/index.html

ws: 'ws://' + document.domain + ':8047/exampleApp'

comet: 'http://' + document.domain + ':8080/WebSocketOverCOMET/?_route=exampleApp'

polling: 'http://' + document.domain + ':8080/WebSocketOverCOMET/?_route=exampleApp'

11. Запускаем /var/www/phpdaemon/clientside-connectors/websocket/index.html в браузерах и наслаждаемся WebSockets. В Firefox 3 заработал только флэш эмулятор. Iframe-эмулятор выдавал ошибку "WebSocket not found" и отказывался работать. =(


















1 комментарий:

  1. А вас эта строчка не настораживает?

    >>
    [PHPD] HTTP: Couldn't bind TCP-socket '0.0.0.0:8080' (98 - Address already in use).

    ОтветитьУдалить