Nginx 1.7.4 + LibreSSL

Maxim Dounin mdounin at mdounin.ru
Wed Aug 27 01:50:35 UTC 2014


Hello!

On Tue, Aug 26, 2014 at 08:36:30PM -0400, Sarymian wrote:

> Ну и опять же...
> При первом варианте:
> ./configure --user=www-data --group=www-data
> --with-pcre=/home/install/pcre-8.35/ --with-zlib=/home/install/zlib-1.2.8/
> --with-http_ssl_module --with-cc-opt="-I
> `pwd`/../libressl-2.0.5/.libressl/include" --with-ld-opt="-L
> `pwd`/../libressl-2.0.5/.libressl/lib" --without-http_geo_module
> --without-http_proxy_module --without-http_ssi_module
> --without-http_upstream_ip_hash_module --with-http_gzip_static_module
> --with-http_stub_status_module --with-ipv6
> --error-log-path=/mnt/log/nginx/error.log --without-mail_pop3_module
> --without-mail_imap_module --without-mail_smtp_module
> --http-log-path=/mnt/log/nginx/access.log
> --http-client-body-temp-path=/mnt/log/nginx/http-temp/client_body_temp
> --http-proxy-temp-path=/mnt/log/nginx/http-temp/proxy_temp
> --http-fastcgi-temp-path=/mnt/log/nginx/http-temp/fastcgi_temp
> --http-uwsgi-temp-path=/mnt/log/nginx/http-temp/uwsgi_temp
> --http-scgi-temp-path=/mnt/log/nginx/http-temp/scgi_temp
> 
> Ошибку дает что не может найти OpenSSL (хотя make && make install сделал).
> ./configure: error: SSL modules require the OpenSSL library.
> You can either do not enable the modules, or install the OpenSSL library
> into the system, or build the OpenSSL library statically from the source
> with nginx by using --with-openssl=<path> option.

Вероятно, вы забыли таки собрать и установить по указанному пути 
LibreSSL.  После "./configure ..." имело смысл также запустить 
make и make install (а перед - почистить всё).

> --with-openssl= уже задавал и как "`pwd`/../libressl-2.0.5/" и как

Как уж говорилось ранее, параметр --with-openssl задавать не надо, 
если вы хотите собирать nginx с LibreSSL.

[...]

> ./configure --user=www-data --group=www-data
> --with-pcre=/home/install/pcre-8.35/ --with-zlib=/home/install/zlib-1.2.8/
> --with-http_ssl_module --with-cc-opt="-I
> /home/install/libressl-2.0.5/include"
> --with-ld-opt="-Wl,-rpath=/home/install/libressl-2.0.5/ssl/.libs"
> --without-http_geo_module --without-http_proxy_module
> --without-http_ssi_module --without-http_upstream_ip_hash_module
> --with-http_gzip_static_module --with-http_stub_status_module --with-ipv6
> --error-log-path=/mnt/log/nginx/error.log --without-mail_pop3_module
> --without-mail_imap_module --without-mail_smtp_module
> --http-log-path=/mnt/log/nginx/access.log
> --http-client-body-temp-path=/mnt/log/nginx/http-temp/client_body_temp
> --http-proxy-temp-path=/mnt/log/nginx/http-temp/proxy_temp
> --http-fastcgi-temp-path=/mnt/log/nginx/http-temp/fastcgi_temp
> --http-uwsgi-temp-path=/mnt/log/nginx/http-temp/uwsgi_temp
> --http-scgi-temp-path=/mnt/log/nginx/http-temp/scgi_temp
> 
> make и make install прошли.
> 
> root at debian:/home/install/nginx-1.7.4# /usr/local/nginx/sbin/nginx -v
> /usr/local/nginx/sbin/nginx: error while loading shared libraries:
> libssl.so.27: cannot open shared object file: No such file or directory

Вы забыли -L /path/to/libs в --with-ld-opt.  При этом, судя по 
всему, в /home/install/libressl-2.0.5/ssl/.libs библиотеки нет, и 
rpath соответственно бесполезен, но nginx нашёл библиотеку в 
/usr/local/lib и собрался с ней.  Что возвращает нас к проблеме 
загрузки динамических библиотек из нестандартного для вашей 
операционной системы пути, куда вы поставили LibreSSL.

> Тут:
> nano /etc/ld.so.conf.d/libc.conf
> 
> Говориться смотреть библиотеки в /usr/local/lib
> 
> ls /usr/local/lib
> libcrypto.a  libcrypto.la  libcrypto.so  libcrypto.so.30 
> libcrypto.so.30.0.0  libssl.a  libssl.la  libssl.so  libssl.so.27 
> libssl.so.27.0.0  pkgconfig
> 
> ldd /usr/local/nginx/sbin/nginx
>         linux-vdso.so.1 =>  (0x00007fffbe3ff000)
>         libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
> (0x00007f755ee41000)
>         libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1
> (0x00007f755ec0a000)
>         libssl.so.27 => not found
>         libcrypto.so.30 => not found
>         libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f755ea05000)
>         libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f755e679000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007f755f063000)
> 
> Если я раньше хоть что-то и понимал, то сейчас я в упор нихрена не понимаю
> что творится...

Вы не запустили ldconfig после редактирования конфигов ld.so.conf, 
соответственно изменения не отразились на работе ld.so.  Судя по 
последнему письму, вы это для себя уже открыли, но не поняли.

> Кто нибудь вообще в принципе пробовал собрать с LibreSSL или объявили
> возможность сборки "в принципе"?

И даже исправляли то, что не собиралось.

> Простите, я не хочу ни кого обижать или оскорблять, но все данным советы
> похожу "а попробуйте так, может заработает" - а точных описаний как сделать
> нет.

Проблема, в первую очередь, в том, что вы, судя по всему, 
пытатесь просто делать cut-n-paste того, что вам пишут, не вникая 
в суть.  Здесь же по умолчанию предполагается, что люди знакомы с 
предметной областью и осмысляют написанное.  Подобное различие 
подходов приводит к множеству глупых ошибок - как из-за 
вашей собственной невнимательности, так и из-за того, что описания 
порой неполны, а иногда и с опечатками.  Дополнительной остоты 
проблеме добавляет тот факт, что вы не поделились с 
общественностью используемой операционной системой (хотя все и 
догадались, что имеется в виду какая-то из вариаций Linux'а).

Что до "точных описаний как сделать", то наиболее популярное 
доступно тут:

http://button.dekel.ru/

;)

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru