Tidak dapat mengkompilasi nginx dengan dukungan SSL, OpenSSL tidak ditemukan

19

Saya mencoba mengkompilasi nginx dari sumber dengan modul SSL diaktifkan. Ketika saya menjalankan perintah ini:

./configure --with-http_ssl_module

ia melakukan pengecekan seperti biasa untuk melihat apakah semuanya diinstal dengan benar, dan kemudian ini muncul:

memeriksa pustaka OpenSSL ... tidak ditemukan

./configure: error: Modul SSL memerlukan pustaka OpenSSL. Anda bisa tidak mengaktifkan modul, atau menginstal pustaka OpenSSL ke dalam sistem, atau membangun pustaka OpenSSL secara statis dari sumber dengan nginx dengan menggunakan opsi --with-openssl =.

Saya tahu fakta bahwa OpenSSL diinstal, karena ketika saya melakukannya openssl versionsaya dapatOpenSSL 1.0.1 14 Mar 2012

Jadi saya sangat bingung. Saya pikir mungkin OpenSSL tidak isntalled di lokasi default-nya, itulah sebabnya nginx tidak dapat menemukannya, tapi saya tidak tahu di mana ini karena ia datang pra-instal dengan server. Bagaimana saya bisa mengetahui di mana ini?

Server menjalankan Ubuntu 12.04 LTS.

Terima kasih.

James Linton
sumber
2
Untuk orang yang menggunakan yum (CentOS | redhat | fedora) coba instal openssl-devel dan kemudian coba jalankan perintah.
maverick3

Jawaban:

29

Kemungkinan besar Anda melewatkan libssl-devpaket itu.

Tapi mengapa tidak menyelamatkan diri dari semua masalah dan hanya menggunakan PPA untuk nginx ?

Michael Hampton
sumber
Apa sebenarnya PPA? Dari apa yang saya dapat kumpulkan orang dapat mengunggah paket untuk diinstal menggunakan apt-get? Saya pikir cara terbaik untuk memastikan saya selalu mendapatkan versi terbaru dari perangkat lunak adalah dengan mengkompilasinya dari sumber dari situs web.
James Linton
1
AKP adalah Arsip Paket Pribadi. Seperti yang Anda katakan, mereka akan mendistribusikan paket dpkg. Kompilasi dari sumber mungkin membuat Anda mendapatkan versi terbaru, tetapi ini tidak selalu diperlukan. Informasi untuk Ubuntu dan PPA dapat ditemukan di sini: wiki.nginx.org/Instal#Official_Debian.2FUbuntu_packages
Christopher Perrin
Info tentang nginx wiki bagus. Ini pada akhirnya akan mengarahkan Anda ke PPA yang saya tautkan. :)
Michael Hampton
Baiklah terima kasih, saya akan melihat menggunakan PPA di masa depan. Tetapi untuk masalah ini, pemasangan libssl-devbekerja. :)
James Linton
Nginx PPA adalah cara untuk maju karena menyediakan biner Nginx resmi terbaru melalui apt. Ubuntu biasanya menyediakan versi Nginx beberapa rilis kembali untuk tujuan dukungan, tetapi menggunakan Nginx PPA, Anda bisa mendapatkan rilis terbaru dari Nginx.org. Jauh lebih mudah untuk menggunakan pendekatan ini daripada kompilasi dari sumber & bagus untuk skrip penyediaan otomatis. Itu membuat apt Anda pada sistem Anda menyadari versi Nginx yang diinstal saat ini membuat pembaruan berbasis apt jauh lebih mudah. Kecuali ada alasan khusus untuk mengkompilasi dari sumber, pendekatan PPA jauh lebih mudah untuk dipertahankan dalam produksi.
Joe J
1

Saya menggunakan yang berikut ini untuk mendapatkan openssl untuk nginx:

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

Semua upaya lain tidak berhasil, atau kikuk.

Semoga ini bisa membantu ...

skidadon
sumber
Bantu saya mengetahui tanda --with-openssl=bendera untuk menunjuk ke file sumber . Jika Anda ingin menautkan OpenSSL yang sudah dikompilasi / sistem yang nginx's ./configuretidak dapat menemukan, lihat posting forum ini : --with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV).
vesperto
Terima kasih atas referensi tambahan @vesperto
skidadon
0

Jika Anda ingin memeriksa apakah libssl diinstal di tempat yang tepat, Anda bisa mengetik which openssldan kemudian ldd /path/to/openssl.


sumber
0

Bahkan ketika OpenSSL sudah diinstal ( brew install openssl), konfigurasikan sendiri menyarankan solusi, yang bekerja untuk saya:

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

Pnemonik
sumber
Apakah opsi --with-openssl=menunjuk ke repo openssl github yang dikloning? Anda mungkin mempertimbangkan untuk mengedit jawaban Anda untuk mencerminkan hal ini karena dapat membingungkan bagi orang-orang tanpa pemahaman yang memadai.
Jamie Lindsey
ya, / GitHub / openssl / openssl adalah repositori hasil kloning dari github.com/openssl/openssl.git
Pnemonic
0

Jika ada yang masih menghadapi masalah mengkompilasi nginx dari sumber dengan kesalahan terkait pcre, kompilasi dengan atribut "--with-pcre". Dan untuk menyediakan jalur pcre, jangan berikan jalur yang diinstal. Menyediakan jalur perangkat lunak PCre.

  1. Instal pcre dengan

./configure

membuat

sudo lakukan instal

Kemudian, berikan jalur jalur sumber 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

Dalam kasus saya,

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

Terima kasih.

pelajar
sumber