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

Понравилась статья? Поделиться с друзьями:
Sysadmin`s way
Добавить комментарий

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