Nginx动态编译新的模块

开始动手

打算给电脑上的nginx添加一个当时没有编译安装的echo-nginx-module模块,这是一个第三方模块,要知道nginx要添加模块是需要重新编译的,这一点跟apache不同,apache是在配置文件里引用.so文件的。

首先先nginx -V,查看一下nginx已经编译的模块都有啥,如图:
akb48

于是我就git clone https://github.com/openresty/echo-nginx-module,但是发现竟然告诉我“git: command not found”。oh shit,原来这台nginx实验机器压根就没有装过git啊!而yum源里的软件基本上已经过时的太久了,就拿git来说吧,使用yum info git看到的版本是1.8.3.1。但是在https://github.com/git/git/releases 里可以看到,git的版本现在已经丧心病狂的到达了2.16的版本了。
akb48

那么我们先安装git!

通过yum install curl-devel expat-devel gettext-devel openssl-devel zlib-develyum install gcc perl-ExtUtils-MakeMaker来安装依赖库。wget https://github.com/git/git/archive/v2.16.0-rc0.tar.gz来下载2.16的git保存到centos里。tar -xzvf v2.9.2.tar.gz -C /目标目录/,然后在目标目录里面执行make prefix=/usr/local/git allmake prefix=/usr/local/git install,编译过程可能会比较长,请耐心等待。

编译结束之后,echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc,把git添加到环境变量,再source /etc/bashrc让它实时生效,最后再一次看看git --version,大功告成!
akb48

编译新模块

git搞定了之后,重新git clone https://github.com/openresty/echo-nginx-module,然后在nginx的configure文件夹里面,把echo-nginx-module模块添加上。命令如下:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/root/pcre-8.41 --with-http_v2_module --add-module=/root/echo-nginx-module-0.61,我这里还附赠了一个“http_v2_module”。

configure完毕之后,去make一下就可以了,不要轻易make install,不然就是重新安装了。原来的nginx.conf等配置都没了。

养成替换nginx二进制文件的好习惯,如下:

1
2
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp nginx编译目录/objs/nginx /usr/local/nginx/sbin/

然后再打开看一下nginx -V
akb48

-------------This article is over!Thanks for reading!-------------
感谢您请我喝咖啡!(o´ω`o)
0%