Download PDF
Download page Установка и настройка RabbitMQ.
Установка и настройка RabbitMQ
Установка брокера сообщений 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