Установка RubbitMQ: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Сброс всех очередей в rabbitmq)
(Сброс всех очередей в rabbitmq)
 
(не показано 7 промежуточных версий этого же участника)
Строка 11: Строка 11:
 
<pre>$sudo apt install rabbitmq-server</pre>
 
<pre>$sudo apt install rabbitmq-server</pre>
 
==Установка web интерфейса==
 
==Установка web интерфейса==
 +
Взято [https://ru.stackoverflow.com/questions/551840/%D0%9A%D0%B0%D0%BA-%D0%B7%D0%B0%D0%B9%D1%82%D0%B8-%D0%BD%D0%B0-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%83-rabbitmq тут]<br>
 +
По умолчанию, веб-интерфейс отключен, но его можно включить командой на *nix системах:
 
<pre>$sudo rabbitmq-plugins enable rabbitmq_management
 
<pre>$sudo rabbitmq-plugins enable rabbitmq_management
 
$sudo service rabbitmq-server restart</pre>
 
$sudo service rabbitmq-server restart</pre>
И подключаемся через браузер с URL http://<ip-host>:15672<br>
+
После чего необходимо перезапустить RabbitMQ и войти через браузер на http://localhost:15672. По умолчанию, логин и пароль для входа в RabbitMQ Managment Plugin: guest/guest
login: guest
+
 
password: guest
+
С версии 3.3 было введено ограничение на доступ по guest/guest с хоста отличного от localhost. Но вы можете создать пользователя test c паролем passwd и зайти под ним с любого хоста:
 +
<pre>rabbitmqctl add_user test passwd
 +
rabbitmqctl set_user_tags test administrator
 +
rabbitmqctl set_permissions -p / test ".*" ".*" ".*"
 +
</pre>
 +
 
 
==Сброс всех очередей в rabbitmq==
 
==Сброс всех очередей в rabbitmq==
<pre>rabbitmqctl stop_app
+
Устанавливаем команду rabbitmqadmin
rabbitmqctl reset
+
<pre>
rabbitmqctl start_app
+
wget  https://raw.githubusercontent.com/rabbitmq/rabbitmq-server/master/deps/rabbitmq_management/bin/rabbitmqadmin -P /tmp
 +
chmod +x /tmp/rabbitmqadmin
 +
sudo mv /tmp/rabbitmqadmin /usr/bin/
 +
</pre>
 +
Команда по удалению всех очередей del_all_querys.sh <br>
 +
Взято [https://askdev.ru/q/udalit-vse-ocheredi-iz-rabbitmq-11706/ тут]
 +
<pre>
 +
rabbitmqadmin -f tsv -q list queues name | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
 
</pre>
 
</pre>
 +
 
==Команды управления пользователями==
 
==Команды управления пользователями==
===Назначение нового пользователя===
 
 
[https://www.rabbitmq.com/man/rabbitmqctl.1.man.html rabbitmqctl(1) manual page]<br>
 
[https://www.rabbitmq.com/man/rabbitmqctl.1.man.html rabbitmqctl(1) manual page]<br>
 
По умолчанию RabbitMQ используется пользователь guest и пароль guest<br>
 
По умолчанию RabbitMQ используется пользователь guest и пароль guest<br>
Строка 42: Строка 56:
 
===Просмотреть всех пользователей===
 
===Просмотреть всех пользователей===
 
<pre>rabbitmqctl list_users</pre>
 
<pre>rabbitmqctl list_users</pre>
 +
 +
==Контроль доступа==
 +
===Разрешения для пользователя===
 +
<pre>rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}</pre>
 +
Где:<br>
 +
vhost - Имя виртуального хоста, которому предоставляется пользовательский доступ, по умолчанию - /.<br>
 +
user  - Имя пользователя для предоставления доступа к указанному виртуальному хосту.<br>
 +
conf - Регулярное выражение, соответствующее именам ресурсов, для которых пользователю предоставляются разрешения на настройку.<br>
 +
write - Регулярное выражение, соответствующее именам ресурсов, для которых пользователю предоставляются права на запись.<br>
 +
read - Регулярное выражение, соответствующее именам ресурсов, для которых пользователю предоставляются разрешения на чтение.<br>
 +
Например, для пользователя user всем хостам дать все разрешения
 +
<pre>rabbitmqctl set_permissions -p / user "/*" ".*" ".*</pre>
 +
Или
 +
<pre>rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"</pre>
 +
Эта команда инструктирует брокера RabbitMQ предоставить пользователю с именем tonyg доступ к виртуальному хосту с именем /myvhost, с разрешениями конфигурации для всех ресурсов, чьи имена начинаются с «tonyg-», а также разрешения на запись и чтение для всех ресурсов.
 +
===Удалить разрешения для пользователя===
 +
<pre>rabbitmqctl clear_permissions [-p vhost] {username}</pre>
 +
vhost - Он имя виртуального хоста, которому запрещается доступ пользователя, по умолчанию - /.<br>
 +
username - Имя пользователя для отказа в доступе к указанному виртуальному хосту.
 +
<pre>rabbitmqctl clear_permissions -p /myvhost tonyg</pre>
 +
Эта команда инструктирует брокера RabbitMQ запретить пользователю с именем tonyg доступ к виртуальному хосту с именем /myvhost.
 +
===Просмотр разрешений для хоста===
 +
<pre>list_permissions [-p vhost]</pre>
 +
vhost - Имя виртуального хоста, для которого можно указать пользователей, которым был предоставлен доступ к нему, и их разрешения. По умолчанию /.
 +
===Просмотр разрешений для пользователя.===
 +
<pre>rabbitmqctl list_user_permissions {username}</pre>
  
 
==Установка PHP библиотели AMQP==
 
==Установка PHP библиотели AMQP==

Текущая версия на 08:49, 31 октября 2023

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

  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

Устанавливаем команду rabbitmqadmin

wget  https://raw.githubusercontent.com/rabbitmq/rabbitmq-server/master/deps/rabbitmq_management/bin/rabbitmqadmin -P /tmp
chmod +x /tmp/rabbitmqadmin
sudo mv /tmp/rabbitmqadmin /usr/bin/

Команда по удалению всех очередей del_all_querys.sh
Взято тут

rabbitmqadmin -f tsv -q list queues name | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done

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

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