Просмотров: 19399
Дата последнего изменения: 02.12.2022
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
4
5
Схема работы:
----------------------- ---------------------------------------------------
| nginx: 0.0.0.0:80 | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json |
----------------------- ---------------------------------------------------
----------------------- ---------------------------------------------------
| nginx: 127.0.0.1:8895 | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json |
----------------------- ---------------------------------------------------
Nginx проксирует запрос на push-сервис выбранного типа. Публикация сообщений ограничена для локальной ноды.
Nodejs-процессы делятся на два типа:
Процессы, отвечающие за подключение пользователя к выбранному каналу и получение им сообщений. Слушают порты 8010-8015;
Процессы, отвечающие за отправку сообщения в канал. Слушают порты 9010-9011.
Для запуска Push-сервера нам понадобятся:
nodejs & npm ;
архив сервиса и его модулей.
Выполните действия:
Скачайте архив с репозитория repo.bitrix.info
wget https://repo.bitrix.info/vm/push-server-0.3.0.tgz
и разместите его в директории /opt
. Выполните установку:
su -
cd /opt
npm install --production ./push-server-0.3.0.tgz
Установка закончится строкой:
+ push-server@0.3.0
added 144 packages from 151 contributors and audited 144 packages in 10.388s
Выполните (исключительно для удобства):
su -
ln -sf /opt/node_modules/push-server/etc/push-server /etc/push-server
Скопируйте файлы сервиса и основную конфигурацию:
su -
cd /opt/node_modules/push-server
cp etc/init.d/push-server-multi /usr/local/bin/push-server-multi
cp etc/sysconfig/push-server-multi /etc/sysconfig/push-server-multi
cp etc/push-server/push-server.service /etc/systemd/system/
ln -sf /opt/node_modules/push-server /opt/push-server
Отредактируйте конфигурационный файл /etc/sysconfig/push-server-multi
. В нём нужно исправить/добавить параметры:
USER/GROUP - пользователь, под которым будет запущен сервис;
SECURITY_KEY - cекретный ключ для подписи соединения между клиентами и пуш-сервером;
RUN_DIR - директория для хранения PID файлов процесса.
Пример настроек параметров:
USER=apache2
GROUP=_webserver
SECURITY_KEY="SECURITYKEY123456"
RUN_DIR=/tmp/push-server
Каждый nodejs процесс будет запущен как отдельный процесс. Сгенерируйте конфигурации:
/usr/local/bin/push-server-multi configs pub
/usr/local/bin/push-server-multi configs sub
Сгенерированные конфигурации в формате
json
push-server-sub-80XX.json push-server-pub-90XX.json
будут размещены в каталоге: /etc/push-server/
.
Создайте каталог через tmpfiles.d :
echo 'd /tmp/push-server 0770 apache2 _webserver -' > /etc/tmpfiles.d/push-server.conf
systemd-tmpfiles --remove --create
Создайте каталог логов:
mkdir /var/log/push-server
chown apache2:_webserver /var/log/push-server
Измените пользователя в конфигурационном файле сервиса: /etc/systemd/system/push-server.service
[Service]
User=apache2
Group=_webserver
ExecStart=/usr/local/bin/push-server-multi systemd_start
ExecStop=/usr/local/bin/push-server-multi stop
....
Переконфигурируйте:
systemctl daemon-reload
Запустите сервис:
systemctl --now enable push-server
Перейдите в конфигурацию push модуля (настройки сайта) и включите использование локального push-сервера (последняя версия).
Дополнительно нужно будет указать секретный ключ SECURITY_KEY, который мы настраивали выше в файле /etc/sysconfig/push-server-multi
.