Nie można skompilować nginx z obsługą SSL, nie znaleziono OpenSSL

19

Próbuję skompilować nginx ze źródła z włączonym modułem SSL. Po uruchomieniu tego polecenia:

./configure --with-http_ssl_module

wykonuje zwykłe kontrole, aby sprawdzić, czy wszystko jest poprawnie zainstalowane, a następnie pojawia się:

sprawdzanie biblioteki OpenSSL ... nie znaleziono

./configure: error: Moduły SSL wymagają biblioteki OpenSSL. Możesz albo nie włączyć modułów, albo zainstalować bibliotekę OpenSSL w systemie, lub zbudować bibliotekę OpenSSL statycznie ze źródła za pomocą nginx, używając opcji --with-openssl =.

Wiem na pewno, że OpenSSL jest zainstalowany, bo kiedy to zrobię openssl version, dostanęOpenSSL 1.0.1 14 Mar 2012

Więc jestem dość zakłopotany. Myślałem, że może OpenSSL nie jest zainstalowany w domyślnej lokalizacji, dlatego nginx nie może go znaleźć, ale nie mam pojęcia, gdzie to jest, ponieważ jest fabrycznie zainstalowane na serwerze. Jak mogę się dowiedzieć, gdzie to jest?

Na serwerze działa Ubuntu 12.04 LTS.

Dzięki.

James Linton
źródło
2
Dla osób używających yum (CentOS | redhat | fedora) spróbuj zainstalować openssl-devel, a następnie spróbuj uruchomić komendę.
maverick3

Odpowiedzi:

29

Najprawdopodobniej brakuje Ci libssl-devpaczki.

Ale dlaczego nie zaoszczędzić sobie wszystkich kłopotów i po prostu użyć PPA dla nginx ?

Michael Hampton
źródło
Czym dokładnie są umowy PPA? Z tego, co mogę zebrać, ludzie mogą przesyłać pakiety do zainstalowania za pomocą apt-get? Pomyślałem, że najlepszym sposobem, aby upewnić się, że zawsze otrzymuję najnowszą wersję oprogramowania, jest skompilowanie jej ze źródła ze strony internetowej.
James Linton
1
Umowy PPA to osobiste archiwa paczek. Jak powiedziałeś, mają dystrybuować pakiety dpkg. Kompilacja ze źródła może dać ci najnowszą wersję, ale nie zawsze jest to konieczne. Informacje na temat Ubuntu i PPA można znaleźć tutaj: wiki.nginx.org/Install#Official_Debian.2FUbuntu_packages
Christopher Perrin
Informacje na wiki nginx są dobre. W końcu doprowadzi Cię do PPA, które połączyłem. :)
Michael Hampton
W porządku dzięki, przyjrzę się w przyszłości korzystaniu z PPA. Ale w przypadku tego problemu instalacja libssl-devdziałała. :)
James Linton
Nginx PPA to droga, ponieważ zapewnia najnowszy oficjalny plik binarny Nginx za pośrednictwem apt. Ubuntu zazwyczaj zapewnia wersję Nginx kilka wydań z powrotem w celach wsparcia, ale korzystając z PPA Nginx, możesz pobrać najnowszą wersję z Nginx.org. Znacznie łatwiej jest zastosować to podejście w porównaniu do kompilacji ze źródła i doskonale nadaje się do automatycznych skryptów obsługi administracyjnej. Utrzymuje apt w twoim systemie świadomą aktualnie zainstalowanej wersji Nginx, dzięki czemu aktualizacje oparte na apt są znacznie łatwiejsze. O ile nie ma konkretnego powodu do kompilacji ze źródła, podejście PPA jest o wiele łatwiejsze do utrzymania w produkcji.
Joe J
1

Użyłem następujących poleceń, aby uzyskać openssl dla nginx:

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

Wszystkie inne próby albo nie zadziałały, albo były niezgrabne.

Mam nadzieję, że to pomoże kolejnemu ...

skidadon
źródło
Pomógł mi zorientować się, że --with-openssl=flaga ma wskazywać pliki źródłowe . Jeśli chcesz ./configureutworzyć link do już skompilowanego / systemowego OpenSSL, którego nginx nie może znaleźć, zobacz ten post na forum : --with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV).
vesperto
Dzięki za dodatkowe odniesienie @vesperto
skidadon
0

Jeśli chcesz sprawdzić, czy libssl jest zainstalowany we właściwym miejscu, możesz wpisać, which openssla następnie ldd /path/to/openssl.


źródło
0

Nawet gdy OpenSSL jest już zainstalowany ( brew install openssl), konfiguracja sama sugeruje obejście, które działało dla mnie:

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

Pnemoniczny
źródło
Czy opcja --with-openssl=wskazująca na sklonowane repozytorium openssl github? Możesz rozważyć edytowanie odpowiedzi, aby to odzwierciedlić, ponieważ może to być mylące dla osób bez wystarczającego zrozumienia.
Jamie Lindsey,
tak, / GitHub / openssl / openssl to sklonowane repozytorium github.com/openssl/openssl.git
Pnemonic
0

Jeśli ktoś nadal napotyka problem z kompilacją nginx ze źródła z błędem związanym z plikiem pcre, skompiluj z atrybutem „--with-pcre”. Aby podać ścieżkę pcre, nie podawaj zainstalowanej ścieżki. Podaj ścieżkę oprogramowania pcre.

  1. Zainstaluj pcre za pomocą

./configure

robić

sudo make install

Następnie podaj ścieżkę do ścieżki źródłowej pcre.

./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

W moim przypadku,

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

Dziękuję Ci.

uczeń
źródło