在众多消息队列中间件中,RabbitMQ凭借其成熟、稳定和强大的功能,成为了许多开发者和企业的首选,对于希望在CentOS系统上追求更高灵活性和控制力的用户而言,通过编译安装的方式部署RabbitMQ,能更好地契合特定的环境需求,下面,我们将一步步完成在CentOS系统上从源码编译安装RabbitMQ的全过程。

准备工作:搭建编译环境
在开始之前,一个纯净且准备就绪的系统环境是成功编译的基石,请确保您已具备一个CentOS 7或8的服务器环境,并拥有root或具备sudo权限的账户。
我们需要安装一系列必要的开发工具和依赖库,打开终端,执行以下命令:
# 更新系统软件包 sudo yum update -y # 安装基础开发工具组、编译器等 sudo yum groupinstall "Development Tools" -y # 安装RabbitMQ编译所必需的依赖,如OpenSSL、ncurses-devel等 sudo yum install -y openssl-devel ncurses-devel unixODBC-devel python3 socat logrotate
这些软件包提供了编译过程所需的编译器(如gcc、gcc-c++)、链接库以及后续运行Erlang/OTP和RabbitMQ的关键依赖。
第一步:编译安装Erlang/OTP
RabbitMQ是基于Erlang语言编写的,因此我们必须先安装一个合适版本的Erlang运行时,直接从源码编译Erlang能确保我们获得与系统高度兼容的版本。
- 访问Erlang官网,查找并确定与您计划安装的RabbitMQ版本相兼容的Erlang/OTP版本,我们以OTP 25.x为例。
- 下载并解压源码包:
# 下载Erlang/OTP源码包(请替换为确切的版本链接) wget https://github.com/erlang/otp/releases/download/OTP-25.3.2.5/otp_src_25.3.2.5.tar.gz # 解压 tar -zxvf otp_src_25.3.2.5.tar.gz cd otp_src_25.3.2.5
- 配置、编译并安装:
# 配置编译选项,指定安装路径为/usr/local/erlang ./configure --prefix=/usr/local/erlang # 使用多核并行编译以加快速度,数字4可根据您的CPU核心数调整 make -j4 # 安装到系统 sudo make install
- 配置环境变量:为了让系统找到Erlang可执行文件,需要将其路径加入环境变量。
# 编辑profile文件 sudo vi /etc/profile
在文件末尾添加:
export ERLANG_HOME=/usr/local/erlang export PATH=$ERLANG_HOME/bin:$PATH
保存退出后,执行
source /etc/profile使配置立即生效,通过运行erl -version来验证Erlang是否安装成功。
第二步:编译安装RabbitMQ Server
完成Erlang的部署后,我们就可以开始编译RabbitMQ本身了。

获取RabbitMQ源码: 访问 RabbitMQ 的 GitHub Release 页面,找到您需要的版本,我们以
v3.12.6为例。# 下载RabbitMQ源码 wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.6/rabbitmq-server-generic-unix-3.12.6.tar.xz # 解压(注意,这是预编译的通用Unix包,但我们需确保其与我们的Erlang环境兼容) tar -xf rabbitmq-server-generic-unix-3.12.6.tar.xz sudo mv rabbitmq_server-3.12.6 /usr/local/rabbitmq
在实际的纯编译安装场景中,您可能需要从包含
.tar.xz源码的包进行编译,但官方提供的通用Unix包实际上是一个已经编译好的、包含所需BEAM文件的发行版,它极大地简化了安装过程,同时依然要求与您自编译的Erlang环境兼容,对于绝大多数生产需求,使用此通用包是更推荐且稳定的做法,如果您坚持从更原始的源码(如Git仓库)编译,过程会更为复杂,涉及make等步骤。配置环境变量: 同样,将RabbitMQ的sbin目录加入PATH。
sudo vi /etc/profile
添加:
export RABBITMQ_HOME=/usr/local/rabbitmq export PATH=$RABBITMQ_HOME/sbin:$PATH
保存并
source /etc/profile。
第三步:配置与优化
创建配置文件: RabbitMQ的配置通常存放在
/etc/rabbitmq/目录。sudo mkdir -p /etc/rabbitmq sudo vi /etc/rabbitmq/rabbitmq.conf
您可以根据需要添加配置项,例如设置默认用户(不建议在生产环境使用):
# 允许默认guest用户从远程连接(仅用于测试) loopback_users = none # 定义节点名称 NODENAME=rabbit@localhost
设置Erlang Cookie: RabbitMQ节点间通信依赖于一个相同的Erlang Cookie,这个文件需要严格的权限控制。
# 创建.erlang.cookie文件并设置权限 sudo vi /var/lib/rabbitmq/.erlang.cookie # 输入一个长字符串作为cookie,MY_SECRET_COOKIE_VALUE sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie sudo chmod 600 /var/lib/rabbitmq/.erlang.cookie
注意:您可能需要先创建
rabbitmq用户和组,或者直接使用一个现有用户,为了安全,建议专门为RabbitMQ创建一个系统用户。
sudo groupadd rabbitmq sudo useradd -g rabbitmq -s /bin/false -d /var/lib/rabbitmq rabbitmq sudo chown -R rabbitmq:rabbitmq /usr/local/rabbitmq/ sudo chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
第四步:管理服务与验证
启动RabbitMQ: 以后台守护进程方式启动:
sudo -u rabbitmq rabbitmq-server -detached
启用管理插件: RabbitMQ提供了一个功能强大的Web管理界面。
sudo -u rabbitmq rabbitmq-plugins enable rabbitmq_management
检查状态:
sudo -u rabbitmq rabbitmqctl status
如果一切正常,您将看到关于RabbitMQ节点运行状态的详细信息。
访问管理界面: 在浏览器中访问
http://您的服务器IP:15672,使用默认用户名guest和密码guest登录(如果之前配置允许了远程访问)。强烈建议在首次登录后立即更改密码或创建新的管理员用户并禁用guest账户。配置系统服务(可选但推荐): 为了便于管理,可以创建一个systemd服务文件。
sudo vi /etc/systemd/system/rabbitmq.service ```示例: ```ini [Unit] Description=RabbitMQ Messaging Server After=network.target [Service] Type=forking User=rabbitmq Group=rabbitmq Environment="HOME=/var/lib/rabbitmq" ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server -detached ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl shutdown Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
然后执行:
sudo systemctl daemon-reload sudo systemctl enable rabbitmq sudo systemctl start rabbitmq
通过编译安装,您不仅获得了一个与您的CentOS系统深度契合的RabbitMQ服务,还在过程中加深了对这款消息中间件依赖关系的理解,这种方式赋予了管理员在版本选择、功能定制和性能调优上更大的自主权,虽然步骤相较于包管理器安装更为繁琐,但对于追求极致稳定性和可控性的生产环境而言,这份投入是值得的,后续的维护工作,包括日志查看(通常在 /usr/local/rabbitmq/var/log/rabbitmq)、插件管理以及集群配置,都将基于这个稳固的基础上展开。
