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 使用的端口(默认是 5672 和 15672)未被其他服务占用:

    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 的端口(默认是 5672 和 15672)。

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

相关推荐
每天一道题19 小时前
Kafka 是如何工作的?从 Broker、Partition、Offset 到 Consumer Group
分布式·kafka
用户14944848132021 小时前
为什么大厂很少直接用 2PC/TCC?聊聊分布式事务在真实业务里的落地套路
分布式·后端
code_slave(码畜)1 天前
微服务架构落地:分库分表实战(下) —— 分布式主键、跨分片查询与分页聚合防坑
数据库·spring boot·分布式·spring cloud·微服务·架构·分库分表
德迅云安全-上官1 天前
新一代智能分布式云接入:应用加速守护 TCP 业务安全与体验
分布式·tcp/ip·安全
凯凯姜1 天前
分布式定时任务重复执行与故障恢复
分布式
Sayai1 天前
Kafka 磁盘空间治理实战:retention 保留策略、log.dirs 在线扩容、分区跨盘迁移与不停机整体换盘
大数据·运维·分布式·kafka·消息队列
爱吃牛肉的大老虎1 天前
Redis之分布式 Session问题
数据库·redis·分布式
阿标在干嘛1 天前
分布式锁的“场景适配“:我们为什么在部分链路中选择了数据库乐观锁?
数据库·分布式
磐链科技1 天前
Web3区块链开发需要哪些核心技术?解析分布式网络、数字钱包与跨链交互方案
分布式·web3·区块链
爱吃火鸡面呀1 天前
PySpark 入门实战:从 DataFrame 到 SQL、DSL 与窗口函数
分布式·spark