1、openssl 與nginx 版本不相容真是一個大問題。
有時候我們下載的是 openssl 1.1.0e版本的。卻 openssl version時 得到了系統自帶的 受保護的不能刪除的 openssl 1.0.1e版本的。原因是配置 出錯,系統編譯器無法找到 一些重要的配置文件等 。
2、 openssl配置 編譯安裝之后 需要做的 一些配置:
1) 、ln -s /usr/local/openssl/include/openssl /usr/include/openssl
這是為了 給/usr/openssl/include/openssl 創建一個軟鏈接並將其放在 /usr/include目錄下 ,軟鏈接叫openssl,就像windows中用來的 快捷方式,eclipse桌面圖標就能進到eclipse工作台,就像c++的指針(java的對象的引用)一樣,不同就是C++指針(java引用)指向的是多個對象(屬性和方法),但這里是 多個軟鏈接”可以“指向同一個源文件,這這些軟鏈接占很少的內存,具有與源文件一樣的功能。以下同理
2)、ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
3)、ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
問題: erro while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 編譯器找不到這個庫文件 : libssl.so.1.1
原因是: 在64位機器上 nginx讀取的ssl文件 /usr/local/lib64/libssl.so.1.1文件,但是我們安裝openssl 時(./config --prefix=/usr/local/openssl),libssl.so.1.1庫文件默認安裝在了 /usr/local/openssl/lib{/libssl.so.1.1}目錄下了。 但是默認情況下,編譯器只會搜索 、使用/lib和/usr/lib這兩個目錄下的庫文件,不然就找不到,那就報錯(某某庫文件不存在或者找不到)。我們就要操作 ”3)“的命令,在/usr/local上創建軟鏈接 libssl.so 指向——>/usr/local/openssl/lib/libssl.so.1.1,這樣 nginx安裝編譯的時候找的到 openssl里的庫文件了。
4) echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
注意: /etc/ld.so.conf中 ld.so.conf文件 記錄了 編譯時使用的動態鏈接庫的路徑。由於上面說了 編譯器只會能使用 /lib和/usr/lib這兩個目錄下的庫文件。這里我們可以將 openssl下的lib路徑 添加到 /ld.so.conf下,當編譯時,自動到 /ld.so.conf文件上去找 庫文件的路徑。(有點像一個緩存區,也有點像windows的快捷方式)
5)、 ldconfig -v
ldconfig是一個程序,位於 /sbin下,root使用的. 英語好 可以在man ldconfig上查看詳細信息。
作用: 將/etc/ld.so.conf列出的路徑下的庫文件 緩存到 /etc/ld.so.cache 以供使用(應該是像nginx編譯的時候就會到/etc/ld.so.cache文件下去找 那些庫文件)。 因此,當你安裝完一些庫文件時,例如剛裝完 zlib openssl或者修改ld.so.conf增加了 新的庫文件的路徑后,需要運行一下 /sbin/ldcinfig 使所有的庫文件都被緩存到 ld.so.cache中。如果沒運行這個程序 ldconf,編譯的時候報錯-----------缺少xxxx庫。
6)、openssl version -v
我本來只為寫給自己看的,但發現還有人看,那就補充一下:
工具: 一個遠程登陸庫房服務器的工具(客戶端)secureCRT
1、從官網下載最新版本openssl-1.1.0e.tar.gz 到window上
2、將包拖到 CRT的SFTP窗口進行上傳,默認出現在/root目錄下
3、tar -zxvf openssl-1.1.0e.tar.gz (在/root目錄下解壓openssl包)
4、mv openssl-1.1.0e /opt (將解壓后的 openssl移到/opt目錄上)
5、cd /opt/openssl-1.1.0e (切換目錄到 /openssl-1.1.0e ,就像我windows上習慣將應用程序放在D盤,配置數據等放在E盤)
6、./config --prefix=/usr/local/openssl (配置,配置的東西全放在 /openssl目錄下,配置產生的目錄為:/bin /include /lib /share /ssl這五個目錄)
7、 make (編譯,這時候不知道電腦屏幕在動 還是人在動 還是文字在動了,很久)
8、make install (編譯安裝) 注意:檢查編譯程序、安裝文件是否成功--->echo +一個牛逼的符號
9、最后 就按之前寫的 1、2、3、4、5、6一直走下去就ok了。
如下圖

