Guida alle tecnologie

Installare RabbitMQ su CentOS 7

5 min read DevOps Aggiornato 20 Oct 2025
Installare RabbitMQ su CentOS 7
Installare RabbitMQ su CentOS 7

Panoramica veloce

RabbitMQ è un broker di messaggi open source scritto in Erlang che implementa AMQP. Fornisce librerie client per i principali linguaggi, supporta più protocolli di messaggistica, code, acknowledgement delle consegne, routing flessibile e vari tipi di exchange. Offre anche API HTTP, strumenti da riga di comando e una console web per la gestione.

Requisiti

  • Server CentOS 7 minimo
  • Privilegi root (questa guida assume root; se usi sudo, esegui sudo -i)
  • Connettività internet per scaricare pacchetti

Aggiornare il sistema base

Prima di installare qualsiasi pacchetto è consigliabile aggiornare i repository e i pacchetti:

yum -y update

Dopo l’aggiornamento procedere con l’installazione di Erlang.

Installare Erlang

RabbitMQ richiede Erlang. Poiché Erlang non è disponibile nei repository YUM predefiniti, abilita EPEL:

yum -y install epel-release
yum -y update

Installa Erlang e socat:

yum -y install erlang socat

Verifica la versione di Erlang:

erl -version

Esempio di output atteso:

[root@liptan-pc ~]# erl -version
Erlang (ASYNC_THREADS,HIPE) (BEAM) emulator version 5.10.4

Per entrare nella shell di Erlang:

erl

Esempio di prompt:

Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1>

Esci premendo Ctrl+C due volte. Erlang è ora pronto.

Installare RabbitMQ

Scarica il pacchetto RPM precompilato fornito da RabbitMQ (link di esempio alla versione usata originariamente):

wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm

Se non hai wget:

yum -y install wget

Importa la chiave GPG del repository:

rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

Installa il pacchetto RPM:

rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm

RabbitMQ sarà installato sul sistema.

Avviare RabbitMQ

Per avviare il servizio:

systemctl start rabbitmq-server

Per abilitare l’avvio automatico all’avvio del sistema:

systemctl enable rabbitmq-server

Per controllare lo stato:

systemctl status rabbitmq-server

Esempio di output quando il servizio è attivo (mostrato come riferimento):

? rabbitmq-server.service - RabbitMQ broker
   Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-07-15 18:59:14 UTC; 3min 22s ago
 Main PID: 29006 (beam.smp)
   Status: "Initialized"
   CGroup: /system.slice/rabbitmq-server.service
           ??29006 /usr/lib64/erlang/erts-9.0/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K tr...

Modificare firewall e SELinux

Se usi firewalld, apri le porte usate da RabbitMQ e dai suoi plugin (le porte principali):

firewall-cmd --zone=public --permanent --add-port=4369/tcp
firewall-cmd --zone=public --permanent --add-port=25672/tcp
firewall-cmd --zone=public --permanent --add-port=5671-5672/tcp
firewall-cmd --zone=public --permanent --add-port=15672/tcp
firewall-cmd --zone=public --permanent --add-port=61613-61614/tcp
firewall-cmd --zone=public --permanent --add-port=1883/tcp
firewall-cmd --zone=public --permanent --add-port=8883/tcp

Ricarica la configurazione del firewall:

firewall-cmd --reload

Se SELinux è attivato, consenti l’esecuzione richiesta dal servizio (comando consigliato):

setsebool -P nis_enabled 1

Nota importante: l’impostazione SELinux varia a seconda delle politiche aziendali; verifica con il tuo team di sicurezza.

Abilitare la console web di gestione

Abilita il plugin di management per la console web:

rabbitmq-plugins enable rabbitmq_management

Assicurati che i file di RabbitMQ siano di proprietà dell’utente rabbitmq:

chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/

Crea un utente amministratore per la console (sostituisci username e password con valori sicuri):

rabbitmqctl add_user admin StrongPassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

Accedi alla console da:

http://Your_Server_IP:15672/

Pagina di login della console di gestione RabbitMQ

Una volta autenticato vedrai la dashboard amministrativa:

Panoramica della dashboard amministrativa di RabbitMQ con code ed exchange visibili

