銀河麒麟系統(tǒng)openssl-devel組件缺失環(huán)境 Nginx 離線編譯安裝步驟(自定義 OpenSSL 目錄)
1, 準(zhǔn)備工作
下載 Nginx 源碼:
cd ~ wget http://nginx.org/download/nginx-1.28.1.tar.gz tar xf nginx-1.28.1.tar.gz
下載 OpenSSL 源碼:
cd ~ wget https://www.openssl.org/source/openssl-1.1.1f.tar.gz tar xf openssl-1.1.1f.tar.gz
假設(shè)解壓目錄:
/root/nginx-1.28.1 /root/openssl-1.1.1f
確保系統(tǒng)已安裝依賴工具(gcc、make、pcre2、zlib)
gcc --version make --version rpm -q pcre2 zlib zlib-devel
2, 編譯 OpenSSL(為 Nginx 靜態(tài)鏈接使用)
進入 OpenSSL 源碼目錄:
cd /root/openssl-1.1.1f
編譯并安裝到臨時目錄:
# 配置為靜態(tài)編譯,不安裝共享庫 ./config no-shared no-threads --prefix=/root/openssl-install make -j$(nproc) make install_sw
完成后,目錄結(jié)構(gòu)示例:
/data/xxx/openssl-install/include/openssl/*.h /data/xxx/openssl-install/lib/libssl.a /data/xxx/openssl-install/lib/libcrypto.a
3,編譯 Nginx(指定 OpenSSL 源碼目錄)
進入 Nginx 源碼目錄:
cd /root/nginx-1.28.1
運行 configure:
./configure \ --prefix=/etc/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-pcre \ --with-zlib=/usr \ --with-openssl=/root/openssl-1.1.1f
--with-openssl=<路徑>:指定自定義 OpenSSL 源碼目錄--with-http_ssl_module:啟用 SSL 模塊--with-http_v2_module:啟用 HTTP/2 模塊
4, 編譯
make -j$(nproc) make install
make install會把 Nginx 安裝到你指定的 prefixSSL 模塊靜態(tài)鏈接了自定義 OpenSSL,不依賴系統(tǒng)庫
5, 創(chuàng)建運行用戶(可選)
# 只創(chuàng)建 nginx 用戶,不創(chuàng)建組 useradd -r -s /sbin/nologin nginx
確保日志目錄可寫:
chown -R nginx:nginx /etc/nginx/logs
6, 測試配置
/etc/nginx/sbin/nginx -t
成功輸出:
nginx: configuration file /etc/nginx/conf/nginx.conf syntax is ok
7, 啟動 Nginx
/etc/nginx/sbin/nginx
查看進程:
ps -ef | grep nginx
測試 HTTPS:
curl -vk https://127.0.0.1
8, 清理臨時目錄(可選)
編譯完成后,可以刪除 OpenSSL 源碼和臨時安裝目錄:
rm -rf /root/openssl-1.1.1f rm -rf /root/openssl-install
因為 OpenSSL 已經(jīng)被靜態(tài)編譯到 Nginx,運行不再依賴源碼
? 小結(jié)
核心思路:用 Nginx 自帶
--with-openssl指定源碼目錄,靜態(tài)編譯 SSL,繞過系統(tǒng)依賴優(yōu)點:
離線環(huán)境可行
不破壞系統(tǒng)現(xiàn)有 OpenSSL
可控制 OpenSSL 版本
注意事項:
如果要使用國密算法,需要使用定制 OpenSSL
日志和工作目錄必須可寫,否則啟動失敗