Ubuntu升级RabbitMQ到最新版的完整步骤
升级前务必备份RabbitMQ的配置文件和数据目录,防止升级过程中出现意外导致数据丢失:
sudo cp -r /etc/rabbitmq/ /etc/rabbitmq_backup/ # 备份配置文件
sudo cp -r /var/lib/rabbitmq/ /var/lib/rabbitmq_backup/ # 备份数据目录
RabbitMQ依赖Erlang/OTP运行,不同版本的RabbitMQ对Erlang有严格要求(如RabbitMQ 3.12.x需要Erlang 25.x及以上)。通过以下命令查看当前Erlang版本:
erl -version
若版本不符合要求,需先升级Erlang(参考后续2. 安装/升级Erlang步骤)。
RabbitMQ官方推荐通过其提供的APT源安装Erlang,以确保版本兼容性:
curl -fsSL https://packagecloud.io/rabbitmq/erlang/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/com.rabbitmq.erlang.gpg
根据Ubuntu版本替换{distribution}(如22.04对应jammy,20.04对应focal):
echo "deb [signed-by=/usr/share/keyrings/com.rabbitmq.erlang.gpg] https://packagecloud.io/rabbitmq/erlang/ubuntu ${distribution} main" | sudo tee /etc/apt/sources.list.d/rabbitmq_erlang.list
更新软件包列表并安装Erlang核心组件(erlang-base、erlang-ssl、erlang-nox):
sudo apt-get update
sudo apt-get install -y erlang-base erlang-ssl erlang-nox
验证Erlang版本是否符合RabbitMQ要求:
erl -version
替换{distribution}为Ubuntu版本代号(如22.04对应jammy):
echo "deb [signed-by=/usr/share/keyrings/com.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu ${distribution} main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
curl -fsSL https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/com.rabbitmq.gpg
sudo apt-get update
执行升级命令(-y自动确认依赖关系):
sudo apt-get install --only-upgrade rabbitmq-server -y
若需安装特定最新版本(如3.12.0),可通过apt-cache madison rabbitmq-server查看可用版本,再指定安装:
sudo apt-get install rabbitmq-server=3.12.0-1 -y
sudo systemctl restart rabbitmq-server
检查RabbitMQ版本:
rabbitmqctl status | grep "rabbitmq_version"
访问管理界面(默认端口15672,需提前启用插件,见4. 配置管理插件)。
若需通过Web界面管理RabbitMQ,需启用rabbitmq_management插件:
sudo rabbitmq-plugins enable rabbitmq_management
默认情况下,guest用户仅能本地登录。若需远程访问,需创建新用户并修改配置:
# 创建管理员用户(替换用户名和密码)
sudo rabbitmqctl add_user admin your_password
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 允许guest用户远程登录(可选,若不需要可忽略)
echo "loopback_users.guest = false" | sudo tee -a /etc/rabbitmq/rabbitmq.conf
sudo systemctl restart rabbitmq-server
开放防火墙端口(若启用):
sudo ufw allow 15672/tcp # 管理界面端口
sudo ufw allow 5672/tcp # AMQP协议端口
/etc/rabbitmq/rabbitmq.conf是否有语法错误(可通过rabbitmqctl check_running验证)。sudo cp -r /etc/rabbitmq_backup/* /etc/rabbitmq/
sudo cp -r /var/lib/rabbitmq_backup/* /var/lib/rabbitmq/
sudo systemctl restart rabbitmq-server