Linux下安装RabbitMQ流程及常见问题

1,103 阅读4分钟

这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战

rabbitmq作为第三方服务,使用时需要独立安装部署,在linux系统中安装时容易出现erlang与rabbitmq版本不匹配的问题,在此记录erlang和rabbitmq安装流程与报错问题解决。

1. 安装Erlang

1.1 使用yum安装

  1. 使用wget命令下载官方镜像rpm包,wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
  2. 使用命令rpm -Uvh erlang-solutions-1.0-1.noarch.rpm安装rpm包
  3. 使用命令yum -y install erlang安装erlang
    • 可以使用yum list | grep list查看erlang镜像版本信息,选择合适版本安装
  4. 使用命令yum -q erlang查看安装的erlang版本

1.2 源文件安装erlang

下载压缩包是指在Erlang官网下载官方程序源文件(.tar.gz)后,上传至linux系统中,解包解压缩后配置并编译安装源文件的过程。

  1. erlang官网地址:www.erlang.org/downloads ,点击Download source下载源文件
  2. 上传至linux系统中,如定义/usr/local/erlang作为erlang的安装存放目录
  3. 使用命令tar -zxvf otp_src_xxxx.tar.gz解压程序包
  4. 进入erlang解压目录下,使用命令./configure && make && make install配置并编译安装erlang
    • 使用该命令将erlang编译安装在默认目录下,可以使用./configure --prefix=/usr/local/erlang指定erlang的编译安装目录
    • 如果.configure命令执行时报错configure: error: No curses library functions found,代表缺少日志库,可使用命令yum -y install ncurses-devel安装相关库后重新执行
  5. 配置环境变量,使用vi命令编辑全局配置文件vi /etc/profile,在配置文件中添加指向安装目录
    • 如果erlang安装目录为/usr/local/erlang,则export PATH=$PATH:/usr/local/erlang/bin
    • 配置完成后使用命令source /etc/profile生效环境变量配置
  6. 使用命令erl -version查看erlang版本信息
  • 此处版本号可能与erlang版本号不一致,如果是yum安装,可以使用yum -q erlang查看安装版本号

1.3 重新安装erlang

如果需要重新安装erlang,则需要先移除之前安装,使用命令yum remove erlang,显示Nothing to do 则表示erlang包不存在。

1.4 卸载erlang

如果不再需要erlang环境,可以将其卸载,卸载之前需要检查系统中存在的erlang相关信息,使用如下命令:

  • yum list | grep erlang,查看erlang相关文件列表信息
  • whereis erlang,可以查找erlang安装目录
  • find / -name erlang*,可以查找erlang开头的文件信息
  • yum -y remove erlang-*,移除erlang安装信息
  • rm -rf /usr/lib64/erlang,删除erlang默认安装目录,如果自定义了安装目录则指定删除
  • rm -rf erlang-*,删除所有erlang开头的文件

2. 安装RabbitMQ

2.1 yum安装rabbitmq

  1. 使用命令下载rabbitmqrpm包,wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.13/rabbitmq-server-3.9.13-1.el7.noarch.rpm
  2. 导入相关密钥信息(可以省略),rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
  3. 安装rabbitmq的rpm包,yum install rabbitmq-server-3.9.13-1.el7.noarch.rpm
    • 安装时需要socat插件,可以使用命令yum -y install socat安装
    • rpm -ivh --nodeps rabbitmq-server-3.8.3-1.el7.noarch.rpm

2.2 源文件安装rabbitmq

  1. 下载rabbitmq.tar.xz包,wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.13/rabbitmq-server-3.9.13.tar.xz
  2. 使用xz -d rabbitmq-server-xxxx.tar.xz解压xz压缩包
    • 如果没有xz命令则使用yum install xz安装
  3. 使用tar -xvf rabbitmq-server-xxxx.tar解包
  4. 创建合适的目录并将解压后文件移动至指定位置,rabbitmq解压后无需安装即可执行
  5. 配置环境变量,在全局配置/etc/profile文件中设置export PATH=/usr/local/rabbitmq/sbin:$PATH
    • /usr/local/rabbitmq为rabbitmq安装目录,如果自定义其他位置则替换
    • 修改完成后使用source /etc/profile生效配置
  6. 此时可以执行命令来操作rabbitmq服务,如
    • rabbitmqctl-plugins enable rabbitmq_management,启动后台管理插件
    • rabbitmq-server -detached,后台运行rabbitmq
  7. 之后可以使用IP:15672来访问控制台管理rabbitmq服务

2.3 rabbitmq相关命令

rabbitmq安装成功后,可以使用相关命令来操作服务的启动、结束、查看状态等。

  • systemctl start rebbitmq-server,开启rabbitmq服务
  • systemctl enable rebbitmq-server,设置rabbitmq服务为开机启动
  • systemctl status rebbitmq-server,查看rabbitmq服务状态,activing表示正常运行
  • systemctl restart rebbitmq-server,重启rabbitmq服务

rabbitmq默认禁止控制台界面插件,如果想要登录控制台,可以手动开启插件,默认端口号为15672。

  • rabbitmq-plugins enable rabbitmq_management,启动web控制台界面管理
  • rabbitmqctl add_user [username] [password],增加管理用户账户
  • rabbitmqctl list_users,查看用户信息列表
  • rabbitmqctl set_user_tags [username] [tagname],设置用户角色
  • rabbitmqctl set_permissions -p "/" [username] ".*" ".*" ".*",设置vhost访问权限
  • rabbitmqctl list_permissions,查看用户vhost访问权限
  • rabbitmqctl delete_user,删除用户

2.4 rabbitmq卸载

  • rabbitmqctl app_stop,停止服务
  • yum list | grep rabbitmq,查看列表信息
  • yum -y remove rabbitmq-server.noarch,删除服务

3. yum命令安装rabbitmq报错

3.1 报错信息

erlang安装完成后,在使用yum命令安装rabbitmq时发生错误,显示Requires: erlang >= 20.3 Available: erlang-R16B-03.18.el7.x86或者是Erlang 21.3 is needed by RabbitMQ server 3.8 9 1 el7 noarch

3.2 问题原因

根据错误信息可以看出,问题产生的原因是因为当前rabbitmq需要的erlang版本与安装存在的erlang版本不一致,因此需要替换为版本匹配的erlang。

3.2 解决方法

  1. 移除原有版本的erlang
  2. 设置erlang的repo源(如果需要)
  3. 使用yum clean all命令清理rpm缓存,并使用yum makecache重新生成
  4. 使用命令yum list | grel erlang查看erlang的yum源列表信息,找到符合rabbitmq要求的erlang
  5. 使用命令yum install erlangxxx安装对应版本的erlang
  6. 重新安装后再次尝试安装rabbitmq服务

4. RabbitMQ启动报错

4.1 错误信息

安装完成erlang和rabbitmq后,使用命令启动rabbitmq服务时报错,错误信息显示为:Job for rabbitmq-server.service failed because the control process exited with error code. See “systemctl status rabbitmq-server.service” and “journalctl -xe” for details

通过执行journalctl -xe命令可以查看详细信息,

4.2 错误原因

该问题出现主要是因为rabbitmq版本与erlang版本不兼容导致,因为最新版本的rabbitmq会需要较新版本的erlang环境的支持。

4.3 解决方法

可以在rabbitmq官网查看与erlang版本对照表信息:www.rabbitmq.com/which-erlan… ,根据表中的版本对应关系,可以重新安装兼容的版本来保证rabbitmq服务正常启动运行。