在部署MongoDB的時候,啓動過程當中有遇到「version `OPENSSL_1.0.2' not found 」這樣的報錯,致使MongoDB服務起不來:mongodb
[root@slave-4 lib]# /usr/local/mongodb/bin/mongod -f /etc/mongodb/mongo.conf /usr/local/mongodb/bin/mongo: /lib64/libcrypto.so.10: version `OPENSSL_1.0.2' not found (required by /usr/local/mongodb/bin/mongo) [root@slave-4 lib]#
報這樣的錯誤,就是由於openssl的版本問題致使的。所以須要更新openssl。查看當前的版本號:ubuntu
[root@slave-4~]# openssl version OpenSSL 1.0.1e-fips 11 Feb 2013 [root@slave-4 ~]# [root@slave-4 ~]# rpm -qa openssl openssl-1.0.1e-60.el7.x86_64 [root@slave-4 ~]#
解決辦法有兩種,一種是yum自動更新,這種方法很簡單。還有一種狀況就是當這臺機器徹底阻斷了外網,不能用yum的時候,就只有手動解決了。vim
從新安裝openssl: yum -y install openssl,安裝完成以後,檢查版本已經OK。重啓mongodb就行了:服務器
[root@slave-4 ~]# openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 [root@slave-4 ~]# [root@slave-4 ~]# rpm -qa openssl openssl-1.0.2k-8.el7.x86_64 [root@slave-4 ~]#
由於此次遇到這個報錯的機器,由於限制不能使用外網,因而嘗試這手動解決了一把。作了下面幾個步驟:
一、手動編譯安裝 openssl-1.0.2k.tar.gz這個包
二、從其餘的openssl版本OK的機器上拷貝一個 libcrypto.so.1.0.2k到這臺報錯的服務器的/lib64下面,而後將原來的libcrypto.so.10-> libcrypto.so.1.0.1e改爲 libcrypto.so.10 -> libcrypto.so.1.0.2kide
[root@mongodb tmp]# ll /lib64/|grep libcrypto lrwxrwxrwx 1 root root 19 Jun 20 11:22 libcrypto.so.10 -> libcrypto.so.1.0.2k #新作的軟鏈接 -rwxr-xr-x. 1 root root 2025472 Nov 6 2016 libcrypto.so.1.0.1e -rwxr-xr-x 1 root root 2512448 Jun 20 11:19 libcrypto.so.1.0.2k #從其餘機器拷貝過來的文件 lrwxrwxrwx. 1 root root 19 Aug 2 2017 libcrypto.so.10.bak -> libcrypto.so.1.0.1e #將原來的軟鏈接改名備份 [root@mongodb tmp]#
三、而後再啓動mongodb,就成功了測試
======================安裝 openssl-1.0.2k.tar.gz步驟======================
1)看/usr/local/openssl是否已經存在,若存在,就將openssl目錄改個名字,作個備份ui
2) 解壓文件
[root@mongodb tmp]# tar -xzf openssl-1.0.2k.tar.gzcode
3) 配置 ip
[root@mongodb tmp]# cd openssl-1.0.2k/ [root@mongodb openssl-1.0.2k]# ./config shared --prefix=/usr/local/openssl --openssldir=/usr/lib/openssl shared 表示生成動態庫 prefix 表示安裝目錄 openssldir 表示配置文件目錄,ubuntu默認是/usr/lib/openssl,若設置其餘目錄,執行openssl命令時會有警告.
4)編譯 & 安裝ssl
[root@mongodb openssl-1.0.2k]# make & make install
5)設置環境變量
vim /etc/profile,在最後一行添加export PATH=$PATH:/usr/local/openssl/bin 保存退出;
使用source /etc/profile使其生效
6)建立符號連接
[root@mongodb openssl-1.0.2k]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl #執行這一步的時候有可能會失敗,提示/usr/bin/openssl已經存在,那就將/usr/bin/openssl改個名字,從新作軟鏈接 [root@mongodb openssl-1.0.2k]# ln -s /usr/local/ssl/openinclude/openssl /usr/include/openssl
7)刷新動態庫配置(有些安裝文檔有這一步,不過我沒作)
vim /etc/ld.so.conf 在文件末尾加入/usr/local/ssl/lib
8)測試查看版本就已經更新了
[root@mongodb ~]# openssl version #版本就已經更新了 OpenSSL 1.0.2k 26 Jan 2017 [root@mongodb ~]#
======================替換/lib64下面的軟鏈接======================
只是安裝了openssl-1.0.2k.tar.gz,雖然openssl version看到版本更新了,可是啓動MongoDB的時候仍是會報一樣的錯。發如今這臺機器的/lib64下面的軟鏈接libcrypto.so.10仍是指向的libcrypto.so.1.0.1e,而不是libcrypto.so.1.0.2k。因而從另一臺服務器拷貝了libcrypto.so.1.0.2k文件上傳到這臺不能聯網的報錯機器/lib64下面,從新作軟鏈接,將libcrypto.so.10-> libcrypto.so.1.0.1e改爲 libcrypto.so.10 -> libcrypto.so.1.0.2k:
[root@mongodb tmp]# ll /lib64/|grep libcrypto lrwxrwxrwx 1 root root 19 Jun 20 11:22 libcrypto.so.10 -> libcrypto.so.1.0.2k #新作的軟鏈接 -rwxr-xr-x. 1 root root 2025472 Nov 6 2016 libcrypto.so.1.0.1e -rwxr-xr-x 1 root root 2512448 Jun 20 11:19 libcrypto.so.1.0.2k #從其餘機器拷貝過來的文件 lrwxrwxrwx. 1 root root 19 Aug 2 2017 libcrypto.so.10.bak -> libcrypto.so.1.0.1e #將原來的軟鏈接改名備份 [root@mongodb tmp]#
而後再重啓MongoDB就能夠啓動了。