Nel tab Admin trovi utenti, virtual host e politiche. Per motivi di sicurezza elimina l’utente Guest se non serve.

Elenco utenti RabbitMQ nell'interfaccia di amministrazione

Nel tab Queues trovi le code attive; puoi crearne o eliminarne direttamente dall’interfaccia.

Elenco code nella console di RabbitMQ

Nel tab Connections trovi le connessioni correnti:

Elenco connessioni attive in RabbitMQ

Troverai canali e exchange nei rispettivi tab:

Elenco exchange nella console di RabbitMQ

Suggerimenti di sicurezza

  • Non usare l’utente guest in produzione: cancellalo o limita l’accesso.
  • Usa TLS per connessioni esterne (porta 5671) e certificati gestiti dal tuo team di sicurezza.
  • Applica politiche di permessi minimi sui virtual host e sugli utenti.
  • Monitora le connessioni e le code con alert: code in crescita o consumer inattivi indicano problemi di backpressure.

Alternative di installazione e aggiornamento

  • Usare il repository ufficiale di RabbitMQ per aggiornamenti automatici invece di scaricare RPM manualmente. Questo semplifica patch e upgrade.
  • Utilizzare container (Docker) o immagini predefinite se preferisci ambienti immutabili e orchestrazione.
  • Per ambienti enterprise considerare l’uso di cluster RabbitMQ o soluzioni gestite (PaaS).

Modello mentale per l’uso di RabbitMQ

Pensa a RabbitMQ come a una posta interna: i producers inseriscono messaggi nelle exchange, le exchange instradano verso code e i consumers prelevano i messaggi. Le policy e i binding determinano chi vede cosa.

Checklist per ruolo

  • Amministratore di sistema:
    • Aggiornare il sistema e installare Erlang
    • Installare e avviare rabbitmq-server
    • Configurare firewall/SELinux
    • Abilitare plugin di management
  • SRE/DevOps:
    • Configurare monitoraggio e alert (latency, message rates, queue depth)
    • Automatizzare backup e restore delle definizioni (rabbitmqctl/export)
    • Pianificare aggiornamenti e test di failover
  • Sviluppatore:
    • Usare librerie client ufficiali
    • Implementare retry/backoff nei consumer
    • Non lasciare messaggi non ackati per periodi lunghi

Controlli di accettazione e test

  • Verificare che il servizio sia attivo: systemctl status rabbitmq-server deve risultare active (running).
  • Accedere alla console web su porta 15672 con l’utente amministratore creato.
  • Creare una coda di test, pubblicare un messaggio e consumarlo con un client di prova.
  • Simulare carico: assicurarsi che le code non crescano indefinitamente e che i consumer elaborino i messaggi.

Risoluzione problemi comuni

  • Servizio non parte: controlla journalctl -u rabbitmq-server per errori di avvio.
  • Porta 15672 non raggiungibile: verifica firewall-cmd –list-ports e SELinux.
  • Erlang non trovato o versione incompatibile: assicurati che la versione di Erlang sia compatibile con la versione di RabbitMQ installata.
  • Problemi con plugin: disabilita plugin non necessari con rabbitmq-plugins disable

Quando questa procedura non è adatta

  • Per cluster multi-nodo o configurazioni HA questa guida è insufficiente; serve una procedura di clustering con nodi e policy di mirrored queues.
  • In ambienti con requisiti di compliance elevati, segui le procedure di sicurezza e gestione certificati del tuo ente di sicurezza.

Mini-methodology per un deployment ripetibile

  1. Preparare immagine base con CentOS 7 e configurazioni di rete.
  2. Automatizzare installazione di EPEL, Erlang e RabbitMQ tramite script o Ansible.
  3. Applicare configurazioni di firewall e SELinux tramite playbook.
  4. Abilitare plugin e creare utenti/permessi via script di provisioning.
  5. Eseguire test funzionali automatici (pub/cons).

Conclusione

Ora RabbitMQ è installato e accessibile via web sulla porta 15672. Segui le checklist per ruoli, applica le best practice di sicurezza e considera metodi alternativi (repo ufficiale, container o cluster) per ambienti di produzione più complessi.

Importante: questa guida usa un esempio di RPM e comandi; verifica sempre le versioni correnti sul sito ufficiale RabbitMQ prima di eseguire in produzione.

Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/