一、簡(jiǎn)要說(shuō)明
當(dāng)編譯完成后的Nginx需要添加新的模塊時(shí),我們需要添加該模塊重新編譯。
比如我這里的需求是:編譯好Nginx后,我需要添加--with-http_v2_module --with-stream模塊
所有步驟完成之后,/usr/local/nginx/sbin/nginx -s reload 有可能不生效
最好重啟下,Nginx /usr/local/nginx/sbin/nginx -s restart
二、添加步驟
1、查看現(xiàn)有Nginx的安裝版本和已編譯的參數(shù)
# 進(jìn)入Nginx的安裝目錄 $ cd /usr/local/nginx/sbin # 查看現(xiàn)有Nginx的版本和已編譯的參數(shù) $ ./nginx -V
2、在官方下載相對(duì)應(yīng)的版本
https://nginx.org/en/download.html
?3、帶上新模塊重新編譯
# 進(jìn)入剛下載解壓出來(lái)的Nginx安裝目錄 $ cd /data/soft/nginx-1.20.1 # 帶上新模塊重新編譯 $ ./configure --prefix=/usr/local/nginx/ --sbin-path=/usr/local/nginx/sbin/ --with-http_ssl_module --with-http_v2_module --with-stream --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp --http-client-body-temp-path=/usr/local/nginx/client_body_temp --http-proxy-temp-path=/usr/local/nginx/proxy_temp --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp # 編譯 注意:這里只有make,一定不要手賤順手執(zhí)行了make install,不然會(huì)覆蓋安裝的 $ make
三、平滑重啟
上一步執(zhí)行完成后,會(huì)在當(dāng)前目錄下生成objs目錄,其中的nginx文件即為新的二進(jìn)制文件
# 進(jìn)入Nginx的原安裝目錄 $ cd /usr/local/nginx/sbin # 備份原Nginx運(yùn)行腳本文件 $ cp -rf nginx nginx_bak
2、替換nginx二進(jìn)制文件
$ cp -f /data/soft/nginx-1.20.1/objs/nginx /usr/local/nginx/sbin/nginx
3、正確性檢查
$ /usr/local/nginx/sbin/nginx -t
4、重新Reload Nginx
$ /usr/local/nginx/sbin/nginx -s reload
5、查看最終編譯的新模塊
$ /usr/local/nginx/sbin/nginx -V
需要添加--with-http_v2_module --with-stream模塊已成功加上
6、重新加載Nginx
$ /usr/local/nginx/sbin/nginx -s reload
特別注意:重新編譯了Nginx,只是/usr/local/nginx/sbin/nginx -s reload 新增加模塊不會(huì)生效,但Nginx新增的配不會(huì)生效。這個(gè)折騰了很久,一直以為配置問(wèn)題。如果不生效,確保不想要業(yè)務(wù)的情況下,可以把一臺(tái)Nginx節(jié)點(diǎn)下線,使用 /usr/local/nginx/sbin/nginx stop停止后,再重新啟動(dòng)Nginx。
評(píng)論