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 开机自动启动,并能够有效地管理和排查服务问题。

相关推荐
ACP广源盛139246256732 小时前
国产算力互联IX8024@ACP#Kimi K3 开源后的端侧部署硬件架构分析
大数据·人工智能·分布式·单片机·嵌入式硬件
花生了什么事o3 小时前
分布式 ID 生成方案:从数据库自增到雪花算法
数据库·分布式·算法
爱吃提升18 小时前
python 分布式爬虫、爬虫合规与综合实战项目
分布式·爬虫·python
ZENERGY-众壹21 小时前
跨品牌逆变器升级:华为锦浪德业 API 对接的 7 个坑
分布式·华为·数据归一化·光伏运维·逆变器api
薛定谔的猫19821 天前
LLaMA-Factory +DeepSpeed 分布式多卡训练实战全解
分布式·deepspeed·zero·多卡训练·多卡分布式训练
稚南城才子,乌衣巷风流1 天前
RabbitMQ 消息队列:从入门到实战
分布式·rabbitmq
Database_Cool_2 天前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
肥胖小羊2 天前
解决企业微信 AccessToken 刷新并发冲突的分布式锁机制实践
分布式·企业微信
过期动态2 天前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
风中凌乱3 天前
kafka新版本集群的安装与部署
分布式·kafka