web-dev-qa-db-ja.com

nginx ./configureがopensslを見つけることができません

Nginxをインストールしようとしています。何をしても、nginxがopensslパスを見つけられないようです。それは、opensslディレクトリのいずれにも存在しないファイルを検索しているようです。以下は私のmake出力です。 nginxがopensslを探すためにさまざまなパスを指定しようとしました。

[root@server nginx-0.8.54]# make
make -f objs/Makefile
make[1]: Entering directory `/root/nginx-0.8.54'
cd /usr/local/ssl \
        && make clean \
        && ./config --prefix=/usr/local/ssl/.openssl no-shared  no-threads \
        && make \
        && make install LIBDIR=lib
make[2]: Entering directory `/usr/local/ssl'
make[2]: *** No rule to make target `clean'.  Stop.
make[2]: Leaving directory `/usr/local/ssl'
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 2
make[1]: Leaving directory `/root/nginx-0.8.54'
make: *** [build] Error 2

誰かこれについて何か考えはありますか?

5
Chris

これは、nginx configureが相対パスを使用している場合にも発生する可能性があります。代わりに/からの完全パスを使用すると、ライブラリがより確実に検出されます。

機能しません:./configure --with-openssl=../openssl-source

作品:./configure --with-openssl=/home/build/src/openssl-source

5
Thaeli
./configure —with-cc-opt="-I/usr/local/opt/openssl/include" --with-ld-opt="-L/usr/local/opt/openssl/lib"
3
Bingnan

nginxを使用してmacOSをビルドしようとしていて、opensslbrewを介してインストールされている場合、opensslライブラリは次のようなパスにインストールされます。 /usr/local/opt/opensslbrew info opensslから

この式はkegのみです。つまり、/ usr/localにシンボリックリンクされていません。

なぜなら、Appleは、独自のTLSおよび暗号ライブラリを支持してOpenSSLの使用を廃止したためです。

このような場合、@ Bingnanが言ったように、--with-cc-optおよび--with-ld-optを介してopensslのインクルードパスとlibパスをconfigureスクリプトに通知できます。

./configure --with-cc-opt="-I/usr/local/opt/openssl/include" --with-ld-opt="-L/usr/local/opt/openssl/lib"

1
9re

ここでの問題を正確に思い出すことはできませんが、opensslが実際に存在する場所への/ usr/local/ssl(またはopenssl?)へのシンボリックリンクが問題を解決すると想定しています。デフォルトのOpenSSLでUbuntu 10.04にSSLサポート付きのnginxをインストールするのに問題はありませんでした。だから私はこれを試してみてこれに苦労している人をお勧めします。

また、おそらく正しいdevパッケージをインストールする必要があります。これは、nginxをインストールする前に通常インストールするものです。

2  apt-get update
3  apt-get install gcc
4  apt-get install g++
5  wget http://www.python.org/ftp/python/2.7/Python-2.7.tgz
6  wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
7  wget http://zlib.net/zlib-1.2.5.tar.gz
8  ls
9  gzip -d pcre-8.12.tar.gz 
10  gzip -d zlib-1.2.5.tar.gz 
11  gzip -d Python-2.7.tgz 
12  tar -xvf zlib-1.2.5.tar 
13  cd zlib-1.2.5
14  ./configure 
15  make
16  ls
17  Makefile
18  ls
19  ./configure 
20  make
21  Sudo apt-get install build-essential
22  make
23  make install
24  cd ..
25  ls
26  tar -xvf pcre-8.12.tar 
27  cd pcre-8.12
28  ./configure --prefix=/usr --enable-unicode-properties
29  make
30  make install
31  cd ..
32  ls
33  tar -xvf Python-2.7.tar 
34  apt-get install openssl
35  cd Python-2.7
36  apt-get install libssl-dev
37  apt-get install libperl-dev
38  ./configure --help
39  ./configure --enable-ipv6
40  make
41  make install
1
Chris

「yum install openssl-devel」を実行すると、ubuntuに切り替えるよりもはるかに簡単に見えます。

OPと同じ問題がありました。私はopensslをインストールしていましたが、nginxはコンパイル時にそれを見つけることができましたが、libssl-develへのポインターが私を助けました

1
Dayo

私の場合、問題は--prefix--openssldirをnginx --with-openssl-optオプションに渡そうとしたことです:

RUN ./configure --prefix=/usr/local/nginx \
                --sbin-path=/usr/local/nginx/nginx \
                --conf-path=/usr/local/nginx/nginx.conf \
                --pid-path=/run/nginx.pid \
                --with-openssl=/usr/local/src/openssl-1.1.1c \
                --with-openssl-opt="--prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers" \
                --with-http_ssl_module \
                --with-stream \
                --with-mail=dynamic

Nginxは、ビルドされたopensslがopenssl sourcesフォルダの.opensslサブフォルダにあることを期待しています。私の場合は/usr/local/src/openssl-1.1.1c/.opensslです。しかし、私はそれにprefixopenssldirを渡したので、ビルドされたopensslは/usr/local/sslのシステムロケーションに存在しました。

そのため、nginxは、前処理時にopensslヘッダー(objs/Makefile/usr/local/src/openssl-1.1.1c/.openssl/includeでそれらを探していた)も、リンケージ後にlibssl.a/libcrypto.aも検出できませんでした(objs/Makefileは、/usr/local/src/openssl-1.1.1c/.openssl/libでそれらを予期していました)。

prefixopenssldirオプションを削除し、ビルドが機能しました:

RUN ./configure --prefix=/usr/local/nginx \
                --sbin-path=/usr/local/nginx/nginx \
                --conf-path=/usr/local/nginx/nginx.conf \
                --pid-path=/run/nginx.pid \
                --with-openssl=/usr/local/src/openssl-1.1.1c \
                --with-openssl-opt="shared zlib enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers" \
                --with-http_ssl_module \
                --with-stream \
                --with-mail=dynamic
0
Boris Burkov

--with-openssl = pathは、OpenSSLライブラリsourcesへのパスを設定します。

パスはopensslソースであり、make install dirではありません

mac:nginx-1.17.3 qidizi$ ls ../openssl-OpenSSL_1_1_1c/.
./        ../       .cfg.sh   .openssl/ 

pcreまたはzlibは同じです。

0
qidizi

Zlibの場合

zlib tarファイルを解凍し、構成します。

道 - /opt/app/workload/nginx-test/nginx-1.8.0/zlib/zlib-1.2.8

./configure --prefix=/opt/app/workload/nginx-test/nginx-1.8.0/zlib/zlib-1.2.8
make
make install

PCREの場合

PCREファイルを解凍して構成します

道 - /opt/app/workload/nginx-test/nginx-1.8.0/pcre/pcre-8.36

./configure --prefix=/opt/app/workload/nginx-test/nginx-1.8.0/pcre/pcre-8.36

make
make install

構成する必要のないファイルを解凍するだけで、Nginxはそれを自分で使用します

opensslの場合

道 - /opt/app/workload/nginx-test/nginx-1.8.0/openssl-1.0.1l


Nginxの場合

./configure --prefix=/opt/app/workload/nginx-test/nginx-1.8.0/nginx --with-pcre=/opt/app/workload/nginx-test/nginx-1.8.0/pcre/pcre-8.36 --with-zlib=/opt/app/workload/nginx-test/nginx-1.8.0/zlib/zlib-1.2.8 --with-http_ssl_module --with-openssl=/opt/app/workload/nginx-test/nginx-1.8.0/openssl-1.0.1l
0
Mohammad Asif

opensslヘッダーは通常、Ubuntuのlibssl-devによって提供されます。また、opensslソースへのパスを手動で指定できる、nginxの--with-openssl=DIR./configureオプションもあります。パッケージマネージャーを使用するのではなく、ソースからビルドする理由はありますか?

0
mech-hisui