Debian12安装RabittMQ 4.3.0 1、官网参考资料https://www.rabbitmq.com/docs/install-debian2、操作注意debian12默认的是3.10的版本不建议2.1、安装#!/bin/shsudoapt-getinstallcurlgnupg apt-transport-https-y## Team RabbitMQs signing keycurl-1sLfhttps://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA|sudogpg--dearmor|sudotee/usr/share/keyrings/com.rabbitmq.team.gpg/dev/null## Add apt repositories maintained by Team RabbitMQsudotee/etc/apt/sources.list.d/rabbitmq.listEOF ## Modern Erlang/OTP releases ## deb [archamd64 signed-by/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main deb [archamd64 signed-by/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main ## Latest RabbitMQ releases ## deb [archamd64 signed-by/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main deb [archamd64 signed-by/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main EOF## Update package indicessudoapt-getupdate-y## Install Erlang packagessudoapt-getinstall-yerlang-base\erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets\erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key\erlang-runtime-tools erlang-snmp erlang-ssl\erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl## Install rabbitmq-server and its dependenciessudoapt-getinstallrabbitmq-server-y--fix-missing2.2 查看版本rabbitmqctl version2.3 配置确保配置文件是下面的即可rootVM-0-16-debian:~# cat /etc/rabbitmq/rabbitmq.confvm_memory_high_watermark.absolute256MB vm_memory_high_watermark_paging_ratio0.8disk_free_limit.absolute1GB rootVM-0-16-debian:~#查看内存限制rabbitmqctl status|grep-A5memory# 应该看到 下面的rootVM-0-16-debian:~# rabbitmqctl status | grep -A 5 memoryTotal memory used:0.1226gb Calculation strategy: rss Memory high watermark setting:0.256gb, computed to:0.256gb reserved_unallocated:0.0617gb(50.3%)code:0.0232gb(18.94%)rootVM-0-16-debian:~#2.4 启用管理插件方便查看rabbitmq-pluginsenablerabbitmq_management systemctl restart rabbitmq-server2.5 创建管理员账户# 创建 admin 用户请修改密码rabbitmqctl add_user admin your_password# 设置为管理员rabbitmqctl set_user_tags admin administrator# 授予所有权限rabbitmqctl set_permissions-p/ admin.*.*.*# 可选删除默认 guest 用户rabbitmqctl delete_user guest3、访问web界面访问ip加端口号15672注意如果有防火墙请务必把15672和5672放开4、web界面访问的ssl配置4.1 申请证书申请完毕后下载通用的那个腾讯的话选**Nginx适用大部分场景pem文件、crt文件、key文件**那个即可。4.2 服务器配置RabbitMQ 对证书文件的权限要求很严格私钥必须只能被 rabbitmq 用户读取# 设置文件所有者chown-Rrabbitmq:rabbitmq /etc/rabbitmq/ssl# 私钥权限必须为 600chmod600/etc/rabbitmq/ssl/server.key# 证书权限可以是 644chmod644/etc/rabbitmq/ssl/server.crt编辑配置文件/etc/rabbitmq/rabbitmq.conf并确保有以下内容# HTTPS 管理界面配置 management.ssl.port15671management.ssl.certfile/etc/rabbitmq/ssl/server.crt management.ssl.keyfile/etc/rabbitmq/ssl/server.key# 如果有 CA 证书取消下面这行的注释# management.ssl.cacertfile /etc/rabbitmq/ssl/ca.crt4.3 重启 RabbitMQsystemctl restart rabbitmq-server systemctl status rabbitmq-server4.4 访问https://域名:15671注意https如果输入http是不会自动跳转的还有就是注意放通防火墙的15671端口把防火墙15672端口记得也关闭下5 更新证书证书过期更换确实可以做到不停服。核心机制是ErlangRabbitMQ 的运行环境会自动检测并加载新证书这个过程对现有连接没有影响。原理简述证书的热加载当您将新证书文件如 server_certificate.pem 和 server_key.pem覆盖到原有位置后RabbitMQ 底层的 Erlang 虚拟机会检测到文件变化并在不影响任何现有发布者、消费者和连接的情况下开始为新建立的连接使用新证书。这就是“不停服”的保障。5.1 不停服更换证书的操作步骤5.1.1 准备新证书生成或获取新的证书文件和私钥。请确保它们符合 RabbitMQ 的要求如 PEM 格式。5.1.2 替换证书文件将新的证书文件直接覆盖到服务器上旧的证书文件位置。例如使用 cp 命令覆盖旧证书文件建议先备份旧文件sudocp/path/to/new/server_certificate.pem /etc/rabbitmq/ssl/server_certificate.pemsudocp/path/to/new/server_key.pem /etc/rabbitmq/ssl/server_key.pem注意请保持新证书的文件名和路径与 rabbitmq.conf 中的配置完全一致。5.1.3 可选手动强制刷新证书缓存Erlang 会定期检查证书文件但如果您希望新证书立即生效可以手动清除其缓存而无需重启服务。执行以下命令强制重新加载证书sudorabbitmqctlevalssl:clear_pem_cache().执行此命令后RabbitMQ 会立刻开始为新的连接提供新证书且不会中断任何现有的连接。5.1.4 可选验证证书是否生效您可以执行命令查看当前加载的证书信息确认是否已更新sudorabbitmqctlevalio:format(rabbit_trust_store:list()).5.2 注意事项老连接不受影响此方案旨在不中断服务。已经建立的长连接会继续使用旧证书直到连接断开只有新建立的连接才会使用新证书。这通常是可接受的因为客户端重连时会自动使用新证书。不建议使用旧命令网上有一些较旧的资料建议使用 rabbitmqctl eval “ssl:stop(), ssl:start().” 来重载证书但这个命令会中断所有现有连接与我们“不停服”的目标相悖请不要使用。使用 Trust Store 插件的特殊情况如果您之前配置了 rabbitmq_trust_store 插件来动态管理客户端 CA 证书那么更换证书的方式会略有不同。该插件支持通过 HTTP 或本地文件夹来更新证书列表并可通过 rabbitmqctl eval ‘rabbit_trust_store:refresh().’ 命令手动触发刷新。