Ghid Testare, Securizare și Utilizare RabbitMQ pe VPS
Acest ghid descrie modul în care verifici, activezi interfața de administrare Web (Management Plugin), securizezi și conectezi serviciul de mesagerie RabbitMQ (deja instalat pe VPS-ul 63.250.40.142) la aplicațiile tale (Java, Python, Node.js).
1. Verificarea Statusului RabbitMQ pe VPS
- Conectează-te la VPS prin SSH:
ssh root@63.250.40.142 - Verifică starea serviciului RabbitMQ:
systemctl status rabbitmq-server(Trebuie să vezi statusul
active (running)). - Verifică nodul RabbitMQ cu utilitarul dedicat de administrare:
rabbitmqctl status
2. Activarea Interfeței Web de Administrare (RabbitMQ Management Dashboard)
RabbitMQ vine cu o interfață grafică excelentă (Dashboard) pentru monitorizat cozi (Queues), mesaje și conexiuni, însă trebuie activată manual.
- Activează plugin-ul de management:
rabbitmq-plugins enable rabbitmq_management - Creează un utilizator administrator dedicat (utilizatorul implicit
guestse poate conecta doar de pelocalhost):# Creează utilizatorul 'admin' cu parolă securizată rabbitmqctl add_user admin ParolaTaSecurizataMQ123! # Oferă-i rolul de administrator rabbitmqctl set_user_tags admin administrator # Acordă-i permisiuni complete pe vhost-ul implicit "/" rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" - Asigură-te că portul pentru interfața web (
15672) și portul de mesagerie AMQP (5672) sunt deschise în Firewall:ufw allow 15672/tcp ufw allow 5672/tcp
3. Expunerea Dashboard-ului prin Caddy Reverse Proxy
Pentru a accesa interfața grafică în siguranță prin HTTPS pe un subdomeniu dedicat (rabbitmq.bytebook.xyz):
- Configurare Namecheap: Adaugă o înregistrare de tip A Record (Host:
rabbitmq, Value:63.250.40.142). - Editează fișierul
Caddyfilepe VPS:nano /etc/caddy/Caddyfile - Adaugă blocul de configurare:
rabbitmq.bytebook.xyz { reverse_proxy localhost:15672 } - Reîncarcă Caddy:
systemctl reload caddy - Deschide browserul și accesează: https://rabbitmq.bytebook.xyz
(Autentifică-te cu utilizatoruladminși parola creată la Pasul 2).
4. Conectarea RabbitMQ la Aplicațiile Tale
A. Java Spring Boot (application.properties)
Adaugă dependența spring-boot-starter-amqp în pom.xml, apoi adaugă în configurare:
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=ParolaTaSecurizataMQ123!
B. Python FastAPI / Script (pika)
Instalează biblioteca pika (pip install pika), apoi folosește următorul model de conectare:
import pika
# Configurare conexiune
credentials = pika.PlainCredentials('admin', 'ParolaTaSecurizataMQ123!')
parameters = pika.ConnectionParameters('localhost', 5672, '/', credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
# Declară o coadă
channel.queue_declare(queue='coada_test')
# Trimite un mesaj (Producer)
channel.basic_publish(exchange='', routing_key='coada_test', body='Hello din Python!')
print(" [x] Mesaj trimis cu succes!")
connection.close()
C. Node.js Express (amqplib)
Instalează pachetul amqplib (npm install amqplib), apoi conectează-te în app.js:
const amqp = require('amqplib');
async function sendData() {
try {
const connection = await amqp.connect('amqp://admin:ParolaTaSecurizataMQ123!@localhost:5672');
const channel = await connection.createChannel();
const queue = 'coada_node';
await channel.assertQueue(queue, { durable: true });
channel.sendToQueue(queue, Buffer.from('Hello din Node.js!'));
console.log(" [x] Mesaj trimis către coadă!");
setTimeout(() => {
connection.close();
}, 500);
} catch (error) {
console.error(error);
}
}
sendData();
5. Comenzi Utile de Administrare și Monitorizare în CLI
rabbitmqctl list_queues
rabbitmqctl list_connections
rabbitmqctl list_users
rabbitmqctl delete_queue nume_coada