源碼下載
安裝wget并下載nginx源碼包上真, 去 http://nginx.org/download/ 可以找到歷史版本的包
[root@localhost ~]# yum install -y wget && wget http://nginx.org/download/nginx-1.17.9.tar.gz
新增用戶
groupadd www
useradd -g www www
安裝依賴環(huán)境
# pcre:rewrite模塊依賴赏壹,zlib:gzip模塊需要
[root@localhost ~]# yum install -y gcc pcre pcre-devel zlib zlib-devel
部分編譯參數(shù)說明
參數(shù) | 描述 |
---|---|
--prefix | 定義nginx安裝路徑 |
--sbin-path | 定義nginx可執(zhí)行文件路徑 |
--modules-path | nginx模塊路徑 |
--conf-path | nginx配置文件路徑 |
--error-log-path翅睛、--http-log-path | 錯誤和訪問日志路徑 |
--with-openssl | 定義編譯使用的openssl睹酌,默認(rèn)為系統(tǒng)自帶openssl |
--with-http_ssl_module | ssl模塊 |
開始編譯
[root@localhost ~]# ./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/usr/local/nginx/error.log \
--http-log-path=/usr/local/nginx/access.log \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--http-client-body-temp-path=/usr/local/nginx/client_temp \
--http-proxy-temp-path=/usr/local/nginx/proxy_temp \
--http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \
--http-scgi-temp-path=/usr/local/nginx/scgi_temp \
--user=www \
--group=www \
--with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module
上面的編譯是使用了系統(tǒng)默認(rèn)的openssl,如果想使用更高版本的openssl進(jìn)行編譯的話采盒「爰玻可以加上--with-openssl=openssl安裝路徑
來自定義。高版本的openssl安裝可以參考 這篇文章 .
--with-openssl
參數(shù)雖然可以指定 OpenSSL 路徑测蘑,但只支持 OpenSSL 的源代碼灌危,不支持已編譯好的 OpenSSL。每回更新 nginx 都要重新編譯 OpenSSL 很麻煩 碳胳。以下是解決方案
打開nginx源碼解壓目錄下的auto/lib/openssl/conf
,找到所有帶.openssl
的行
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
改成下面的樣子勇蝙,去掉.openssl/
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
進(jìn)行編譯
[root@localhost ~]# ./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/usr/local/nginx/error.log \
--http-log-path=/usr/local/nginx/access.log \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--http-client-body-temp-path=/usr/local/nginx/client_temp \
--http-proxy-temp-path=/usr/local/nginx/proxy_temp \
--http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \
--http-scgi-temp-path=/usr/local/nginx/scgi_temp \
--user=www \
--group=www \
--with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-openssl=/usr/local/openssl \
--with-stream_ssl_preread_module
安裝
[root@localhost ~]# make && make install
安裝完成后,檢查詳細(xì)信息
# /usr/sbin/nginx是編譯時--sbin-path定義的
[root@localhost ~]# /usr/sbin/nginx -V
總結(jié)
以上是nginx編譯安裝全過程挨约。編譯安裝相比yum費(fèi)時味混,但是可以很好的根據(jù)需求自行增加或去掉某些模塊,有高度的定制性诫惭。但是正式使用yum安裝的也能夠滿足需求翁锡,需要yum安裝的可以看這篇文章
參考
https://www.sinosky.org/compile-nginx-with-a-custom-openssl-library.html
https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source