环境信息
- EMQ X 版本:4.3.7
- 操作系统及版本: centos 7
- 其他
问题描述
官网下载的 emqx-centos7-4.3.7-amd64.zip 解压后启动报错
{application_start_failure,kernel,{{shutdown,{failed_to_start_child,
kernel_safe_sup,{on_load_function_failed,crypto}}}, ..}
官网也有说明 常见问题 ,它表示,EMQ X 依赖的 Erlang/OTP 中的 crypto 应用启动失败。
进入到 EMQ X 的安装目录(如果使用包管理工具安装 EMQ X,则应该进入与 EMQ X 的 lib 目录同级的位置)(ps:我的emq位置 :/usr/local/emqx)
[root@localhost emqx]# cd /usr/local/emqx
[root@localhost emqx]# ldd lib/crypto-*/priv/lib/crypto.so
linux-vdso.so.1 => (0x00007ffcb9f32000)
libcrypto.so.1.1 => not found
libc.so.6 => /usr/lib64/libc.so.6 (0x00007f2063b29000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f2063925000)
libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f2063709000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2064601000)
其中有一个是显示的 ==not found==(PS:不管哪一个是not found,升级一下 openSSL就好了,我自己的和官网上说的不一致) 表明指定的 OPENSSL 版本的 .so 库未正确安装。
安装OPENSSL
1、下载与解压
cd ~
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
tar -xzf openssl-1.1.1l.tar.gz
2、编译与安装
如果没有安装gcc可能会报错,可以直接使用yum安装一下gcc
yum install gcc
cd openssl-1.1.1l
./config
make
make install
3、尝试运行/usr/local/bin/openssl version应该会出现下面的这个错误:
/usr/local/bin/openssl version
报错
/usr/local/bin/openssl: error while loading shared libraries:
libcrypto.so.1.1: cannot open shared object file: No such file or directory
4、下面为相关的解决办法:
创建链接至libssl
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/
5、尝试查看openssl版本
/usr/local/bin/openssl version
OpenSSL 1.1.1l 24 Aug 2021
6、至此更新完成
启动EMQX 完美运行
[root@localhost emqx]# cd /usr/local/emqx
[root@localhost emqx]# ./bin/emqx start