nginx的更新与安装插件是需要 configure 这个配置文件的,否则没法更新.
而configure这个文件只有从 http://nginx.org/ 官网上下载的linux版nginx源码中才会有,如果当前linux服务器上没有configure那么就无法更新
有时你会发现在linux上的nginx没有configure,此时要么是通过yum 安装要么还是通过编译nginx源码只是,他这个源码是通过在其他环境编译完成之后把nginx可运行的二进制文件和一些配置文件等丢到服务器上.
其中第二步的一些特性尤其重要,同时这里也是最坑的地方
更新步骤:
一: 切换到nginx可执行文件目录下,例如 nginx所在目录为 /usr/local/nginx
那么当前nginx可执行文件通常就在 /usr/local/nginx/sbin/nginx
cd /usr/local/nginx/sbin/nginx
然后键入 nginx -V 命令, 将该命令回显出的信息copy下来,一会更新的时候需要在当前配置信息的基础上添加你需要安装的新插件信息
nginx -V
ps: 更新一定要nginx原本配置信息的基础上更新,否则你就会发现nginx中原本安装的插件不见了
二,使用 configure命令(也就是前文提到的configure可执行文件) 将之前的nginx -V 命令回显出的配置原封不动的copy 到 ./configure 命令后面
然后添加上你需要新增的插件
假如当前nginx是默认配置安装,即在安装是没有指定任何参数
那么此时新增nginx的 sub_filter 插件 此时代码如下
./configure --prefix=/usr/local/nginx/nginx-1.16.1 --with-http_sub_module --add-module=/usr/local/nginx/ngx_http_substitutions_filter_module
其中
–prefix 指定的是当前nginx的安装路径 即conf的上一级目录
–with 告诉nginx此次要扩展的功能是哪个模块
–add 代表这次插件的本地路径,(插件需要从网上下载上传至nginx编译服务器上)
其中 如果你只指定 --add 那么就只是给nginx添加插件的代码,但是nginx无法识别当前功能, 如果只指定 --with 那么当前nginx可以识别出当前功能,但是缺少相应的程序代码, 所以二者必须同时指定
三 使用make 命令 将刚才配置好的 configure编译,编译完成之后会在 objs 目录下生产nginx 二进制可运行文件,替换掉sbin下面的nginx
make
cp -R /usr/local/nginx/sbin/nginx/objs/nginx /usr/local/nginx/sbin/nginx/sbin
ps: 如果在更新之前不确认是否缺少必要依赖 那么可以联网之后使用下面的命令补全必要依赖 例如 gcc之类的
yum -y install zip unzip gcc gcc-c++ automake autoconf libtool make glibc gd-devel pcre-devel libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel libevent libevent-devel
yum install pcre*