==== 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 \\