Nginx kann mit SSL-Unterstützung nicht kompiliert werden, OpenSSL wurde nicht gefunden

19

Ich versuche, Nginx aus dem Quellcode mit aktiviertem SSL-Modul zu kompilieren. Wenn ich diesen Befehl ausführe:

./configure --with-http_ssl_module

Es prüft wie gewohnt, ob alles korrekt installiert ist. Dann wird Folgendes angezeigt:

Suche nach OpenSSL-Bibliothek ... nicht gefunden

./configure: error: SSL-Module erfordern die OpenSSL-Bibliothek. Sie können entweder die Module nicht aktivieren oder die OpenSSL-Bibliothek nicht im System installieren oder die OpenSSL-Bibliothek statisch aus der Quelle mit nginx erstellen, indem Sie die Option --with-openssl = verwenden.

Ich weiß, dass OpenSSL installiert ist, denn wenn ich es tue, openssl versionbekomme ichOpenSSL 1.0.1 14 Mar 2012

Also bin ich ziemlich ratlos. Ich dachte, OpenSSL ist möglicherweise nicht an seinem Standardspeicherort installiert, weshalb Nginx es nicht finden kann, aber ich habe keine Ahnung, wo dies liegt, da es mit dem Server vorinstalliert wurde. Wie kann ich herausfinden, wo das ist?

Auf dem Server läuft Ubuntu 12.04 LTS.

Vielen Dank.

James Linton
quelle
2
Wenn Sie yum (CentOS | redhat | fedora) verwenden, installieren Sie openssl-devel und führen Sie den Befehl aus.
maverick3

Antworten:

29

Höchstwahrscheinlich fehlt Ihnen das libssl-devPaket.

Aber warum sparen Sie sich nicht den ganzen Ärger und verwenden Sie einfach ein PPA für Nginx ?

Michael Hampton
quelle
Was genau sind PPAs? Von dem, was ich sammeln kann, können Leute Pakete hochladen, die mit installiert werden sollen apt-get? Ich dachte, der beste Weg, um sicherzustellen, dass ich immer die neueste Version der Software bekomme, besteht darin, sie aus dem Quellcode der Website zu kompilieren.
James Linton
1
PPAs sind persönliche Paketarchive. Wie Sie sagten, sollen sie dpkg-Pakete verteilen. Beim Kompilieren aus dem Quellcode erhalten Sie möglicherweise die neueste Version, dies ist jedoch nicht immer erforderlich. Informationen für Ubuntu und das PPA finden Sie hier: wiki.nginx.org/Install#Official_Debian.2FUbuntu_packages
Christopher Perrin
Die Infos im Nginx-Wiki sind gut. Es wird Sie schließlich zu der PPA führen, die ich verlinkt habe. :)
Michael Hampton
Okay, danke, ich werde in Zukunft PPAs verwenden. Aber für dieses Problem hat die Installation libssl-devfunktioniert. :)
James Linton
Das Nginx PPA ist der richtige Weg, da es die neueste offizielle Nginx-Binärdatei über apt bereitstellt. Ubuntu bietet normalerweise eine Nginx-Version an, die zu Supportzwecken einige Releases zurückliegt. Wenn Sie jedoch die Nginx-PPA verwenden, können Sie die neueste Version von Nginx.org erhalten. Dieser Ansatz ist viel einfacher als das Kompilieren aus dem Quellcode und eignet sich hervorragend für automatisierte Bereitstellungsskripten. Dadurch bleibt Ihr Apt auf Ihrem System über die aktuell installierte Nginx-Version informiert, was Apt-basierte Updates erheblich vereinfacht. Wenn es keinen bestimmten Grund für die Kompilierung aus dem Quellcode gibt, ist der PPA-Ansatz in der Produktion viel einfacher zu warten.
Joe J
1

Ich habe folgendes benutzt, um openssl für nginx zu bekommen:

https://ethitter.com/2016/06/nginx-openssl-1-0-2-http-2-alpn/

Alle anderen Versuche klappten entweder nicht oder waren zu klobig.

Hoffe das hilft einem anderen ...

Skidadon
quelle
Hat mir geholfen herauszufinden, ob das --with-openssl=Flag auf die Quelldateien verweist. Wenn Sie eine Verknüpfung zu einer bereits kompilierten / System-OpenSSL herstellen möchten, die nginx ./configurenicht finden kann, lesen Sie diesen Forumsbeitrag : --with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV).
26.
Vielen Dank für den zusätzlichen Hinweis @vesperto
skidadon
0

Wenn Sie überprüfen möchten, ob libssl am richtigen Ort installiert ist, können Sie which opensslund dann eingeben ldd /path/to/openssl.


quelle
0

Auch wenn OpenSSL bereits installiert ist ( brew install openssl), schlägt configure selbst eine Problemumgehung vor, die bei mir funktioniert hat:

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master--with-openssl=~/GitHub/openssl/openssl

Pnemonisch
quelle
--with-openssl=Zeigt die Option auf ein geklontes openssl-Github-Repo? Sie könnten erwägen, Ihre Antwort zu bearbeiten, um dies widerzuspiegeln, da dies für Menschen ohne ausreichendes Verständnis verwirrend sein kann.
Jamie Lindsey
yes, / GitHub / openssl / openssl ist ein geklontes Repository von github.com/openssl/openssl.git
Pnemonic
0

Wenn weiterhin Probleme beim Kompilieren von Nginx aus dem Quellcode mit dem pcre-bezogenen Fehler auftreten, kompilieren Sie mit dem Attribut "--with-pcre". Geben Sie für die Angabe des pcre-Pfads nicht den installierten Pfad an. Geben Sie den pcre-Softwarepfad an.

  1. Installieren Sie pcre mit

./konfigurieren

machen

sudo make install

Geben Sie dann den Pfad des pcre-Quellpfads an.

./configure --prefix=/path/to/nginxToBeInstalled/mayBeInOpt/nginx-1.16.0/ --with-openssl=/path/to/installed/openssl-1.1.1b/ --with-pcre=/path/to/your/downloaded/extracted/pcre-8.42

In meinem Fall,

./configure --prefix=/opt/nginx-1.16.0/ --with-openssl=/opt/openssl-1.1.1b/ --with-pcre=/media/username/personal/Software/pcre-8.42

Vielen Dank.

Lerner
quelle