TL;DR
- Scenario: Using RPM for RabbitMQ production deployment on RHEL systems (CentOS/RockyLinux), while using Docker Compose for quick learning.
- Conclusion: Key risks are Erlang/RabbitMQ version compatibility and package source consistency; followed by ports, plugins, user permissions and security baseline.
- Output: Deployable installation path, version matrix writing and high-frequency error quick reference for production deployment and troubleshooting.
RabbitMQ Installation
Service Installation (Production Recommended)
Environment Preparation
-
Operating System Environment:
- Supports CentOS 7/8, RockyLinux 8/9 and other RHEL-based distributions
- Using minimal installation recommended to reduce unnecessary software conflicts
-
Erlang Environment Requirements:
- RabbitMQ is a message middleware running on Erlang VM (BEAM)
- Must pre-install compatible version of Erlang runtime
- Recommended version not lower than Erlang 23.x
-
System Dependency Packages:
- socat: For inter-cluster communication
- logrotate: Log rotation management
- openssl: Secure communication support
- Other build toolchain (gcc, make, etc.)
socat Installation
yum install socat -y
Erlang Installation
Download Erlang RPM package:
https://github.com/rabbitmq/erlang-rpm/releases/download/v23.0.2/erlang-23.0.2-1.el7.x86_64.rpm
Upload file to server and execute installation:
rpm -ivh erlang-23.0.2-1.el7.x86_64.rpm
RabbitMQ Installation
Download RabbitMQ:
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.4/rabbitmq-server-3.8.4-1.el7.noarch.rpm
After uploading to server, install:
rpm -ivh rabbitmq-server-3.8.4-1.el7.noarch.rpm
Enable Plugins
rabbitmq-plugins enable rabbitmq_management
Several Ways to Start RabbitMQ Service
1. Using systemctl (Recommended for Production)
systemctl start rabbitmq-server
- This is the most standard startup method, applicable to Linux systems using systemd
- Automatically handles service dependencies and logging
2. Direct Executable (Suitable for Development)
rabbitmq-server
- Runs in foreground, convenient for viewing real-time logs
- Press Ctrl+C to stop service
- Typical use case: Quick startup during local development testing
3. Background Daemon Mode
rabbitmq-server -detached
- Adding
-detachedparameter runs service in background - Does not occupy current terminal
- Stopping service requires
rabbitmqctl stop
Other Related Commands
# Check service status
systemctl status rabbitmq-server
# Set开机自启
systemctl enable rabbitmq-server
# Stop service
systemctl stop rabbitmq-server
Add User
rabbitmqctl add_user root 123456
Add Permissions
rabbitmqctl set_permissions root -p / ".*" ".*" ".*"
Set User Tags (RabbitMQ User Permission Management)
rabbitmqctl set_user_tags root administrator
Detailed Explanation:
-
This command sets tags for RabbitMQ user, adding
administratortag to userroot -
Tag type explanation:
administrator: Admin permissions, has all operation permissionsmonitoring: Monitoring permissions, can view all information but cannot modifypolicymaker: Policy-making permissions, can manage virtual host policiesmanagement: Basic management permissions, can use management plugin
-
Related commands:
- View user tags:
rabbitmqctl list_users - Clear user tags:
rabbitmqctl clear_user_tags username
- View user tags:
Container Installation (Learning Recommended)
Docker Compose
Quickly start service via container:
services:
rabbitmq:
image: rabbitmq:3.8.4-management
container_name: rabbitmq-3.8
restart: unless-stopped
ports:
- "5672:5672" # AMQP
- "15672:15672" # Management interface
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: secret
volumes:
- rabbitmq_data:/var/lib/rabbitmq
volumes:
rabbitmq_data:
Start Service
docker compose up -d
Access Service
Access port 15672, fill in username and password from the file:
- Username: admin
- Password: secret
RabbitMQ Management Commands
Service Start and Stop
Foreground Start
rabbitmq-server
Background Start
rabbitmq-server -detached
Stop Service
rabbitmqctl stop
Application Management
Application Control
# Start application
rabbitmqctl start_app
# Stop application (without stopping Erlang VM)
rabbitmqctl stop_app
Node Status Check
rabbitmqctl status
Queue Management
View Queues
rabbitmqctl list_queues
Virtual Host Management
rabbitmqctl list_vhosts
Plugin Management
# List all available plugins
rabbitmq-plugins list
# Enable specified plugin
rabbitmq-plugins enable <plugin-name>
# Disable specified plugin
rabbitmq-plugins disable <plugin-name>
User Management
# Add new user
rabbitmqctl add_user username password
# List all users
rabbitmqctl list_users
# Delete user
rabbitmqctl delete_user username
# Clear permissions
rabbitmqctl clear_permissions -p vhostpath username
Advanced Usage Examples
View Queue Details
rabbitmqctl list_queues name messages messages_ready messages_unacknowledged
Create Virtual Host and Set Permissions
# Create vhost
rabbitmqctl add_vhost /my_vhost
# Set user permissions
rabbitmqctl set_permissions -p /my_vhost username ".*" ".*" ".*"
View Connection Information
rabbitmqctl list_connections
View Channel Information
rabbitmqctl list_channels
Error Quick Reference
| Symptom | Root Cause | Diagnosis | Fix |
|---|---|---|---|
rpm -ivh rabbitmq-server-...rpm reports missing dependencies | socat/openssl and other dependencies not installed or version mismatch | rpm -qpR package-name.rpm | Install dependencies first; unify repository source |
| RabbitMQ version number inconsistent | Documentation version number inconsistency causing misoperation | Compare download link with installed filename | Unify version number |
| Startup fails,提示 Erlang version incompatible | Erlang/OTP and RabbitMQ version range mismatch | erl -version; startup logs | Select Erlang version according to official compatibility matrix |
systemctl start rabbitmq-server fails | service unit/permission/data directory issue | systemctl status + journalctl -u rabbitmq-server | Fix based on logs |
rabbitmq-plugins enable fails | Node not running, plugin directory not writable | rabbitmqctl status | Ensure service started normally first |
| Access 15672 fails | Port not listening/firewall not opened/plugin not enabled | ss -lntp|grep 15672 | Check firewall and plugin status |
| Login to management console fails after adding user | User permissions/tags not set or vhost permissions missing | rabbitmqctl list_users | Execute set_permissions and set_user_tags together |
| Permissions set successfully but business still rejects | Used non-/ vhost | Management console check vhost | Set permissions for actual vhost |
| Docker Compose data lost after startup | Volume not mounted or volume name changed | docker volume ls | Keep volume configuration |
| Default account/weak password security risk | admin/secret, root/123456 are guessable credentials | Configuration and command sections | Production change to strong password and limit exposure |