Установка RubbitMQ

Материал из Wiki МИАЦ ВО
Версия от 08:47, 20 ноября 2019; Misha (обсуждение | вклад) (Установка web интерфейса)
Перейти к навигации Перейти к поиску

Полезные ссылки

  1. RabbitMQ - Урок 1. Hello world!
  2. RabbitMQ - Урок 2. Распределенные очереди
  3. RabbitMQ - Урок 3. Рассылка публикаций
  4. RabbitMQ - Урок 4. Селективная рассылка
  5. RabbitMQ - Урок 5. Рассылка по шаблону
  6. RabbitMQ - Урок 6. Реализация RPC шаблона
  7. RabbitMQ для начинающих

Установка сервера

$sudo apt install rabbitmq-server

Установка web интерфейса

Взято тут
По умолчанию, веб-интерфейс отключен, но его можно включить командой на *nix системах:

$sudo rabbitmq-plugins enable rabbitmq_management
$sudo service rabbitmq-server restart

После чего необходимо перезапустить RabbitMQ и войти через браузер на http://localhost:15672. По умолчанию, логин и пароль для входа в RabbitMQ Managment Plugin: guest/guest

С версии 3.3 было введено ограничение на доступ по guest/guest с хоста отличного от localhost. Но вы можете создать пользователя test c паролем passwd и зайти под ним с любого хоста:

rabbitmqctl add_user test passwd
rabbitmqctl set_user_tags test administrator 
rabbitmqctl set_permissions -p / test ".*" ".*" ".*"

Сброс всех очередей в rabbitmq

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

Команды управления пользователями

rabbitmqctl(1) manual page
По умолчанию RabbitMQ используется пользователь guest и пароль guest

Поменять пароль пользователя

Например, можно просто поменять пароль пользователю guest

abbitmqctl change_password guest newpassword

Удаление пользователя

Удаляем пользователя guest

rabbitmqctl delete_user guest

Добавление нового пользователя

Для добавление нового пользователя, например rabbit и пароль password

rabbitmqctl add_user rabbit password

Сбросить пароль пользователя

Сбросим пароль пользователю guest

rabbitmqctl clear_password guest

Команда аутентификации

rabbitmqctl authenticate_user user paswduser

Эта команда инструктирует брокера RabbitMQ аутентифицировать пользователя с именем user с помощью проверки пароля.

Просмотреть всех пользователей

rabbitmqctl list_users

Контроль доступа

Разрешения для пользователя

rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}

Где:
vhost - Имя виртуального хоста, которому предоставляется пользовательский доступ, по умолчанию - /.
user - Имя пользователя для предоставления доступа к указанному виртуальному хосту.
conf - Регулярное выражение, соответствующее именам ресурсов, для которых пользователю предоставляются разрешения на настройку.
write - Регулярное выражение, соответствующее именам ресурсов, для которых пользователю предоставляются права на запись.
read - Регулярное выражение, соответствующее именам ресурсов, для которых пользователю предоставляются разрешения на чтение.
Например, для пользователя user всем хостам дать все разрешения

rabbitmqctl set_permissions -p / user "/*" ".*" ".*

Или

rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"

Эта команда инструктирует брокера RabbitMQ предоставить пользователю с именем tonyg доступ к виртуальному хосту с именем /myvhost, с разрешениями конфигурации для всех ресурсов, чьи имена начинаются с «tonyg-», а также разрешения на запись и чтение для всех ресурсов.

Удалить разрешения для пользователя

rabbitmqctl clear_permissions [-p vhost] {username}

vhost - Он имя виртуального хоста, которому запрещается доступ пользователя, по умолчанию - /.
username - Имя пользователя для отказа в доступе к указанному виртуальному хосту.

rabbitmqctl clear_permissions -p /myvhost tonyg

Эта команда инструктирует брокера RabbitMQ запретить пользователю с именем tonyg доступ к виртуальному хосту с именем /myvhost.

Просмотр разрешений для хоста

list_permissions [-p vhost]

vhost - Имя виртуального хоста, для которого можно указать пользователей, которым был предоставлен доступ к нему, и их разрешения. По умолчанию /.

Просмотр разрешений для пользователя.

rabbitmqctl list_user_permissions {username}

Установка PHP библиотели AMQP

$sudo apt install librabbitmq-dev
$sudo pecl install AMQP

Если будет ругаться, что библиотека librabbitmq старая, то

$sudo apt purge librabbitmq-dev
$sudo apt install cmake

Идем на https://github.com/alanxz/rabbitmq-c и качаем последнюю версию библиотеки. распаковываем в ~

cd rabbitmq-c-master
mkdir build && cd build
cmake ..
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
sudo cmake --build . --target install
sudo pecl install AMQP

В папке /etc/php/7.0/mods-available создаем файл amqp.ini следующего содержания

; extention for rabbitmq lib
; priority = 20
extension=amqp.so

И делаем симлинки

sudo ln -s /etc/php/7.0/mods-available/amqp.ini /etc/php/7.0/apache2/conf.d/20-amqp.ini
sudo ln -s /etc/php/7.0/mods-available/amqp.ini /etc/php/7.0/cli/conf.d/20-amqp.ini

Перезапускаем apache

sudo service apache2 restart