Установка и настройка RabbitMQ
Установка брокера сообщений RabbitMQ
Если узел с уже установленным RabbitMQ будет переименован, то брокер сообщений перестанет принимать подключения. Для исправления ситуации необходимо удалить RabbitMQ, затем выполнить его переустановку.
Для установки RabbitMQ нужно перейти в интерфейс командной строки через программу «Терминал Fly» и выполнить:
sudo apt install -y rabbitmq-server
где:
-y
- ключ для пропуска подтверждения установки.
Настройка брокера сообщений RabbitMQ
Для настройки RabbitMQ следует:
- перейти в интерфейс командной строки через программу «Терминал Fly» и убедиться в наличии каталога
/etc/rabbitmq
:
ls /etc/
- если каталог отсутствует, необходимо создать его:
sudo mkdir -p /etc/rabbitmq
где:
- p
- ключ для автоматического создания директорий, указанных внутри пути;
- перейти в каталог
/etc/rabbitmq
:
cd /etc/rabbitmq
- создать пустые файлы
rabbitmq.conf
(основной файл конфигурации RabbitMQ) иdefinitions.json
(файл определения данных для подключения):
sudo touch rabbitmq.conf sudo touch definitions.json
Файл definitions.json
можно скопировать из iso
-образа Termidesk.
- поменять владельца (
rabbitmq
) и идентификатор группы (rabbitmq
) для созданных файлов:
sudo chown rabbitmq:rabbitmq definitions.json rabbitmq.conf
- отредактировать файл
rabbitmq.conf
, приведя его к виду:
# ======================================= Management section ======================================= ## Preload schema definitions from the following JSON file. ## Related doc guide: https://rabbitmq.com/management.html#load-definitions. ## # management.load_definitions = /path/to/exported/definitions.json management.load_definitions = /etc/rabbitmq/definitions.json
Если необходимо, чтобы RabbitMQ работал через TLS-соединение, то файл rabbitmq.conf
нужно привести к виду:
# ======================================= Management section ======================================= ## Preload schema definitions from the following JSON file. ## Related doc guide: https://rabbitmq.com/management.html#load-definitions. ## # management.load_definitions = /path/to/exported/definitions.json management.load_definitions = /etc/rabbitmq/definitions.json listeners.tcp.default = 5672 # TLS Порт listeners.ssl.default = 5671 # Пути к сертификатам ssl_options.cacertfile = /var/ssl/root-ca.crt ssl_options.certfile = /var/ssl/cert.crt ssl_options.keyfile = /var/ssl/private/private-key.key # Пароль для ключа #ssl_options.password = # Should peer verification be enabled? ssl_options.verify = verify_peer # When set to true, TLS connection will be rejected if client fails to provide a certificate ssl_options.fail_if_no_peer_cert = false ssl_options.versions.default = tlsv1.2
Предполагается, что файлы корневого сертификата (/var/ssl/root-ca.crt
), сертификата узла (/var/ssl/cert.crt
) и закрытого ключа (/var/ssl/private/private-key.key
) к нему уже существуют и доступны по указанному пути.
- отредактировать файл
definitions.json
, задав пользователейtermidesk
иadmin
, приведя его к виду:
В файле /etc/rabbitmq/definitions.json
пароли указываются в виде преобразованного значения, которое можно получить через исполняемый файл rabbitmq_password2hash.sh
. Процесс преобразования пароля будет приведен далее.
{ "rabbit_version": "3.7.8", "users": [ { "name": "termidesk", "password_hash": "pnXiDJtUdk7ZceL9iOqx44PeDgRa+X1+eIq+7wf/PTONLb1h", "hashing_algorithm": "rabbit_password_hashing_sha256", "tags": "" }, { "name": "admin", "password_hash": "FXQ9WFNSrsGwRki9BT2dCITnsDwYu2lsy7BEN7+UncsPzCDZ", "hashing_algorithm": "rabbit_password_hashing_sha256", "tags": "administrator" } ], "vhosts": [ { "name": "/" }, { "name": "termidesk" } ], "permissions": [ { "user": "termidesk", "vhost": "termidesk", "configure": ".*", "write": ".*", "read": ".*" }, { "user": "admin", "vhost": "termidesk", "configure": ".*", "write": ".*", "read": ".*" } ], "topic_permissions": [ { "user": "termidesk", "vhost": "termidesk", "exchange": "", "write": ".*", "read": ".*" } ], "parameters": [], "global_parameters": [ { "name": "cluster_name", "value": "rabbit@rabbitmq" } ], "policies": [], "queues": [], "exchanges": [], "bindings": [] }
В примере используются следующие пары логин-пароль: admin:admin
, termidesk:ksedimret
.
Имя пользователя и пароль должны задаваться в соответствии с внутренними стандартами организации по применению парольной защиты. Для задания пароля разрешено использовать только латинские буквы A-Z, a-z, цифры 0-9 и символы !$%^&_-=+~`.,()*{}[]\|.
- выполнить команду инициализации RabbitMQ:
sudo rabbitmq-plugins enable rabbitmq_management
- перезапустить службу
rabbitmq-server
:
sudo systemctl restart rabbitmq-server
Чтобы получить преобразованное значение пароля, нужно воспользоваться исполняемым файлом rabbitmq_password2hash.sh
, расположенным в подключенном репозитории Termidesk (см. Получение пакетов установки в ОС Astra Linux Special Edition) по пути /var/repos/Addons/Scripts/
. Для этого:
- перейти в каталог
/var/repos/Addons/Scripts/
:
cd /var/repos/Addons/Scripts/
- задать файлу
rabbitmq_password2hash.sh
флаг для запуска:
sudo chmod +x rabbitmq_password2hash.sh
где:
+x
- ключ установки разрешения на запуск файла для всех пользователей;
- выполнить исполняемый файл:
sudo ./rabbitmq_password2hash.sh
При выполнении исполняемого файла будет предложено ввести пароль и повторить его. Преобразованное значение введенного пароля отображается в интерфейсе командной строки.
Необходимо внести полученное значение при формировании файла /etc/rabbitmq/definitions.json
(секция password_hash
).
Если конфигурационный файл /etc/rabbitmq/definitions.json
уже существует, но требуется изменить в нем значение преобразованного пароля, нужно:
- выполнить преобразование и добавление пароля в файл
/etc/rabbitmq/definitions.json
:
sudo ./rabbitmq_password2hash.sh -w -u <user> -p <пароль>
где:
-w
- ключ для сохранения изменений в файл /etc/rabbitmq/definitions.json
;
-u
- пользователь RabbitMQ. В стандартной установке можно указывать admin
;
-p
- пароль;
- перезапустить службу
rabbitmq-server
:
sudo systemctl restart rabbitmq-server