Impossible de compiler nginx avec le support SSL, OpenSSL introuvable

19

J'essaie de compiler nginx à partir de la source avec le module SSL activé. Lorsque j'exécute cette commande:

./configure --with-http_ssl_module

il fait ses vérifications habituelles pour voir si tout est installé correctement, puis cela apparaît:

vérification de la bibliothèque OpenSSL ... introuvable

./configure: erreur: les modules SSL nécessitent la bibliothèque OpenSSL. Vous pouvez soit ne pas activer les modules, soit installer la bibliothèque OpenSSL dans le système, soit créer la bibliothèque OpenSSL de manière statique à partir de la source avec nginx en utilisant l'option --with-openssl =.

Je sais pertinemment qu'OpenSSL est installé, car quand je le fais, openssl versionje reçoisOpenSSL 1.0.1 14 Mar 2012

Je suis donc assez perplexe. Je pensais que peut-être OpenSSL n'était pas installé à son emplacement par défaut, c'est pourquoi nginx ne peut pas le trouver, mais je n'ai aucune idée de l'endroit où il se trouve car il est pré-installé avec le serveur. Comment puis-je savoir où cela se trouve?

Le serveur exécute Ubuntu 12.04 LTS.

Merci.

James Linton
la source
2
Pour les personnes utilisant yum (CentOS | redhat | fedora), essayez d'installer openssl-devel, puis essayez d'exécuter la commande.
maverick3

Réponses:

29

Vous manquez probablement le libssl-devpaquet.

Mais pourquoi ne pas vous épargner tous les ennuis et simplement utiliser un PPA pour nginx ?

Michael Hampton
la source
Que sont exactement les PPA? D'après ce que je peux recueillir, les gens peuvent télécharger des packages à installer en utilisant apt-get? J'ai pensé que la meilleure façon de m'assurer d'obtenir toujours la dernière version du logiciel était de la compiler à partir de la source du site Web.
James Linton
1
Les AAE sont des archives de colis personnelles. Comme vous l'avez dit, ils doivent distribuer les packages dpkg. La compilation à partir des sources peut vous procurer la dernière version mais ce n'est pas toujours nécessaire. Des informations sur Ubuntu et le PPA peuvent être trouvées ici: wiki.nginx.org/Install#Official_Debian.2FUbuntu_packages
Christopher Perrin
Les informations sur le wiki nginx sont bonnes. Cela vous mènera éventuellement au PPA que j'ai lié. :)
Michael Hampton
Très bien merci, je vais étudier l'utilisation des PPA à l'avenir. Mais pour ce problème, l'installation a libssl-devfonctionné. :)
James Linton
Le Nginx PPA est la voie à suivre car il fournit le dernier binaire Nginx officiel via apt. Ubuntu fournit généralement une version Nginx quelques versions à des fins de support, mais en utilisant le PPA Nginx, vous pouvez obtenir la dernière version de Nginx.org. Beaucoup plus facile à utiliser cette approche que la compilation à partir de la source et idéal pour les scripts de provisionnement automatisé. Il garde votre apt sur votre système au courant de la version de Nginx actuellement installée, ce qui rend les mises à jour basées sur apt beaucoup plus faciles. À moins qu'il n'y ait une raison spécifique pour compiler à partir de la source, l'approche PPA est tellement plus facile à maintenir en production.
Joe J
1

J'ai utilisé ce qui suit pour obtenir openssl pour nginx:

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

Toutes les autres tentatives n'ont pas fonctionné ou ont été maladroites.

J'espère que cela aide un autre ...

skidadon
la source
M'a aidé à comprendre que le --with-openssl=drapeau est de pointer vers les fichiers source . Si vous souhaitez établir un lien avec un OpenSSL / système déjà compilé que nginx ne ./configurepeut pas trouver, consultez ce message sur le forum : --with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV).
vesperto
Merci pour la référence supplémentaire @vesperto
skidadon
0

Si vous voulez vérifier que libssl est installé au bon endroit, vous pouvez taper which opensslpuis ldd /path/to/openssl.


la source
0

Même lorsque OpenSSL est déjà installé ( brew install openssl), la configuration elle-même suggère une solution de contournement, qui a fonctionné pour moi:

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

Pnémonique
la source
L'option --with-openssl=pointe-t-elle sur un dépôt github OpenSL cloné? Vous pourriez envisager de modifier votre réponse pour refléter cela, car cela pourrait être source de confusion pour les personnes sans compréhension suffisante.
Jamie Lindsey
oui, / GitHub / openssl / openssl est un référentiel cloné de github.com/openssl/openssl.git
Pnemonic
0

Si quelqu'un est toujours confronté à un problème de compilation de nginx à partir de la source avec l'erreur liée à pcre, compilez avec l'attribut "--with-pcre". Et pour fournir un chemin d'accès pcre, ne fournissez pas de chemin installé. Fournissez le chemin du logiciel pcre.

  1. Installer pcre avec

./configure

faire

sudo make install

Ensuite, indiquez le chemin du chemin source 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

Dans mon cas,

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

Je vous remercie.

apprenant
la source