Не могу скомпилировать nginx с поддержкой SSL, OpenSSL не найден


19

Я пытаюсь скомпилировать nginx из исходного кода с включенным модулем SSL. Когда я запускаю эту команду:

./configure --with-http_ssl_module

он делает обычные проверки, чтобы убедиться, что все установлено правильно, а затем появляется следующее:

проверка на наличие библиотеки OpenSSL ... не найдена

./configure: error: для модулей SSL требуется библиотека OpenSSL. Вы можете либо не включать модули, либо устанавливать библиотеку OpenSSL в систему, либо создавать библиотеку OpenSSL статически из исходного кода с помощью nginx, используя параметр --with-openssl =.

Я точно знаю, что OpenSSL установлен, потому что когда openssl versionя получаюOpenSSL 1.0.1 14 Mar 2012

Так что я довольно озадачен. Я подумал, что, возможно, OpenSSL не находится в месте по умолчанию, поэтому nginx не может его найти, но я понятия не имею, где он находится, так как он был предустановлен на сервере. Как я могу узнать, где это?

Сервер работает под управлением Ubuntu 12.04 LTS.

Благодарю.


2
Если вы используете yum (CentOS | redhat | fedora), попробуйте установить openssl-devel, а затем попробуйте выполнить команду.
maverick3

Ответы:


29

Скорее всего, вы пропустили libssl-devпосылку.

Но почему бы не избавить себя от всех проблем и просто использовать PPA для nginx ?


Что такое PPA? Из чего я могу собрать людей, можно загружать пакеты для установки с помощью apt-get? Я подумал, что лучший способ убедиться, что я всегда получаю последнюю версию программного обеспечения, - это скомпилировать ее из источника с веб-сайта.
Джеймс Линтон

1
PPA - это личный архив пакетов. Как вы сказали, они должны распространять пакеты dpkg. Компиляция из исходного кода может дать вам самую новую версию, но это не всегда необходимо. Информацию для Ubuntu и PPA можно найти здесь: wiki.nginx.org/Install#Official_Debian.2FUbuntu_packages
Кристофер Перрин,

Информация на nginx wiki хороша. Это в конечном итоге приведет вас к PPA, который я связал. :)
Майкл Хэмптон

Хорошо, спасибо, я посмотрю на использование PPA в будущем. Но для этой проблемы установка libssl-devработала. :)
Джеймс Линтон

Nginx PPA - это путь, поскольку он предоставляет последний официальный двоичный файл Nginx через apt. Ubuntu обычно предоставляет версию Nginx несколько выпусков назад для целей поддержки, но используя Nginx PPA, вы можете получить последнюю версию от Nginx.org. Гораздо проще использовать этот подход по сравнению с компиляцией из исходного кода и отлично подходит для сценариев автоматической инициализации. Он держит вашу apt в вашей системе в курсе установленной версии Nginx, что значительно упрощает обновления на основе apt. Если нет конкретной причины для компиляции из исходного кода, подход PPA намного легче поддерживать в производстве.
Джо Дж.

1

Я использовал следующее, чтобы получить openssl для nginx:

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

Все остальные попытки либо не сработали, либо были неуклюжими.

Надеюсь, это поможет другому ...


Помог мне разобраться в --with-openssl=флаге, чтобы указывать на исходные файлы. Если вы хотите создать ссылку на уже скомпилированный / системный OpenSSL, который nginx не ./configureможет найти, смотрите это сообщение на форуме : --with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV).
Весперто

Спасибо за дополнительную ссылку @vesperto
skidadon

0

Если вы хотите проверить, что libssl установлен в нужном месте, вы можете набрать which opensslи затем ldd /path/to/openssl.


0

Даже когда OpenSSL уже установлен ( brew install openssl), сама конфигурация предлагает обходной путь, который работал для меня:

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


Опция --with-openssl=указывает на клонированный репозиторий openssl github? Вы можете отредактировать свой ответ, чтобы отразить это, поскольку это может ввести в заблуждение людей, не имеющих достаточного понимания.
Джейми Линдси

да, / GitHub / openssl / openssl - клонированное хранилище github.com/openssl/openssl.git
Pnemonic

0

Если кто-то все еще сталкивается с проблемой компиляции nginx из исходного кода с ошибкой, связанной с pcre, выполните компиляцию с атрибутом "--with-pcre". А для обеспечения пути pcre не указывайте установленный путь. Укажите путь к программному обеспечению pcre.

  1. Установите PCRE с

./configure

сделать

sudo сделать установку

Затем укажите путь к исходному файлу 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

В моем случае,

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

Спасибо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.