Просмотров: 4381 (Статистика ведётся с 06.02.2017)
Роберт Басыров
Сложность урока:
4 уровень - сложно, требуется сосредоточится, внимание деталям и точному следованию инструкции.
1
2
3
4
5
Недоступно в редакциях:
Старт, Стандарт

Для работы "1С-Битрикс: Управление сайтом" и "Битрикс24 в коробке" рекомендуется использовать BitrixVM, где всё уже настроено. Если по каким-то причинам использование BitrixVM невозможно, то в используемом окружении необходимо настроить push-сервер. Примеры приведены для CentOs.

Настройка push-сервера

  1. Подключите подключенный репозиторий 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

  2. Установите пакеты.

    Примечание: На текущий момент существует проблема с Cenos 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 сервера

  1. Измените группу у пользователя Redis. В случае Bitrix окружения это - группа bitrix, в остальных случаях группа соответствует группе с правами которой работает apache или php-fpm сервис.
    usermod -g bitrix redis 
  2. Измените конфигурационный файл для 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, выставляем значение группы в нужное вам.

  3. Перезапустите сервис Redis и включите для него автоматический запуск.

    Команда для Centos 7:

     systemctl enable redis && systemctl restart redis 

    Команда для Centos 6:

     chkconfig redis on && /etc/init.d/redis restart 

Конфигурация Push-server

  1. Измените файл настроек /etc/sysconfig/push-server-multi, добавив опцию WS_HOST - IP адрес хоста, на котором запускается сервис. Если необходимо измените настройки, которые отвечают за количество процессов nodejs, обрабатывающих запрос на получение и публикацию сообщений:
    ID_SUB=5              # max ID for sub service
    ID_PUB=1              # max ID for pub service
  2. Создайте конфигурационные файлы для запускаемых процессов. Одновременно в конфиге будет создан ключ 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

    Количество файлов зависит от опций, указанных выше.

  3. Запустите процессы.

    Команда для 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

  1. Настройте 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.

  2. Конфигурационный файл виртуальных серверов:
    # /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; }
    }
  3. Подключите конфиги:
    # /etc/nginx/nginx.conf
    include /etc/nginx/bx/site_enabled/rtc-server.conf;
    include /etc/nginx/bx/settings/rtc-im_settings.conf;
  4. В случае виртуальной машины необходимо удалить конфигурацию старого сервера (push-stream-module) /etc/nginx/bx/conf/im_subscrider.conf и /etc/nginx/bx/site_enabled/push.conf.
  5. Перезапустите NGINX сервер.

Настройка сайта

В конфигурационный файл bitrix/.settings.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

4


Курсы разработаны в компании «1С-Битрикс»