@yulongsun
2018-07-26T02:45:04.000000Z
字数 1818
阅读 948
网关技术调研
1、下载:
https://nginx.org/en/download.html
2.解压
tar -xvzf nginx-1.14.0.tar.gz
3.编译
./configure --prefix=/opt/nginx
--prefix 用于指定nginx编译后的安装目录
--add-module 为添加的第三方模块
--with..._module 表示启用的nginx模块
以扩展nginx_upstream_check_module为例。
nginx源码位置:/root/nginx-1.14.0
nginx_upstream_check_module位置:/root/nginx-1.14.0/nginx_upstream_check_module-master
1、下载补丁包https://github.com/yaoweibin/nginx_upstream_check_module
2、在nginx目录下执行
[root@node4 /]# patch -p1 </root/nginx-1.14.0/nginx_upstream_check_module-master/check_1.12.1+.patch
3、带上新模块重新编译
./configure --prefix=/opt/nginx --add-module=/root/nginx-1.14.0/nginx_upstream_check_module-master
make
注意是make,不是make install,否则会覆盖安装
4、平滑重启
编译完成后会在objs目录下生成新的nginx二进制文件。
5、替换脚本
cp /root/nginx-1.14.0/objs/nginx /opt/nginx/sbin/nginx
nginx -s reload
遇到的问题:
-p0 选项要从当前目录查找目的文件(夹)
-p1 选项要忽略掉第一层目录,从当前目录开始查找。
在这里以实例说明:
old/modules/pcitable
如果使用参数-p0,那就表示从当前目录找一个叫做old的文件夹,在它下面寻找modules下的pcitable文件来执行patch操作。
如果使用参数-p1,那就表示忽略第一层目录(即不管old),从当前目录寻找modules的文件夹,在它下面找pcitable。这样的前提是当前目录必须为modules所在的目录。
参考资料:
1. https://zhangge.net/4856.html