==== websocket_backend.pl ====
Демон, в котором собираются все долгоживущие процессы.
^start | запустить в режиме демона |
^stop | остановить демон |
^restart | перезапустить |
^status | проверить, запущен ли демон |
На даный момент обрабатывает:
* [[abills:docs:manual:sender:browser|WebSocket соединения]]
* [[abills:docs:callcenter:atrey:ru#realizacija_v_brauzere|Asterisk AMI и интеграцию с Callcenter]]
* [[abills:docs:manual:sender:telegram|Telegram Bot API ]]
* [[abills:docs:manual:sender:browser#zapusk_vneshnej_komandy_s_uvedomleniem|Обработка длительных внешних команд с оповещением о выполнении]]
* [[abills:docs:modules:sysinfo:satellite:ru|Контроль сервисов на внешних серверах]]
==== Установка сервера WebSocket ====
Установить perl модули:
* [[abills:docs:manual:soft:anyevent|AnyEvent]]
* [[abills:docs:manual:soft:protocolwebsocket|Protocol::WebSocket]]
Установить и включить модули апача:
* mod_proxy
* mod_proxy_wstunnel
Прописать в конфигурацию apache2 ''abills_httpd'' в секцию VirtualHost биллинга
ProxyPass "/admin/wss/" "ws://127.0.0.1:19443/wss/admin/" retry=1
Установить и включить сервер вебсокетов
ln -s /usr/abills/misc/websocket_backend.pl /usr/abills/libexec/websocket_backend.pl
chmod +x /usr/abills/libexec/websocket_backend.pl
iptables -I INPUT 1 -p tcp --dport 19443 -j ACCEPT
**Включать при загрузке**
=== FreeBSD ===
# fetch -o /usr/local/etc/rc.d/abills_websocket http://abills.net.ua/misc/abills_websocket_rc.d
# chmod +x /usr/local/etc/rc.d/abills_websocket
=== Debian/Ubuntu/CentOS ===
Можно просто прописать в **/etc/rc.local** ( Задержка нужна для того, чтобы загрузилась MySQL)
(sleep 5 && /usr/abills/libexec/websocket_backend.pl -d) &
**Или** установить как службу \\
**/etc/systemd/system/abills-backend.service**
[Unit]
Description=ABillS Websocket Server
After=network.target
After=mysql.service
Requires=mysql.service
[Service]
Type=forking
PIDFile=/usr/abills/var/log/websocket_backend.pid
ExecStartPre=/bin/chown -R nobody /usr/abills/var/
ExecStart=/usr/abills/libexec/websocket_backend.pl -d
ExecReload=/usr/abills/libexec/websocket_backend.pl stop
[Install]
WantedBy=multi-user.target
**nobody** - пользователь веб сервера
Включить службу
systemctl enable abills-backend.service
systemctl start abills-backend.service
==== Автоматический перезапуск процеса ====
Благодаря billd-плагину check_programs можно перезапускать процес и получать уведомления о неактивности\\
**/etc/crontab**\\
*/5 * * * * /usr/abills/libexec/billd check_programs PROGRAMS=websocket
====Возможные проблемы====
**Не установлен systemd**\\
Решения:
* установить ''systemd''
* Использовать ''rc.d'' скрипт
**Ошибки с mysql.service**\\
Если в системе есть ''systemd'', а вместо **mysql**, установлена **mariadb**, служба может называться **mariadb.service**, переименуйте зависимую службу.\\
Если система не поддерживает запуск mysql через systemd, используйте init.d скрипт.
\\
** Конфигурация **
**libexec/config.pl**
$conf{WEBSOCKET_ENABLED} = 1;
$conf{WEBSOCKET_URL} = 'https://192.168.1.169:9443'; # кастомный URL для WebSocket
\\