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/
Una volta autenticato vedrai la dashboard amministrativa:
Nel tab Admin trovi utenti, virtual host e politiche. Per motivi di sicurezza elimina l’utente Guest se non serve.
Nel tab Queues trovi le code attive; puoi crearne o eliminarne direttamente dall’interfaccia.
Nel tab Connections trovi le connessioni correnti:
Troverai canali e exchange nei rispettivi tab:
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
- Preparare immagine base con CentOS 7 e configurazioni di rete.
- Automatizzare installazione di EPEL, Erlang e RabbitMQ tramite script o Ansible.
- Applicare configurazioni di firewall e SELinux tramite playbook.
- Abilitare plugin e creare utenti/permessi via script di provisioning.
- 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.
Materiali simili

Ridurre le animazioni in iOS 26

Attivare Emergency Bypass su iPhone iOS 17

WOTS disabilitato: come risolvere l'errore

Come cancellare Netflix su qualsiasi dispositivo

Errore su Twitter (X): 'Something went wrong' risolto
