Bitrix: установка push-server без bitrix-env

Введение

Данная небольшая статья возникла в результате того, что понадобилось развернуть push-server для работы модуля Push&Pull в Битрикс24 на стороннем окружении, отличном от стандартного при использовании BitrixVM или bitrix-env.

У битрикса есть официальная документация по установке puhs-server на стороннем окружении, но при выполнении всех шагов возникали ошибки, т.к. их статья обладает некоторыми неточностями, о которых расскажу далее.

Установка

PushServer необходим для работы модуля Push&Pull при работе с порталом на Битрикс24. В его зависимости входит сам Push-Server, nodejs и redis. Очень важно подключить репозитории remi, bitrix и nodejs: это первый нюанс, именно из-за того, что установка nodejs была выполнена из epel, а не из nodejs-source, Push-Server “падал” и отказывался работать. Это было выявлено при детальном сравнении версий пакетов на чистом Centos и виртуальной машине битрикс.

Репозиторий битрикса:

cat > /etc/yum.repos.d/bitrix.repo << EOF
[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
EOF

Репозиторий nodejs 8 версии:

curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -

Второй нюанс: у битрикса, кто знает, есть две версии PushServer и при установке пакета с именем push-server по официальной документации будет установлена первая версия, которая корректно не запустилась через systemd в Centos 7.7.

Из-за этого я потерял много времени в решении проблемы, которой по сути не было. Нужно было установить пакет bx-push-server:

 yum -y install nodejs bx-push-server 

Итого должны быть следующие минимальные версии пакетов:

  • bx-push-server-2.0.0-7.el7.noarch.rpm
  • nodejs-8.17.0-1
  • redis-6.0.4-2.el7.remi.x86_64.rpm

Настройка

Предварительно создается группа и пользователь bitrix:bitrix с UID и GID 600:600:

groupadd -g 600 bitrix
adduser -d /home/bitrix -g 600 -M -N -o -u 600 bitrix

Redis

Меняется группа у Redis:

usermod -g bitrix redis 

Создаётся конфигурационный файл:

cat > /etc/redis.conf << EOF
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 452mb
maxmemory-policy allkeys-lru
EOF

Параметр maxmemory зависит от сервера, где устанавливается push-server и обычно равняется 1\4 от объема ОЗУ.

После правки конфига, необходимо добавить пользователя, от имени которого будет запускаться Redis:

cat > /etc/systemd/system/redis.service.d/custom.conf << EOF
[Service]
Group=bitrix
EOF

И запустить redis:

systemctl enable redis --now

Push-Server

В конфигурационный файл /etc/sysconfig/push-server-multi необходимо добавить строчку WS_HOST – IP адрес хоста:

HG_DIR=/opt/push-server
CFG_DIR=/etc/push-server
VAR_DIR=/var/log/push-server
BASE_SUB=801            # base for port number where sub services lives
BASE_PUB=901            # base for port number where pub services lives
TMPL_SUB=push-server-sub-__PORT__.json
TMPL_PUB=push-server-pub-__PORT__.json
USER=bitrix
ID_SUB=5              # max ID for sub service
ID_PUB=1              # max ID for pub service
IP_LIST='"127.0.0.1", "10.0.0.0/24"'
PID_SUB=push-server-sub-__PORT__.pid
PID_PUB=push-server-pub-__PORT__.pid
WS_PORT=1337
PUBPATH=/bitrix/pub/
SUBPATH=/bitrix/sub/
SUBWSPATH=/bitrix/subws/
RESTPATH=/bitrix/rest/
WS_HOST=10.10.3.3

После этого необходимо создать дополнительные конфигурационные файлы для запускаемых процессов, выполнив команду /etc/init.d/push-server-multi reset

После выполнения команды в конфиге /etc/sysconfig/push-server-multi будет создан ключ SECURITY_KEY, который необходимо прописать для использования в настройках модуля Push&Pull.

После этого необходимо запустить сам PushServer:

systemctl enable push-server --now

На этом всё, конфигурация Nginx берётся полностью из bitrix-env (или виртуальной машины bitrixVM), заменяется только адрес сервера в файле /etc/nginx/bx/settings/rtc-im_settings.conf

Понравилась статья? Поделиться с друзьями:
Комментарии: 4
  1. Раф

    Здравствуйте. а можете обновить инфу если не трудно + пункт про Nginx тоже описать. куда чего. ну как для чайник. буду благодарен.
    вообще отлично будет, если будет мануал для brainycp

    1. admin (автор)

      Здравствуйте! Не очень понял, что именно “обновить”. Вся дока на сайте у битры есть, конфиги для Nginx в той же bitrixvm. Здесь лишь частный случай описан нестандартной установки. Про панель управления не подскажу, я такими не пользуюсь.

      1. Раф

        ну я хотел бы, чтобы как для чайника. а то лыжи не едут.
        вот смотрите тогда по другому. вот скачал даже их виртуалку построенная centos-е. всё нормально прошло. также у них написано, что нечего настраивать не нужно если использовать их виртуалку. на деле при тесте вот так https://prnt.sc/w8fsn4 и https://prnt.sc/w8fukv (тут и ниже версию ставил толку 0). голову сломаешь…
        по этому я хотел развернуть битрикс, например 24 на сторонней панели хостинга. к примеру пусть будет это brainycp, далее туда уже собрать и установить их NodeJS RTC + поправить Nginx как указан у них.
        если проще говоря. интересовал опыт использования связки brainycp + битрикс с NodeJS RTC. как то так. не можете попробовать сделать такую связку? ведь панель brainycp очень интересная. откройте её и посмотри. спасибо огромное заранее.

        1. admin (автор)

          Вы всё усложняете. “Всё настроено” – это не значит буквально, что всё :) Push&Pull – это отдельная часть. Вам надо через /root/menu.sh выполнить установку NodeJS (9 пункт “Configure Push/RTC service for the pool”). И после этого всё должно работать, если открыт фаервол для портов Push&Pull. В самой админке у вас все выставлено верно и там менять ничего не надо.

          Советую внимательно почитать документацию, если планируете работать с этим, там максимально подробно описано по всем модулям и различным настройкам – в работе пригодится. А с подобными панелями я не работаю, всё настраиваю сам, поэтому такой вариант не интересен.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: