Table of Contents |
---|
websocket_backend.pl
Демон, в котором собираются все долгоживущие процессы.
start | запустить в режиме демона |
---|---|
stop | остановить демон |
restart | перезапустить |
status | проверить, запущен ли демон |
На данный момент обрабатывает:
Установка сервера WebSocket
Установить perl модули:
Установить и включить модули апача:
mod_proxy
mod_proxy_wstunnel
Для Ubuntu, Debian
Code Block |
---|
a2enmod proxy a2enmod proxy_wstunnel |
Прописать в конфигурацию apache2 apache2 abills_httpd.conf
в секцию VirtualHost биллинга
Code Block | ||||
---|---|---|---|---|
| ||||
ProxyPass "/admin/wss/" "ws://127.0.0.1:19443/wss/admin/" retry=1 |
Установить и включить сервер вебсокетов
Code Block | ||
---|---|---|
| ||
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
Code Block | ||
---|---|---|
| ||
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)
Code Block | ||
---|---|---|
| ||
(sleep 5 && /usr/abills/libexec/websocket_backend.pl -d) & |
Или установить как службу
/etc/systemd/system/abills-backend.service
Warning |
---|
В строке : ExecStartPre=/bin/chown -R $nobody /usr/abills/var/ $nobody - пользователь веб сервера, то есть : www-data, www, apache - в зависимости от типа ОС |
Code Block | ||
---|---|---|
| ||
[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 |
Включить службу
Code Block | ||
---|---|---|
| ||
systemctl enable abills-backend.service systemctl start abills-backend.service |
Автоматический перезапуск процеса
Благодаря billd-плагину check_programs можно перезапускать процесс и получать уведомления о неактивности
/etc/crontab
Code Block | ||
---|---|---|
| ||
*/5 * * * * root /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
language | bash |
---|
$conf{WEBSOCKET_ENABLED} |
= |
1; |
Включить websocket | |
$conf{WEBSOCKET_URL} |
= |
'127.0.0.1:9443/admin/wss/'; |
кастомный |
URL |
для |
WebSocket |
$conf{WEBSOCKET_DEBUG}=5; | Режим отладки |
$conf{WEBSOCKET_PORT}='19443'; | websocket port. по умолчанию: 19443 |
$conf{USER_WEBSOCKET_PORT}='19445'; | Порт абонента. По умолчанию: 19445 |
$conf{WEBSOCKET_INTERNAL_PORT}='19444'; | Порт внутреннего общения суб программ По умолчанию: 19444 |
Тестирование
Code Block |
---|
cd /usr/abills/t/
perl websocket.t AID=1 |