﻿# RabbitMQ

> [HTML Version](rabbitmq.html)

В статье описана установка RabbitMQ для ОС Ubuntu Linux 20.04. Вы также можете ознакомиться с кратким руководством в [официальной документации](https://www.rabbitmq.com/install-debian.html).

Рекомендуется устанавливать RabbitMQ в той же среде Kubernetes, что и приложение ELMA365. Подробнее о вариантах организации инфраструктуры читайте в статьях [«ELMA365 On-Premises Standard»](elma365-on-premises-standard.md) и [«ELMA365 On-Premises Enterprise»](elma365-enterprise.md).

Установка RabbitMQ версии 4.0 не поддерживается в текущей версии ELMA365. Проверьте допустимые версии RabbitMQ в статье [«Системные требования ELMA365 On-Premises»](elma365-enterprise-on-premises.md#rabbit).

````
начало внимание

````
Для примера в статье используется имя виртуального хоста **elma365vhost**, пользователь **elma365user** и пароль **SecretPassword**. При настройке задайте эти данные согласно политике безопасности, принятой в вашей организации.

````
конец внимание

````
Установка состоит из трёх этапов:

1. [Установка RabbitMQ](#1rabbitmq).

2. [Настройка RabbitMQ](#2rabbitmq).

3. [Подключение к RabbitMQ](#3rabbitmq).

## Шаг 1. Установка RabbitMQ

1. Установите необходимые пакеты:

````
sudo apt-get install curl gnupg apt-transport-https -y

2. ````
Импортируйте все необходимые ключи:

````
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null  
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null  
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null

````
Актуальные ключи для разных версий RabbitMQ перечислены в [официальной документации RabbitMQ](https://www.rabbitmq.com/docs/install-debian#cloudsmith-signing-keys). 

3. Добавьте репозитории RabbitMQ:

````
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF  
deb \[signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg\] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu \$(lsb\_release -cs) main  
deb-src \[signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg\] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu \$(lsb\_release -cs) main  
  
deb \[signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg\] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu \$(lsb\_release -cs) main  
deb-src \[signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg\] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu \$(lsb\_release -cs) main  
EOF

4. ````
Обновите кеш пакетов:

````
sudo apt-get update -y

5. ````
Установите пакеты **Erlang**:

````
sudo apt-get install -y erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssl erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

6. ````
Установите **rabbitmq-server** и его зависимости:

````
sudo apt-get install rabbitmq-server -y --fix-missing

7. ````
Запустите **rabbitmq-server**:

````
sudo systemctl enable --now rabbitmq-server

## ````
Шаг 2. Настройка RabbitMQ

````
Начало примечание

````
**Примечание**

Для пароля разрешается применять следующие символы: 

- Заглавные латинские буквы: от A до Z;

- Строчные латинские буквы: от a до z; 

- Цифры от 0 до 9; 

- Символы: -\_.

Зарезервированные (недопустимые) символы:

\! \* ' ( ) ; : @ \& = + \$ , / ? % # \[ \]

````
Конец примечание

````
Для настройки RabbitMQ нужно выполнить следующие действия:

1. Включите необходимые плагины:

````
sudo rabbitmq-plugins enable \\  
rabbitmq\_management

2. ````
Обязательно добавьте **vhost** и предоставьте пользователю доступ к нему:

````
sudo rabbitmqctl add\_vhost elma365vhost  
sudo rabbitmqctl add\_user elma365user SecretPassword  
sudo rabbitmqctl set\_permissions -p elma365vhost elma365user ".\*" ".\*" ".\*"  
sudo rabbitmqctl set\_user\_tags elma365user administrator

````
Настройка включения TLS в RabbitMQ

  
Для включения поддержки TLS в RabbitMQ необходимо в файл конфигурации **/etc/rabbitmq/rabbitmq.conf**:

1. Добавить конфигурацию TLS в блоки** rabbit** (port 5671) и **management** (port 15671).

2. В параметрах **ssl\_options.certfile **и** management.ssl.certfile** указать путь до файла сертификата сервера.

3. В параметрах **ssl\_options.keyfile **и** management.ssl.keyfile** указать путь до файла закрытого ключа.

4. В параметрах **ssl\_options.cacertfile **и** management.ssl.cacertfile** указать путь до файла корневого CA:

````
listeners.tcp = none  
listeners.ssl.default = 5671  
ssl\_options.cacertfile = /path/to/ca\_certificate.pem  
ssl\_options.certfile = /path/to/server\_certificate.pem  
ssl\_options.keyfile = /path/to/server\_key.pem  
ssl\_options.verify = verify\_peer  
ssl\_options.fail\_if\_no\_peer\_cert = true  
  
management.ssl.port = 15671  
management.ssl.cacertfile = /path/to/ca\_certificate.pem  
management.ssl.certfile = /path/to/server\_certificate.pem  
management.ssl.keyfile = /path/to/server\_key.pem

5. ````
Перезапустить сервис RabbitMQ:

````
sudo systemctl restart rabbitmq-server

````
  
Подробнее о настройке TLS в RabbitMQ читайте в статье [«RabbitMQ TLS Support»](https://www.rabbitmq.com/ssl.html).

## Шаг 3. Подключение к RabbitMQ

Строка для подключения к RabbitMQ:

````
amqp://elma365user:SecretPassword@<rabbitmq-server-address>:5672/elma365vhost

````
Строка для подключения к RabbitMQ c TLS:

````
amqps://elma365user:SecretPassword@<rabbitmq-server-address>:5671/elma365vhost
````