编译完成之后需要新加模块:
在我们业务部署过程中,如果出现已经编译好的NGINX服务,因为业务需要添加新的工作模块的时候,如果卸载软件重新安装的方式是不被允许的,这样会导致用户访问出现异常中断的情况,因此可以通过重新编译的方式,然后将产生的NGINX启动文件再次复制到之前的启动进程上即可,具体配置实例如下:
因为业务需要,部署Prometheus进行业务监控,Prometheus监控需要使用nginx-module-vts模块,但是在之前的部署过程中没有安装,因此需要新添加安装该模块:
下载软件安装包
下载方式可以在GitHub上进行下载:
vts源码 https://github.com/vozlt/nginx-module-vts
exporter源码 https://github.com/hnlq715/nginx-vts-exporter
下载完成之后可以放置在指定的文件夹上,下载可以通过Windows方式或者是服务器上执行wget等方式下载,然后进行解压:
下载的文件夹为:nginx-module-vts-master.zip 执行解压命令:unzip nginx-module-vts-master.zip |
如果提示没有该命令的话 unzip可以使用yum方式安装即可
然后是使用命令查看已经安装的相关模块信息(每个安装的nginx服务的模块不同,以自己实际安装的模块为准)
[root@localhost objs]# nginx -V
Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.1.1d 10 Sep 2019
TLS SNI support enabled
configure arguments: --prefix=/usr/local/services/tengine-2.3.2 --user=www --group=www --with-http_ssl_module --with-http_lua_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-sha1=/usr --with-stream --with-openssl=/usr/local/services/src/openssl-1.1.1d --with-md5=/usr/local/services/src/md5 --with-pcre=/usr/local/services/src/pcre-8.42 --with-luajit-inc=/usr/local/services/include/luajit-2.1 --with-luajit-lib=/usr/local/services/lib --without-select_module --without-poll_module --without-http_userid_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_upstream_keepalive_module --add-module=modules/ngx_slab_stat --add-module=modules/ngx_http_reqstat_module --add-module=modules/ngx_http_upstream_* --add-module=../ngx_cache_purge-2.3
[root@localhost objs]#
然后执行的时候需要将已经安装的模块和需要安装的模块一起cp复制进行configure 操作:例如需要安装的
--add-module=/usr/local/services/src/nginx-module-vts-master
如果提示nginx命令不存在的话 是因为没有设置环境变量,执行设置环境变量即可:
[root@localhost prometheus-2.25.2]# cat /etc/profile.d/nginx.sh
export NGINX_HOME="/usr/local/services/tengine-2.3.2"
export PATH="$NGINX_HOME/sbin:$PATH"
[root@localhost prometheus-2.25.2]# source /etc/profile.d/nginx.sh
然后重新编译执行:进入到源文件目录下执行命令:
[root@localhost tengine-2.3.2]# pwd
/usr/local/services/src/tengine-2.3.2
[root@localhost tengine-2.3.2]#
./configure --prefix=/usr/local/services/tengine-2.3.2 --user=www --group=www --with-http_ssl_module --with-http_lua_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-sha1=/usr --with-stream --with-openssl=/usr/local/services/src/openssl-1.1.1d --with-md5=/usr/local/services/src/md5 --with-pcre=/usr/local/services/src/pcre-8.42 --with-luajit-inc=/usr/local/services/include/luajit-2.1 --with-luajit-lib=/usr/local/services/lib --without-select_module --without-poll_module --without-http_userid_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_upstream_keepalive_module --add-module=modules/ngx_slab_stat --add-module=modules/ngx_http_reqstat_module --add-module=modules/ngx_http_upstream_* --add-module=../ngx_cache_purge-2.3 --add-module=/usr/local/services/src/nginx-module-vts-master
#此处添加了--add-module=/usr/local/services/src/nginx-module-vts-master模块
编译完成之后,进行make操作,make完成之后即可,不需要make install
然后将安装源目录下的 ./objs/nginx复制到安装后的/nginx/sbin目录下(如果怕出错可以先将../sbin下的nginx备份)
相对路径为:
cp -f ./objs/nginx /usr/local/services/tengine-2.3.2/sbin/nginx
绝对路径为:
cp -f /usr/local/services/src/tengine-2.3.2/objs/nginx /usr/local/services/tengine-2.3.2/sbin/nginx
##添加-f 参数可以实现强制复制的模式
然后重启nginx即可,一般执行软重启即可 不需要进行restart中断式重启;
[root@localhost objs]# systemctl reload nginx.service
然后重新执行查看安装模块操作:
[root@localhost objs]# nginx -V
|