Настройка и запуск push сервера на стороннем окружении

Для работы "1С-Битрикс: Управление сайтом" и "Битрикс24 в коробке" рекомендуется использовать
BitrixVM
«1C-Битрикс: Виртуальная машина» - бесплатный программный продукт, готовый к немедленному использованию виртуальный сервер, полностью настроенный, протестированный и адаптированный для оптимальной работы как с продуктами «1С-Битрикс», так и с любыми PHP-приложениями. Имеется в версии для Windows и для Unix систем.
Подробнее...
, где всё уже настроено. Если по каким-то причинам использование BitrixVM невозможно, то в используемом окружении необходимо настроить push-сервер. Примеры приведены для CentOs.
Настройка push-сервера
- Подключите подключенный репозиторий bitrix-env:
cat /etc/yum.repos.d/bitrix.repo [bitrix] name=$OS $releasever - $basearch failovermethod=priority baseurl=http://repos.1c-bitrix.ru/yum/el/$releasever/$basearch enabled=1 gpgcheck=1 gpgkey=http://repos.1c-bitrix.ru/yum/RPM-GPG-KEY-BitrixEnv
Примечание: В случае Centos 6 необходим подключенный nodejs репозиторийcurl --silent --location https://rpm.nodesource.com/setup_6.x | bash - >/dev/null 2>&1
- Установите пакеты.
Примечание: На текущий момент существует проблема с Centos 7.3, нужно установить вручную пакет http-parser:
rpm -Uvh https://kojipkgs.fedoraproject.org//packages/http-parser/2.7.1/3.el7/x86_64/http-parser-2.7.1-3.el7.x86_64.rpm
Затемyum -y install nodejs push-server
Настройка Redis сервера
- Измените группу у пользователя Redis. В случае Bitrix окружения это - группа bitrix, в остальных случаях группа соответствует группе с правами которой работает apache или php-fpm сервис.
usermod -g bitrix redis
- Измените конфигурационный файл для redis сервиса:
cat /etc/redis.conf # Ansible managed unixsocket /tmp/redis.sock pidfile /var/run/redis_6379.pid logfile /var/log/redis/redis.log dir /var/lib/redis bind 127.0.0.1 protected-mode yes port 6379 tcp-backlog 511 unixsocketperm 770 timeout 0 tcp-keepalive 300 daemonize yes supervised no loglevel notice databases 16 save 86400 1 save 7200 10 save 3600 10000 stop-writes-on-bgsave-error no rdbcompression yes rdbchecksum yes dbfilename dump.rdb slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes maxmemory 459mb maxmemory-policy allkeys-lru
Значение maxmemory зависит от сервера, где устанавливается push-server. В случае BitrixVM, например, этот параметр равен 1/4 от установленной памяти.
Примечание: В случае Centos 7 меняем настройки службы Redis:cat /etc/systemd/system/redis.service.d/custom.conf [Service] Group=bitrix
Если не используется окружение Bitrix, выставляем значение группы в нужное вам. - Перезапустите сервис Redis и включите для него автоматический запуск.
Команда для Centos 7:
systemctl enable redis && systemctl restart redis
Команда для Centos 6:
chkconfig redis on && /etc/init.d/redis restart
Конфигурация Push-server
- Измените файл настроек
/etc/sysconfig/push-server-multi
, добавив опциюWS_HOST
- IP адрес хоста Можно использовать localhost или 127.0.0.1 для push-server. Если используется внешний адрес, то нужно проследить чтобы настройки межсетевого экрана разрешали доступ с нужных веб-серверов. , на котором запускается сервис. Если необходимо измените настройки, которые отвечают за количество процессов nodejs, обрабатывающих запрос на получение и публикацию сообщений:ID_SUB=5 # max ID for sub service ID_PUB=1 # max ID for pub service
- Создайте конфигурационные файлы для запускаемых процессов. Одновременно в конфиге будет создан ключ
SECURITY_KEY
:
/etc/init.d/push-server-multi reset
Данный процесс создаст конфигурационные файлы в каталоге:
ls -al /etc/push-server/push-server-* -rw-r--r-- 1 bitrix root 685 Aug 25 14:52 /etc/push-server/push-server-pub-9010.json -rw-r--r-- 1 bitrix root 685 Aug 25 14:52 /etc/push-server/push-server-pub-9011.json -rw-r--r-- 1 bitrix root 635 Aug 25 14:52 /etc/push-server/push-server-sub-8010.json -rw-r--r-- 1 bitrix root 635 Aug 25 14:52 /etc/push-server/push-server-sub-8011.json -rw-r--r-- 1 bitrix root 635 Aug 25 14:52 /etc/push-server/push-server-sub-8012.json -rw-r--r-- 1 bitrix root 635 Aug 25 14:52 /etc/push-server/push-server-sub-8013.json -rw-r--r-- 1 bitrix root 635 Aug 25 14:52 /etc/push-server/push-server-sub-8014.json -rw-r--r-- 1 bitrix root 635 Aug 25 14:52 /etc/push-server/push-server-sub-8015.json
Количество файлов зависит от опций, указанных выше.
- Запустите процессы.
Команда для Centos 7:
systemctl enable push-server && systemctl start push-server
Команда для Centos 6:
chkconfig push-server-multi on && /etc/init.d/push-server-multi start
Конфигурация NGINX
- Настройте upstream серверов для push-server:
#/etc/nginx/bx/settings/rtc-im_settings.conf log_format simple '$time_local $status $request'; # if connection ti not set map $http_upgrade $connection_upgrade { default upgrade; '' 'close'; } map $http_upgrade $replace_upgrade { default $http_upgrade; '' "websocket"; } # sub services upstream nodejs_sub { ip_hash; keepalive 1024; server vm04.ksh.bx:8010; server vm04.ksh.bx:8011; server vm04.ksh.bx:8012; server vm04.ksh.bx:8013; server vm04.ksh.bx:8014; server vm04.ksh.bx:8015; } # pub services upstream nodejs_pub { ip_hash; keepalive 1024; server vm04.ksh.bx:9010; server vm04.ksh.bx:9011; }
В качестве имени сервера укажите имя или IP адрес сервера, на котором стоит push-server.
- Конфигурационный файл виртуальных серверов:
# /etc/nginx/bx/site_enabled/rtc-server.conf server { listen 8895 default_server; server_name _; # access_log /var/log/nginx/access.log main buffer=64k; # access_log /dev/shm/access.log simple; # error_log /var/log/nginx/error.log warn; access_log off; add_header "X-Content-Type-Options" "nosniff"; location /server-stat { access_log off; proxy_pass http://nodejs_pub; } location /nginx_status { stub_status on; } location /bitrix/pub/ { # IM doesn't wait proxy_ignore_client_abort on; proxy_pass http://nodejs_pub; } include bx/conf/im_subscrider.conf; location / { deny all; } } server { listen 8893; listen 8894 default_server ssl; access_log off; add_header Access-Control-Allow-Origin *; server_name _; # ssl settings include bx/conf/ssl.conf; # Include error handlers include bx/conf/errors.conf; # Include im subscrider handlers include bx/conf/im_subscrider.conf; location ^~ / { deny all; } }
Примечание: Доступ на сервер, обслуживающий/pub
нужно открыть только для web-серверов, которые будут выполнять публикацию. Если все настройки находятся на одном хосте, то лучше всего использовать 127.0.0.1 адрес для этого сервера. - В конфигурационом файле
bx/conf/im_subscrider.conf
содержаться настройки для публичных точек входа /bitrix/subws, /bitrix/sub и /bitrix/rest. Если предполагается их использование напрямую на сайте, а не отдельным виртуальным сервером, данный файл нужно подключить напрямую в конфиг сайта.# cat /etc/nginx/bx/conf/im_subscrider.conf # Ansible managed location ~* ^/bitrix/subws/ { access_log off; proxy_pass http://nodejs_sub; # http://blog.martinfjordvald.com/2013/02/websockets-in-nginx/ # 12h+0.5 proxy_max_temp_file_size 0; proxy_read_timeout 43800; proxy_http_version 1.1; proxy_set_header Upgrade $replace_upgrade; proxy_set_header Connection $connection_upgrade; } location ~* ^/bitrix/sub/ { access_log off; rewrite ^/bitrix/sub/(.*)$ /bitrix/subws/$1 break; proxy_pass http://nodejs_sub; proxy_max_temp_file_size 0; proxy_read_timeout 43800; } location ~* ^/bitrix/rest/ { access_log off; proxy_pass http://nodejs_pub; proxy_max_temp_file_size 0; proxy_read_timeout 43800; }
- Подключите конфиги:
# /etc/nginx/nginx.conf include /etc/nginx/bx/site_enabled/rtc-server.conf; include /etc/nginx/bx/settings/rtc-im_settings.conf;
- В случае виртуальной машины необходимо удалить конфигурацию старого сервера (push-stream-module)
/etc/nginx/bx/conf/im_subscrider.conf и /etc/nginx/bx/site_enabled/push.conf
. - Перезапустите NGINX сервер.
Настройка сайта
В конфигурационный файл
bitrix/.settings.php
Настройки в новом ядре выполняются в файле /bitrix/.settings.php
. Напомним, что в старом ядре аналогичные настройки выполнялись в файле /bitrix/php_interface/dbconn.php
. Файл .settings.php структурно сильно отличается от прежнего dbconn.php.
Подробнее...
добавляем настройки вида:
'pull' => Array( 'value' => array( 'path_to_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_mobile_listener' => 'http://#DOMAIN#:8893/bitrix/sub/', 'path_to_mobile_listener_secure' => 'https://#DOMAIN#:8894/bitrix/sub/', 'path_to_websocket' => 'ws://#DOMAIN#/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#/bitrix/subws/', 'path_to_publish' => 'http://vm04.ksh.bx:8895/bitrix/pub/', 'nginx_version' => '3', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => 'ANzCW8X3ui4GokEqAh8fwinrSBnWj3dU1V0O3knHlwc224vBdIA8Yg1PhPU1G3tQaTcnorGO9skoWPbLiDV5eqnVcH2RgbKCP65yAHjiFfP4RJh60W9sxqISkcQxWQ0U', 'signature_algo' => 'sha1', 'guest' => 'N', ), ),
В качестве signature_key указываем настройки из /etc/sysconfig/push-server-multi
.
grep SECURITY_KEY /etc/sysconfig/push-server-multi SECURITY_KEY=ANzCW8X3ui4GokEqAh8fwinrSBnWj3dU1V0O3knHlwc224vBdIA8Yg1PhPU1G3tQaTcnorGO9skoWPbLiDV5eqnVcH2RgbKCP65yAHjiFfP4RJh60W9sxqISkcQxWQ0U
и Ваше мнение важно для нас