您好,登錄后才能下訂單哦!
背景
? ? 最近在升級(jí)nginx1.14.1到nginx1.17.3版本時(shí),發(fā)現(xiàn)了一個(gè)openssl的報(bào)錯(cuò),記錄一下問題的發(fā)生以及解決過程,供大家參考。
問題
? ? 升級(jí)nginx時(shí),我按照慣例,使用原版本的編譯參數(shù),來進(jìn)行1.17.3新版本的編譯,如下:
#?/usr/local/nginx/sbin/nginx?-V 取得編譯參數(shù): --prefix=/usr/local/nginx?--with-http_ssl_module?--with-openssl=/usr/local/openssl?--with-http_stub_status_module?--with-http_dav_module?--with-http_realip_module?--with-http_gzip_static_module?--with-http_v2_module
? ? ?利用舊版本的編譯參數(shù)來編譯新版本nginx,make的時(shí)候,發(fā)現(xiàn)出現(xiàn)了錯(cuò)誤,操作與信息如下:
#?tar?-zxvf?nginx-1.17.3.tar.gz #?cd?nginx-1.17.3 #?./configure?--prefix=/usr/local/nginx?--with-http_ssl_module?--with-openssl=/usr/local/openssl?--with-http_stub_status_module?--with-http_dav_module?--with-http_realip_module?--with-http_gzip_static_module?--with-http_v2_module #?make make?-f?objs/Makefile make[1]:?Entering?directory?`/root/soft/nginx-1.17.3' cd?/usr/local/openssl?\ &&?if?[?-f?Makefile?];?then?make?clean;?fi?\ &&?./config?--prefix=/usr/local/openssl/.openssl?no-shared?no-threads??\ &&?make?\ &&?make?install_sw?LIBDIR=lib /bin/sh:?line?2:?./config:?No?such?file?or?directory make[1]:?***?[/usr/local/openssl/.openssl/include/openssl/ssl.h]?Error?127 make[1]:?Leaving?directory?`
? ? 從報(bào)錯(cuò)信息上看,可以看到編譯是openssl相關(guān)的組件報(bào)錯(cuò)了,可能是“--with-openssl=/usr/local/openssl” 這個(gè)參數(shù)導(dǎo)致。這里提到了“/usr/local/openssl/.openssl/include/openssl/ssl.h”這個(gè)文件,我嘗試去找這個(gè)文件,發(fā)現(xiàn)文件找不到:(/usr/local/openssl是我自己安裝的openssl)
#?ll?/usr/local/openssl/.openssl/ ls:?cannot?access?/usr/local/openssl/.openssl/:?No?such?file?or?directory
? ? 可以發(fā)現(xiàn).openssl這個(gè)目錄本身是不存在的,應(yīng)該是nginx 1.17.3版本編譯的時(shí)候默認(rèn)去找了“/usr/local/openssl/.openssl/”這個(gè)目錄,所以導(dǎo)致了make失敗。
解決
? ? ?發(fā)現(xiàn)了問題可能的原因后,嘗試修改一下nginx1.17.3添加openssl模塊時(shí)候的相關(guān)編譯信息(auto/lib/openssl/conf):
#?vi?auto/lib/openssl/conf ????????????CORE_INCS="$CORE_INCS?$OPENSSL/.openssl/include" ????????????CORE_DEPS="$CORE_DEPS?$OPENSSL/.openssl/include/openssl/ssl.h" ????????????CORE_LIBS="$CORE_LIBS?$OPENSSL/.openssl/lib/libssl.a" ????????????CORE_LIBS="$CORE_LIBS?$OPENSSL/.openssl/lib/libcrypto.a" ???????????? //在該文件中,看到openssl的core相關(guān)目錄,都被添加上了.openssl這級(jí)目錄,嘗試修改目錄信息,去除.openssl這級(jí)目錄:??? #?more?auto/lib/open/ssl ????????????CORE_INCS="$CORE_INCS?$OPENSSL/include" ????????????CORE_DEPS="$CORE_DEPS?$OPENSSL/include/openssl/ssl.h" ????????????CORE_LIBS="$CORE_LIBS?$OPENSSL/lib/libssl.a" ????????????CORE_LIBS="$CORE_LIBS?$OPENSSL/lib/libcrypto.a"
? ? ? 修改完auto/lib/openssl/conf的信息之后,重新編譯安裝nginx1.17.3,即可正常編譯安裝成功。
#?make?clean #?./configure?--prefix=/usr/local/nginx?--with-http_ssl_module?--with-openssl=/usr/local/openssl?--with-http_stub_status_module?--with-http_dav_module?--with-http_realip_module?--with-http_gzip_static_module?--with-http_v2_module #?make?&&?make?install
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。