Неможливо компілювати 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 хороша. Це врешті-решт приведе вас до PPA, який я пов’язав. :)
Майкл Хемптон

Добре дякую, я буду розглядати використання ППА в майбутньому. Але для цієї проблеми встановлення libssl-devпрацювало. :)
Джеймс Лінтон

PPA Nginx - це шлях, оскільки він пропонує найновіший офіційний бінарний файл Nginx через apt. Ubuntu, як правило, надає версію Nginx кілька випусків назад для цілей підтримки, але, використовуючи PPA Nginx, ви можете отримати останню версію від Nginx.org. Набагато простіше використовувати цей підхід для компіляції з джерела та відмінно підходить для сценаріїв автоматизованого забезпечення. Він тримає ваш підхід у вашій системі про інстальовану в даний час версію Nginx, що значно полегшує оновлення на основі apt. Якщо немає конкретної причини для збирання з джерела, підхід АОП так простіше підтримувати у виробництві.
Джо J

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

Дякую за додаткову посилання @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 repo? Ви можете розглянути можливість редагування своєї відповіді, щоб відобразити це, оскільки це може заплутати людей без достатнього розуміння.
Джеймі Ліндсі

так, / GitHub / openssl / openssl є клонованим сховищем github.com/openssl/openssl.git
Pnemonic

0

Якщо хтось досі стикається з проблемою, компілюючи nginx з джерела з помилкою, пов’язаною з pcre, компілюйте з атрибутом "--with-pcre". А для забезпечення pcre шляху не вказуйте встановлений шлях. Забезпечити шлях програмного забезпечення pcre.

  1. Встановити pcre за допомогою

./ конфігурація

зробити

sudo make install

Потім вкажіть шлях до файлу джерела 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.