这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」
rabbitmq作为第三方服务,使用时需要独立安装部署,在linux系统中安装时容易出现erlang与rabbitmq版本不匹配的问题,在此记录erlang和rabbitmq安装流程与报错问题解决。
1. 安装Erlang
1.1 使用yum安装
- 使用wget命令下载官方镜像rpm包,
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm - 使用命令
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm安装rpm包 - 使用命令
yum -y install erlang安装erlang- 可以使用
yum list | grep list查看erlang镜像版本信息,选择合适版本安装
- 可以使用
- 使用命令
yum -q erlang查看安装的erlang版本
1.2 源文件安装erlang
下载压缩包是指在Erlang官网下载官方程序源文件(.tar.gz)后,上传至linux系统中,解包解压缩后配置并编译安装源文件的过程。
- erlang官网地址:www.erlang.org/downloads ,点击Download source下载源文件
- 上传至linux系统中,如定义/usr/local/erlang作为erlang的安装存放目录
- 使用命令
tar -zxvf otp_src_xxxx.tar.gz解压程序包 - 进入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安装相关库后重新执行
- 使用该命令将erlang编译安装在默认目录下,可以使用
- 配置环境变量,使用vi命令编辑全局配置文件
vi /etc/profile,在配置文件中添加指向安装目录- 如果erlang安装目录为/usr/local/erlang,则
export PATH=$PATH:/usr/local/erlang/bin - 配置完成后使用命令
source /etc/profile生效环境变量配置
- 如果erlang安装目录为/usr/local/erlang,则
- 使用命令
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
- 使用命令下载rabbitmqrpm包,
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.13/rabbitmq-server-3.9.13-1.el7.noarch.rpm - 导入相关密钥信息(可以省略),
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc - 安装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
- 安装时需要socat插件,可以使用命令
2.2 源文件安装rabbitmq
- 下载rabbitmq.tar.xz包,
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.13/rabbitmq-server-3.9.13.tar.xz - 使用
xz -d rabbitmq-server-xxxx.tar.xz解压xz压缩包- 如果没有xz命令则使用
yum install xz安装
- 如果没有xz命令则使用
- 使用
tar -xvf rabbitmq-server-xxxx.tar解包 - 创建合适的目录并将解压后文件移动至指定位置,rabbitmq解压后无需安装即可执行
- 配置环境变量,在全局配置/etc/profile文件中设置
export PATH=/usr/local/rabbitmq/sbin:$PATH- /usr/local/rabbitmq为rabbitmq安装目录,如果自定义其他位置则替换
- 修改完成后使用
source /etc/profile生效配置
- 此时可以执行命令来操作rabbitmq服务,如
rabbitmqctl-plugins enable rabbitmq_management,启动后台管理插件rabbitmq-server -detached,后台运行rabbitmq
- 之后可以使用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 解决方法
- 移除原有版本的erlang
- 设置erlang的repo源(如果需要)
- 使用
yum clean all命令清理rpm缓存,并使用yum makecache重新生成 - 使用命令
yum list | grel erlang查看erlang的yum源列表信息,找到符合rabbitmq要求的erlang - 使用命令
yum install erlangxxx安装对应版本的erlang - 重新安装后再次尝试安装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服务正常启动运行。