Это старая версия документа.
websocket_backend.pl
Демон, в котором собираются все долгоживущие процессы.
На даный момент обрабатывает:
Установка сервера WebSocket
Установить perl модули:
- AnyEvent::Socket
- AnyEvent::Handle
- 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 /etc/rc.d/abills_websocket http://abills.net.ua/misc/abills_websocket_rc.d # chmod +x /etc/rc.d/abills_websocket
Debian/Ubuntu/CentOS
Можно просто прописать в /etc/rc.local
/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
Включить службу
systemctl enable abills-backend.service systemctl start abills-backend.service
Возможные проблемы
Не установлен systemd
Решения:
- установить
systemd
- Использовать
rc.d
скрипт
Ошибки с mysql.service
Если в системе есть systemd
, а вместо mysql, установлена mariadb, служба может называться mariadb.service, переименуйте зависимую службу.
Если система не поддерживает запуск mysql через systemd, используйте init.d скрипт.
Конфигурация
libexec/config.pl
$conf{WEBSOCKET_ENABLED} = 1;