Không thể biên dịch nginx với hỗ trợ SSL, không tìm thấy OpenSSL


19

Tôi đang cố gắng biên dịch nginx từ nguồn với mô-đun SSL được bật. Khi tôi chạy lệnh này:

./configure --with-http_ssl_module

nó kiểm tra thông thường để xem mọi thứ đã được cài đặt đúng chưa, và sau đó nó bật lên:

kiểm tra thư viện OpenSSL ... không tìm thấy

./cool: lỗi: Các mô-đun SSL yêu cầu thư viện OpenSSL. Bạn có thể không kích hoạt các mô-đun hoặc cài đặt thư viện OpenSSL vào hệ thống hoặc xây dựng thư viện OpenSSL tĩnh từ nguồn bằng nginx bằng cách sử dụng tùy chọn --with-openssl =.

Tôi biết rằng thực tế là OpenSSL đã được cài đặt, bởi vì khi openssl versiontôi nhận đượcOpenSSL 1.0.1 14 Mar 2012

Vì vậy, tôi khá bối rối. Tôi nghĩ có lẽ OpenSSL không được đặt ở vị trí mặc định của nó, đó là lý do tại sao nginx không thể tìm thấy nó, nhưng tôi không biết đây là nơi nào khi nó được cài đặt sẵn với máy chủ. Làm thế nào tôi có thể tìm ra nơi này là?

Máy chủ đang chạy Ubuntu 12.04 LTS.

Cảm ơn.


2
Đối với những người sử dụng yum (CentOS | redhat | fedora), hãy thử cài đặt openssl-devel và sau đó thử chạy lệnh.
maverick3

Câu trả lời:


29

Nhiều khả năng bạn đang thiếu libssl-devgói.

Nhưng tại sao không tự cứu mình khỏi mọi rắc rối và chỉ sử dụng PPA cho nginx ?


Chính xác thì PPA là gì? Từ những gì tôi có thể thu thập mọi người có thể tải lên các gói sẽ được cài đặt bằng cách sử dụng apt-get? Tôi nghĩ cách tốt nhất để đảm bảo tôi luôn nhận được phiên bản phần mềm mới nhất là biên dịch nó từ nguồn từ trang web.
James Linton

1
PPA là Lưu trữ gói cá nhân. Như bạn đã nói, họ sẽ phân phối các gói dpkg. Biên dịch từ nguồn có thể giúp bạn có phiên bản mới nhất nhưng điều này không phải lúc nào cũng cần thiết. Thông tin cho Ubuntu và PPA có thể được tìm thấy ở đây: wiki.nginx.org/Install#Official_Debian.2FUbfox_packages
Christopher Perrin

Thông tin trên wiki nginx là tốt. Cuối cùng nó sẽ dẫn bạn đến PPA mà tôi liên kết. :)
Michael Hampton

Được rồi, cảm ơn, tôi sẽ xem xét sử dụng PPA trong tương lai. Nhưng đối với vấn đề này, cài đặt libssl-devlàm việc. :)
James Linton

Nginx PPA là con đường để đi vì nó cung cấp nhị phân Nginx chính thức mới nhất thông qua apt. Ubuntu thường cung cấp một phiên bản Nginx một vài bản phát hành cho mục đích hỗ trợ, nhưng sử dụng Nginx PPA, bạn có thể nhận được bản phát hành mới nhất từ ​​Nginx.org. Dễ dàng hơn nhiều để sử dụng phương pháp này so với biên dịch từ nguồn & tuyệt vời cho các tập lệnh cung cấp tự động. Nó giúp apt của bạn trên hệ thống của bạn biết phiên bản Nginx hiện được cài đặt giúp việc cập nhật dựa trên apt dễ dàng hơn nhiều. Trừ khi có một lý do cụ thể để biên dịch từ nguồn, phương pháp PPA rất dễ duy trì trong sản xuất.
Joe J

1

Tôi đã sử dụng như sau để có được openssl cho nginx:

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

Tất cả các nỗ lực khác hoặc không hoạt động, hoặc là khó khăn.

Hy vọng điều này sẽ giúp ...


Giúp tôi tìm ra --with-openssl=cờ là để trỏ đến các tệp nguồn . Nếu bạn muốn liên kết với một OpenSSL đã được biên dịch / hệ thống mà nginx ./configurekhông thể tìm thấy, hãy xem bài đăng trên diễn đàn này : --with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV).
vesperto

Cảm ơn bạn đã tham khảo thêm @vesperto
skidadon

0

Trong trường hợp bạn muốn kiểm tra libssl được cài đặt đúng chỗ, bạn có thể gõ which opensslvà sau đó ldd /path/to/openssl.


0

Ngay cả khi OpenSSL đã được cài đặt ( brew install openssl), cấu hình chính nó gợi ý một cách giải quyết, hoạt động với tôi:

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


Là tùy chọn --with-openssl=chỉ vào một repo github nhân bản openssl? Bạn có thể xem xét chỉnh sửa câu trả lời của mình để phản ánh điều này vì nó có thể gây nhầm lẫn cho mọi người mà không hiểu biết đầy đủ.
Jamie Lindsey

có, / GitHub / openssl / openssl là một kho lưu trữ nhân bản của github.com/openssl/openssl.git
Pnemonic

0

Nếu bất cứ ai vẫn gặp phải vấn đề biên dịch nginx từ nguồn có lỗi liên quan đến pcre, hãy biên dịch với thuộc tính "--with-pcre". Và để cung cấp đường dẫn pcre, đừng cung cấp đường dẫn đã cài đặt. Cung cấp đường dẫn phần mềm pcre.

  1. Cài đặt pcre với

./mình

chế tạo

sudo thực hiện cài đặt

Sau đó, cung cấp đường dẫn của đường dẫn nguồn 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

Trong trường hợp của tôi,

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

Cảm ơn bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.