No se puede compilar nginx con soporte SSL, no se encuentra OpenSSL

19

Estoy tratando de compilar nginx desde la fuente con el módulo SSL habilitado. Cuando ejecuto este comando:

./configure --with-http_ssl_module

realiza sus comprobaciones habituales para ver si todo está instalado correctamente, y luego aparece esto:

comprobando la biblioteca OpenSSL ... no encontrado

./configure: error: los módulos SSL requieren la biblioteca OpenSSL. No puede habilitar los módulos, o instalar la biblioteca OpenSSL en el sistema, o construir la biblioteca OpenSSL estáticamente desde el origen con nginx usando la opción --with-openssl =.

Sé a ciencia cierta que OpenSSL está instalado, porque cuando lo hago openssl versionme saleOpenSSL 1.0.1 14 Mar 2012

Así que estoy bastante perplejo. Pensé que tal vez OpenSSL no está instalado en su ubicación predeterminada, por lo que nginx no puede encontrarlo, pero no tengo idea de dónde está, ya que viene preinstalado con el servidor. ¿Cómo puedo saber dónde está esto?

El servidor ejecuta Ubuntu 12.04 LTS.

Gracias.

James Linton
fuente
2
Para las personas que usan yum (CentOS | redhat | fedora) intente instalar openssl-devel y luego ejecute el comando.
maverick3

Respuestas:

29

Lo más probable es que te falte el libssl-devpaquete.

Pero, ¿por qué no ahorrarse todos los problemas y simplemente usar un PPA para nginx ?

Michael Hampton
fuente
¿Qué son exactamente los PPA? ¿De lo que puedo deducir, las personas pueden cargar paquetes para instalarlos apt-get? Pensé que la mejor manera de asegurarme de que siempre obtenía la última versión del software era compilarlo desde la fuente del sitio web.
James Linton
1
Los PPA son archivos de paquetes personales. Como dijiste, son para distribuir paquetes dpkg. Compilar desde la fuente puede obtener la versión más nueva, pero esto no siempre es necesario. Puede encontrar información sobre Ubuntu y el PPA aquí: wiki.nginx.org/Install#Official_Debian.2FUbuntu_packages
Christopher Perrin
La información en el wiki de nginx es buena. Eventualmente te llevará al PPA que vinculé. :)
Michael Hampton
Muy bien, gracias, buscaré usar PPA en el futuro. Pero para este problema, la instalación libssl-devfuncionó. :)
James Linton
El Nginx PPA es el camino a seguir, ya que proporciona el último binario oficial de Nginx a través de apt. Ubuntu generalmente proporciona una versión de Nginx con algunos lanzamientos para fines de soporte, pero con el PPA de Nginx, puede obtener la última versión de Nginx.org. Es mucho más fácil usar este enfoque que compilar desde la fuente y es excelente para scripts de aprovisionamiento automatizado. Mantiene su apt en su sistema al tanto de la versión de Nginx actualmente instalada, lo que facilita mucho las actualizaciones basadas en apt. A menos que haya una razón específica para compilar desde la fuente, el enfoque PPA es mucho más fácil de mantener en la producción.
Joe J
1

Usé lo siguiente para obtener openssl para nginx:

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

Todos los demás intentos no funcionaron o fueron torpes.

Espero que esto ayude a otro ...

skidadon
fuente
Me ayudó a descubrir que la --with-openssl=bandera es señalar los archivos de origen . Si desea vincular contra un OpenSSL ya compilado / sistema que nginx ./configureno puede encontrar, vea esta publicación del foro : --with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV).
vesperto
Gracias por la referencia adicional @vesperto
skidadon
0

En caso de que desee verificar que libssl esté instalado en el lugar correcto, puede escribir which openssl y luego ldd /path/to/openssl.


fuente
0

Incluso cuando OpenSSL ya está instalado ( brew install openssl), configurarlo sugiere una solución alternativa, que funcionó para mí:

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

Neumonía
fuente
¿La opción --with-openssl=apunta a un repositorio clonado de openssl github? Puede considerar editar su respuesta para reflejar esto, ya que podría ser confuso para las personas sin una comprensión suficiente.
Jamie Lindsey
sí, / GitHub / openssl / openssl es un repositorio clonado de github.com/openssl/openssl.git
Pnemonic
0

Si alguien aún tiene problemas compilando nginx desde la fuente con el error relacionado con pcre, compile con el atributo "--with-pcre". Y para proporcionar la ruta pcre, no proporcione la ruta instalada. Proporcionar ruta de software pcre.

  1. Instalar pcre con

./configure

hacer

sudo make install

Luego, proporcione la ruta de la fuente de 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

En mi caso,

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

Gracias.

aprendiz
fuente