溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

nginx 編譯安裝1.17.3版本,添加openssl參數(shù)報(bào)錯(cuò)問題解決

發(fā)布時(shí)間:2020-07-24 14:32:27 來源:網(wǎng)絡(luò) 閱讀:2426 作者:icenycmh 欄目:系統(tǒng)運(yùn)維

背景

? ? 最近在升級(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


向AI問一下細(xì)節(jié)

免責(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)容。

AI