RabbitMQ启动报错throw:{error,{missing_dependencies,[crypto,ssl]

在启动 rabbitmq-server 时报错:

2018-01-03 06:16:32.494 [info] <0.33.0> Application lager started on node rabbit@ubuntu
2018-01-03 06:16:32.507 [info] <0.5.0> Log file opened with Lager
2018-01-03 06:16:33.438 [error] <0.5.0> 
Error description:
    init:do_boot/3
    init:start_em/1
    rabbit:start_it/1 line 454
    rabbit:broker_start/0 line 330
    rabbit_plugins:prepare_plugins/1 line 289
    rabbit_plugins:ensure_dependencies/1 line 263
throw:{error,{missing_dependencies,[crypto,ssl],
                                   [amqp10_client,cowboy,cowlib,rabbitmq_aws,
                                    rabbitmq_management,
                                    rabbitmq_management_agent,rabbitmq_shovel,
                                    rabbitmq_trust_store]}}
Log file(s) (may contain more information):
   /home/zhangcs/rabbitmq_server-3.7.2/var/log/rabbitmq/rabbit@ubuntu.log
   /home/zhangcs/rabbitmq_server-3.7.2/var/log/rabbitmq/rabbit@ubuntu_upgrade.log

根据异常提示,原先以为是缺少了OpenSSL,但是检查后发现OpenSSL已经成功安装

$ openssl version
OpenSSL 1.0.2g  1 Mar 2016

通过搜索引擎找了半天没收获,最后却在官网找到了相关信息:在 “Debian-based systems” 上,Erlang支持OpenSSL需要安装 erlang-ssl ;而我当前的系统 Ubuntu16.04TLS 正属于Debian系

If you receive an error instead, confirm that Erlang was built with OpenSSL. On Debian-based systems you may need to install the erlang-ssl package.

1、检查当前Erlang是否支持TSL/SSL

进入Erlang后使用命令 ssl:versions(). 检查当前SSL版本

zhangcs@ubuntu:~/rabbitmq_server-3.7.2$ erl
Erlang/OTP 20 [erts-9.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [kernel-poll:false]

Eshell V9.1  (abort with ^G)
1> ssl:versions().
** exception error: undefined function ssl:versions/0
2> halt().

2、安装 erlang-ssl 后问题解决

$ sudo apt install erlang-ssl

安装 erlang-ssl 后检查SSL版本

zhangcs@ubuntu:~/rabbitmq_server-3.7.2$ erl
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:2:2] [async-threads:10] [kernel-poll:false]

Eshell V7.3  (abort with ^G)
1> ssl:versions().
[{ssl_app,"7.3"},
 {supported,['tlsv1.2','tlsv1.1',tlsv1]},
 {available,['tlsv1.2','tlsv1.1',tlsv1,sslv3]}]
2> halt().

启动 rabbitmq-server 时不再报错

<think>好的,用户遇到了在启用RabbitMQ管理插件时出现依赖缺失的错误,比如缺少asn1、crypto、public_key等。我需要根据提供的引用资料来整理解决方案。 首先,引用3和4提到问题可能与SSL依赖有关。用户执行rabbitmq-plugins enable命令时报错,可能原因包括Erlang安装时未正确配置SSL,或者依赖模块未正确安装。根据引用4,安装Erlang时需要指定--with-ssl选项,指向正确的OpenSSL路径。例如,在CentOS系统下,用户可能没有正确配置SSL路径,导致Erlang编译时缺少相关模块。 另外,引用3中提到用户在控制台执行ssl:versions()时出现异常,说明ErlangSSL模块未正确安装。这可能是因为Erlang安装时缺少SSL支持,或者OpenSSL版本不兼容。需要确认OpenSSL已正确安装,并且Erlang配置时指向了正确的路径。 解决方案可能包括重新安装Erlang并确保SSL配置正确,或者检查环境变量是否正确设置。引用4提供的配置命令可以作为参考:./configure --prefix=/usr/local/erlang20 --without-javac --with-ssl=/usr/local/openssl。用户需要根据实际安装路径调整--with-ssl参数。 此外,引用1和2提到在Windows环境下,可能需要设置日志缓存目录或重新安装服务。例如,删除现有服务,设置RABBITMQ_SERVER环境变量,然后重新安装和启动服务。这可能解决因路径错误或服务配置问题导致的依赖缺失。 综合这些信息,解决方案步骤可能包括: 1. 确认OpenSSL已正确安装,版本兼容。 2. 重新安装Erlang,确保配置时包含SSL支持。 3. 检查环境变量,如RABBITMQ_SERVER是否正确设置。 4. 删除并重新安装RabbitMQ服务。 5. 再次启用管理插件。 需要分步骤指导用户操作,并提醒不同系统下的注意事项,如CentOS和Windows的差异。</think>### 解决RabbitMQ管理插件依赖缺失问题的方法 #### 1. 确认ErlangSSL依赖安装 RabbitMQ依赖Erlang的加密模块(如$crypto$、$ssl$),若安装Erlang时未正确配置SSL路径会导致依赖缺失[^3][^4]。 - **检查OpenSSL安装**:确保系统中已安装OpenSSL,并记录其安装路径(如Windows下默认路径或Linux下的`/usr/local/openssl`)。 - **重新编译Erlang**:在Linux系统中,使用以下命令重新配置并安装Erlang: ```bash ./configure --prefix=/usr/local/erlang --with-ssl=/usr/local/openssl make && make install ``` 其中`--with-ssl`需指向实际的OpenSSL路径。 #### 2. 修复Windows环境变量问题 若在Windows报错,需检查环境变量和服务配置: - **删除并重建RabbitMQ服务**: ```cmd rabbitmq-service remove set RABBITMQ_SERVER=F:\RabbitMQ\data # 替换为实际数据目录 rabbitmq-service install rabbitmq-server start ``` 此操作可解决路径配置错误导致的依赖加载失败[^1]。 #### 3. 验证ErlangSSL模块 启动Erlang交互终端,检查$ssl$模块是否正常: ```erlang 1> ssl:versions(). ``` 若返回版本信息(如`[{ssl_app,"10.7"}, ...]`)说明SSL模块正常;若报错则需重新安装Erlang。 #### 4. 启用管理插件 完成上述步骤后,再次尝试启用管理插件: ```cmd rabbitmq-plugins enable rabbitmq_management ``` #### 5. 其他可能原因 - **依赖模块冲突**:若仍报错,尝试禁用其他插件或升级RabbitMQ版本。 - **权限问题**:在Linux中确保ErlangRabbitMQ安装目录的读写权限。 --- ###
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值