Установка брокера сообщений RabbitMQ-server
Если узел с уже установленным RabbitMQ-server будет переименован, то брокер сообщений перестанет принимать подключения. Для исправления ситуации необходимо удалить RabbitMQ-server, затем выполнить его переустановку.
Для установки RabbitMQ-server нужно перейти в интерфейс командной строки через программу «Терминал Fly» и выполнить команду:
:~$ sudo apt install -y rabbitmq-server
где:
-y - ключ для пропуска подтверждения установки.
Настройка брокера сообщений RabbitMQ-server
Для настройки RabbitMQ-server следует:
- перейти в интерфейс командной строки через программу «Терминал Fly» и убедиться в наличии каталога
/etc/rabbitmq:
:~$ ls /etc/
- если каталог отсутствует, необходимо создать его:
:~$ sudo mkdir -p /etc/rabbitmq
где:
- p - ключ для автоматического создания директорий, указанных внутри пути;
- перейти в каталог
/etc/rabbitmq:
:~$ cd /etc/rabbitmq
- создать пустые файлы
rabbitmq.conf(основной файл конфигурации RabbitMQ-server) иdefinitions.json(файл определения данных для подключения):
:~$ sudo touch rabbitmq.conf :~$ sudo touch definitions.json
- поменять владельца (
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 Port 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 # 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.
Имя пользователя и пароль должны задаваться в соответствии с внутренними стандартами организации по применению парольной защиты.
- выполнить команду инициализации RabbitMQ-server:
:~$ 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