Najprostszą metodą instalacji serwera RabbitMQ jest wybranie go w Menadżerze Pakietów systemu Linuksowego, w konsolowych apt-get, czy aptitude lub w okienkowym Synaptic Manager.
Domyślnie z Ubuntu 18.04 jest dostarczany RabbitMQ w wersji 3.6.10 oraz
Wcześniej jednak potrzebujemy zainstalować odpowiednią wersję pakietu Erlang.
Ze strony Erlang Solutions pobieramy odpowiednią wersję pakietu esl-erlang w wersji dla Ubuntu 18.04 (Bionic Beaver). W momencie pisania tego tutoriala najnowsza wersja tego pakietu miała oznaczenie 20.3
Po ściągnięciu jej do katalogu roboczego uruchamiamy instalację:
$ sudo dpkg -i esl-erlang_20.3-1~ubuntu~bionic_amd64.deb
Selecting previously unselected package esl-erlang.
(Reading database ... 62653 files and directories currently installed.)
Preparing to unpack esl-erlang_20.3-1~ubuntu~bionic_amd64.deb ...
Unpacking esl-erlang (1:20.3) ...
dpkg: dependency problems prevent configuration of esl-erlang:
[...]
Program dpkg nie jest w wstanie rozwiązać zależności pakietu esl-erlang, dlatego posłużymy się w tym celu programem apt w następujący sposób:
$ sudo apt-get install -f
W trakcie wykonywania tego polecenia zostaniemy poproszeni o zgodę na doinstalowanie dodatkowych pakietów na co się oczywiście zgadzamy poprzez wpisanie Y.
[...]
0 upgraded, 102 newly installed, 0 to remove and 50 not upgraded.
2 not fully installed or removed.
Need to get 64.3 MB of archives.
After this operation, 320 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Po pomyślnej instalacji przechodzimy do kolejnego kroku.
Aby zautomatyzować proces aktualizacji serwera RabbitMQ w przyszłości, dodamy zawierające go repozytorium do katalogu /etc/apt/sources.list.d, w którym znajdują się listy repozytoriów przetwarzanych przez program apt.
W tym celu wykonujemy następujące polecenie:
$ echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list
Kolejnym krokiem jest pobranie klucza publicznego dla powyższego repozytorium:
$ wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -
a następnie odświeżenie listy z pakietami i zainstalowanie pakietu rabbitmq-server w tradycyjny dla Debiana sposób:
$ sudo apt-get update
$ sudo apt-get install rabbitmq-server
Status serwera RabbitMQ sprawdzamy jednym z poleceń:
$ sudo service rabbitmq-server start
W rezultacie powinniśmy zobaczyć podobną odpowiedź:
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-03-20 12:10:59 UTC; 15s ago
Main PID: 7146 (beam.smp)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
├─7146 /usr/lib/erlang/erts-9.3/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 1280000 -K true -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq
├─7223 /usr/lib/erlang/erts-9.3/bin/epmd -daemon
├─7366 erl_child_setup 1024
├─7390 inet_gethost 4
└─7391 inet_gethost 4
Mar 20 12:10:57 webs rabbitmq-server[7146]: ## ##
Mar 20 12:10:57 webs rabbitmq-server[7146]: ## ## RabbitMQ 3.7.4. Copyright (C) 2007-2018 Pivotal Software, Inc.
Mar 20 12:10:57 webs rabbitmq-server[7146]: ########## Licensed under the MPL. See http://www.rabbitmq.com/
Mar 20 12:10:57 webs rabbitmq-server[7146]: ###### ##
Mar 20 12:10:57 webs rabbitmq-server[7146]: ########## Logs: /var/log/rabbitmq/rabbit@webs.log
Mar 20 12:10:57 webs rabbitmq-server[7146]: /var/log/rabbitmq/rabbit@webs_upgrade.log
Mar 20 12:10:57 webs rabbitmq-server[7146]: Starting broker...
Mar 20 12:10:59 webs rabbitmq-server[7146]: systemd unit for activation check: "rabbitmq-server.service"
Mar 20 12:10:59 webs systemd[1]: Started RabbitMQ broker.
Mar 20 12:11:00 webs rabbitmq-server[7146]: completed with 0 plugins.
Po zainstalowaniu serwera kuriera komunikatów (działającego na porcie 5672) potrzebujemy jeszcze doinstalować prosty panel administracyjny stworzony również przez twórców tego systemu już w formie pluginu. W tym celu należy wykonać polecenie:
$ sudo rabbitmq-plugins enable rabbitmq_management
Aby sprawdzić, czy panel administracyjny został zainstalowany poprawnie (a zarazem i sam serwer pośrednika komunikatów), wystarczy wpisać w przeglądarce: http://localhost:15672/
Domyślny login i hasło to guest.
Konto gościa jest dostarczane na początek przygody z systemem RabbitMQ, jednak posiada ono pewne ograniczenia: nie możemy z niego korzystać z innego adresu niż localhost, a więc nie dostaniemy się przez to konto do zdalnego serwera, na którym został zainstalowany nasz kurier komunikatów.
W ogromnej ilości przypadków nadawca komunikatów, pośrednik komunikatów oraz odbiorca komunikatów będą znajdować się właśnie na osobnych serwerach.
Ze względu na to, że z użytkownika guest można korzystać z poziomu tej samej maszyny (localhost) potrzebujemy stworzyć nowe konto administracyjne.
Najpierw tworzymy użytkownika o nazwie root:
$ sudo rabbitmqctl add_user root tajne-haslo
następnie przypisujemy mu rolę administratora:
$ sudo rabbitmqctl set_user_tags root administrator
a na końcu ustawiamy vhost i inne uprawnienia:
$ sudo rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
Po tym wszystkim logujemy się nowo utworzonym kontem do panelu administracyjnego RabbitMQ.
Do tego panelu zaglądać będziemy nie raz w ramach naszej pracy z tym pośrednikiem/kurierem komunikatów.
Web Developer z ponad 8-letnim, komercyjnym doświadczeniem w tworzeniu stron i aplikacji internetowych oraz paneli administracyjnych w PHP, JavaScript, HTML i CSS.
Aktualnie zainteresowany architekturą mikroserwisów, które umożliwiają budowanie skalowalnych aplikacji internetowych.