已安装的nginx添加第三方模块

nginx添加网上很多动态的第三方模块教程,都是在讲./configure后替换nginx执行文件,今天我尝试以一波他们的方法没有成功,记录下我的操作。

环境和版本:centos7 niginx1.16

前提,NG想要动态的可扩展第三方模块必须要编译安装才行,所以yum安装的洗洗睡吧

编译安装很简单,在ng官方下载源码解压后,进入文件夹第一层直接运行:

./configure --prefix=/data/nginx

这是初始化NG的安装目录,后面指定的是NG安装目录,其实这句命令也是后期加模块的命令,比如这次我加的模块执行的命令是:

./configure --prefix=/data/nginx --add-module=../ngrtmp

后面会单独解释此命令。

在初始化完NG后,直接make&&make install即可安装NG。

启动NG是在安装的努力下sbin目录中的nginx二进制文件,./nginx即可启动

 

在二进制安装完NG后想要扩展NG模块怎么办,比如这次我扩展添加一个ng的stmp模块,现在git上下载了stmp模块源码,解压后改名为ngstmp文件夹

添加模块我们需要在ng的二进制启动文件中添加模块信息,之后重启NG二进制文件就能够调用里面的第三方模块了,如何在已经编译好的二进制文件中添加新模块信息?只能重新初始化NG,产生一个新的ng二进制文件,然后替换掉原有的二进制启动文件。注意:是不能在原有NG二进制文件中直接添加的哦。

所以有了以下命令:

./configure --prefix=/data/nginx --add-module=../ngrtmp

初始化一个新的二进制文件并在文件中添加第三方模块信息,--add-module就是添加命令,指向第三方模块位置。由于这里只是初始化NG源代码,并没有安装,所以并不会影响已经安装启动的NG应用。新的NG二进制启动文件在NG源码文件夹的OBJS目录下。直接把这个nginx二进制文件替换掉安装文件目录下sbin目录中的原nginx二进制文件即可。这里网上说不能make和make install操作,否则会覆盖安装。但是,我却用的make 和make install,原因如下:

 

按照网上的操作,初始化后就会有一个新的nginx二进制文件产生,然而我./configure后并没有产生新的nginx。原因猜测可能如下,并没有去证实:

我第一次安装ng很久了,里面的原始ng的源码已经找不到了,所以新的初始化源码是从官方重新下载的一份进行编译。虽然版本相同,不知道会不会是这个原因产生了我./configure后没有新nginx产生。正是因为如此,所以我直接make 和make install准备覆盖原版本,然而当我make完后,发现原版本的config并没有被覆盖掉,内容也是和原版本一样的,原sbin目录下的nginx二进制文件被自动改名为nginx.old,也并不是覆盖的形式。所以我认为只要是版本相同的NG,同样可以make编译的形式安装添加第三方模块。


注意事项:在make之前我是关闭了在运行的老NG线程。执行新的初始化之前,需要带上老的初始化信息,在sbin目录下./nginx -V,会显示老的./configure信息,新的初始化,需要带上这些老的信息再添加 add参数添加第三方模块。

你可能感兴趣的:(nginx)