RabbitMQ 开机启动配置教程

RabbitMQ 开机启动配置教程

在本教程中,我们将详细介绍如何配置 RabbitMQ 以实现开机自动启动。此配置适用于手动安装的 RabbitMQ 版本。

环境准备

  • 操作系统:CentOS 7
  • RabbitMQ 版本:3.8.4
  • Erlang 版本:21.3

步骤

1. 安装 Erlang

  1. 安装依赖

    bash 复制代码
    sudo yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget socat
  2. 下载 Erlang

    bash 复制代码
    wget http://erlang.org/download/otp_src_21.3.tar.gz
  3. 解压并编译安装

    bash 复制代码
    tar -xvf otp_src_21.3.tar.gz
    cd otp_src_21.3
    ./configure --prefix=/usr/local/erlang
    make && make install
  4. 配置环境变量

    编辑 /etc/profile 文件,添加以下内容:

    bash 复制代码
    export PATH=$PATH:/usr/local/erlang/bin

    使配置生效:

    bash 复制代码
    source /etc/profile
  5. 验证安装

    bash 复制代码
    erl -version

2. 安装 RabbitMQ

  1. 下载 RabbitMQ

    bash 复制代码
    wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.4/rabbitmq-server-generic-unix-3.8.4.tar.xz
  2. 解压

    bash 复制代码
    xz -d rabbitmq-server-generic-unix-3.8.4.tar.xz
    tar -xvf rabbitmq-server-generic-unix-3.8.4.tar
  3. 配置环境变量

    编辑 /etc/profile 文件,添加以下内容:

    bash 复制代码
    export PATH=$PATH:/usr/local/rabbitmq_server-3.8.4/sbin

    使配置生效:

    bash 复制代码
    source /etc/profile

3. 配置 RabbitMQ 环境文件

  1. 编辑 rabbitmq-env 文件

    bash 复制代码
    sudo vi /usr/local/rabbitmq/rabbitmq_server-3.8.4/sbin/rabbitmq-env
  2. 添加 Erlang 路径

    在文件中添加 Erlang 的路径:

    bash 复制代码
    export PATH=$PATH:/usr/local/erlang/bin

4. 创建 RabbitMQ 服务文件

  1. 创建服务文件

    bash 复制代码
    sudo vi /etc/systemd/system/rabbitmq.service
  2. 添加以下内容

    ini 复制代码
    [Unit]
    Description=RabbitMQ Server
    Documentation=https://www.rabbitmq.com/docs.html
    After=network.target
    
    [Service]
    Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/erlang/bin"
    User=rabbitmq
    Group=rabbitmq
    Type=notify
    ExecStart=/usr/local/rabbitmq/rabbitmq_server-3.8.4/sbin/rabbitmq-server
    ExecStop=/usr/local/rabbitmq/rabbitmq_server-3.8.4/sbin/rabbitmqctl stop
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target

5. 配置开机启动

  1. 加载服务文件

    bash 复制代码
    sudo systemctl daemon-reload
  2. 启用开机启动

    bash 复制代码
    sudo systemctl enable rabbitmq.service
  3. 立即启动服务

    bash 复制代码
    sudo systemctl start rabbitmq.service
  4. 查看服务状态

    bash 复制代码
    sudo systemctl status rabbitmq.service

6. 验证配置

  1. 验证 RabbitMQ 状态

    bash 复制代码
    sudo /usr/local/rabbitmq/rabbitmq_server-3.8.4/sbin/rabbitmqctl status
  2. 验证管理插件

    bash 复制代码
    sudo /usr/local/rabbitmq/rabbitmq_server-3.8.4/sbin/rabbitmq-plugins enable rabbitmq_management
  3. 访问管理界面

    通过浏览器访问 http://<服务器IP>:15672,使用管理员账户登录。

7. 查看服务日志

如果服务启动失败,可以使用以下命令查看详细日志:

bash 复制代码
journalctl -u rabbitmq.service -l

此命令将显示 RabbitMQ 服务的详细日志,帮助你排查问题。

8. 检查端口冲突和防火墙设置

  1. 检查端口占用

    确保 RabbitMQ 使用的端口(默认是 567215672)未被其他服务占用:

    bash 复制代码
    sudo netstat -tuln | grep 5672
    sudo netstat -tuln | grep 15672
  2. 查看占用端口的进程

    如果发现端口被占用,可以使用以下命令找出占用端口的进程:

    bash 复制代码
    sudo lsof -i :5672
    sudo lsof -i :15672
  3. 停止占用端口的进程

    如果确认该进程不是必需的,可以停止它:

    bash 复制代码
    sudo kill -9 <PID>

    替换 <PID> 为实际的进程 ID。

  4. 配置防火墙

    确保防火墙允许访问 RabbitMQ 的端口:

    bash 复制代码
    sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
    sudo firewall-cmd --reload

注意事项

  • 用户和组 :确保创建了 rabbitmq 用户和组,并且服务文件中指定的用户和组存在。
  • 权限:确保 RabbitMQ 的安装目录和文件有正确的权限。
  • 防火墙设置 :确保防火墙允许访问 RabbitMQ 的端口(默认是 567215672)。

通过以上步骤,您可以成功配置 RabbitMQ 开机自动启动,并能够有效地管理和排查服务问题。

相关推荐
毕设源码-赖学姐1 小时前
【开题答辩全过程】以 基于Spark的电商用户行为分析系统为例,包含答辩的问题和答案
大数据·分布式·spark
我认不到你1 小时前
paxos一致性算法(大白话+图解)
分布式·后端
川212 小时前
Kafka消息中间件(超大数据吞吐量)使用
分布式·kafka
Wang's Blog2 小时前
Kafka: 基于 NestJS 的问卷系统配置与业务实现
分布式·kafka
回家路上绕了弯2 小时前
一文读懂分布式事务:核心原理、解决方案与实践思考
分布式·后端
踏浪无痕2 小时前
JobFlow 背后:五个让我豁然开朗的设计瞬间
分布式·后端·架构
我是小妖怪,潇洒又自在3 小时前
springcloud alibaba(十)分布式事务
分布式·spring cloud·wpf
Q8762239653 小时前
基于S7 - 200 PLC和组态王的大小球颜色大小材质分拣系统探索
分布式
小满、4 小时前
RabbitMQ:Fanout、Direct、Topic 交换机、队列声明与消息转换器
java·分布式·消息队列·rabbitmq·spring amqp
Wang's Blog4 小时前
RabbitMQ: 分布式事务的最终一致性解决方案
分布式·rabbitmq