Views: 5811
Last Modified: 26.02.2024

The setup:

-----------------------                                   ---------------------------------------------------
| nginx:     | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json |
 -----------------------                                   ---------------------------------------------------

 -----------------------                     ---------------------------------------------------
| nginx: | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json |
 -----------------------                     ---------------------------------------------------

Nginx proxies query to push service of selected type. Message getting queries (for example, sub) are public and proxied from standard ports 80/443. Publication queries (pub) are available only from internal server address.

Nodejs processes are split into two types:

  1. Processes responsible for connecting user to selected channel and message reception. Listen to ports: 8010-8015;
  2. Processes responsible for sending message to channel. Listen to ports: 9010-9011.

To start Push-server we need:

  • nodejs & npm ;
  • service and its modules archive.

For installation we require Python or a make utility:

dnf install python3 make -y

Execute the following actions:

  1. Download and install archive push-server-0.3.0.tgz:

    su -
    cd /opt
    npm install --production ./push-server-0.3.0.tgz

    Note: If repository is unavailable, download the archive push-server-0.3.0.tgz and deploy it to the directory /opt. Then execute:

    su -
    cd /opt
    npm install --production ./push-server-0.3.0.tgz

    Installation will finish with string:

    + push-server@0.3.0
    added 65 packages in 46.522s

  2. Execute (exclusively for convenience):

    su -
    ln -sf /opt/node_modules/push-server/logs /var/log/push-server
    ln -sf /opt/node_modules/push-server/etc/push-server /etc/push-server

  3. Copy service files and the main configuration:

    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

  4. Create temporary directory:
    echo 'd /tmp/push-server 0770 apache apache -' > /etc/tmpfiles.d/push-server.conf
    systemd-tmpfiles --remove --create

    Edit config file /etc/sysconfig/push-server-multi. The following parameters must be corrected/added:

    • SECURITY_KEY - secret key for connection signature between customers and push server;

      Note: Key length doesn't matter. The key can use only Latin letter and numbers, special characters are prohibited. But, be advised, that a too short of a key is unsafe. It can be generated as follows:
      cat /dev/urandom |tr -dc A-Za-z0-9 | head -c 128

    • RUN_DIR - director for process PID file storage.
    • USER/GROUP - user that launched the service.

    Example of parameter settings:


  5. Each nodejs process is launched as separate process. Generate the configs:

    /usr/local/bin/push-server-multi configs pub
    /usr/local/bin/push-server-multi configs sub

    Generated configs in the format json push-server-sub-80XX.json
    will be located in this directory: /etc/push-server/.

  6. Update the user and path to script in the service config file /etc/systemd/system/push-server.service:

    ExecStart=/usr/local/bin/push-server-multi systemd_start

  7. Update access permissions for directory with logs:

    chown wwwrun:www /opt/node_modules/push-server/logs /tmp/push-server -RH
  8. Reconfigure:
    systemctl daemon-reload
  9. Start the service:
    systemctl --now enable push-server
  10. Go to push module config (site settings) and enable local push server (latest version). Additionally, indicate SECURITY_KEY parameter, configured previously above in the file /etc/sysconfig/push-server-multi.

Courses developed by Bitrix24