nginx安装成功后,发现有一些其他模块没有编译进去,或者想额外添加一些模块,这时候就要重新编译nginx。

首先,查看之前编译的一些参数,比如:

1

2

3

4

5
[root@lmode nginx]# /usr/local/nginx/nginx -V
nginx version: nginx/1.4.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=/usr/local/src/lnmp/pcre-8.33 --with-zlib=/usr/local/src/lnmp/zlib-1.2.8 --with-openssl=/usr/local/src/lnmp/openssl-1.0.1e 

比如我现在要新增–with-http_ssl_module 、–with-http_gzip_static_module 这些模块参数,那么我只要把这些参数添加进去然后重新编译即可,需要注意的是原先编译过的参数也要加进来。过程如下:

进入nginx源码包

1
[root@lmode nginx]# cd /usr/local/src/nginx-1.4.7

将要编译的参数重新添加到后面

1
[root@lmode nginx-1.4.7]# ./configure --prefix=/usr/local/nginx --user=www --group=www --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid  --with-pcre=/usr/local/src/lnmp/pcre-8.33 --with-zlib=/usr/local/src/lnmp/zlib-1.2.8 --with-openssl=/usr/local/src/lnmp/openssl-1.0.1e --with-http_gzip_static_module --with-http_ssl_module

注意:这里只能make 千万别make install,否则就覆盖安装了

1
[root@lmode nginx-1.4.7]# make

make完成后,在源码目录下会有一个objs目录,objs目录下就多了个nginx,这个就是新版本的程序了。

1

2

3
[root@lmode nginx-1.4.7]# ls
 
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src

然后将objs目录下的nginx替换之前已经安装过的nginx。

先备份旧的nginx程序

1
[root@lmode nginx-1.4.7]#cp /usr/local/nginx/nginx  /usr/local/nginx/nginx.bak

把新的nginx程序覆盖旧的

1
[root@lmode nginx-1.4.7]#cp ./objs/nginx /usr/local/nginx/sbin/nginx

如果提示“cp:cannot create regular file `/usr/local/nginx/sbin/nginx': Text file busy”

建议使用如下语句cp

1
#cp -rfp objs/nginx /usr/local/nginx/sbin/nginx

测试新的nginx程序是否正确

1

2

3
[root@lmode nginx-1.4.7]# /usr/local/nginx/nginx -t
nginx: the configuration file /usr/local/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/nginx.conf test is successful

最后重启nginx

1
[root@lmode nginx-1.4.7]# /usr/local/nginx/nginx -s reload

这样,就安装成功了。下面介绍下安装第三方模块的方法。

安装第三方模块

nginx安装第三方模块的方法和上面差不多,只是要额外添加一个–add-module参数:

1
./configure --prefix=/你的安装目录  --add-module=/第三方模块目录

下面以安装pagespeed模块位实例

1

2

3

4

5

6

7
# ./configure --prefix=--prefix=/usr/local/nginx --user=www --group=www --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid  --with-pcre=/usr/local/src/lnmp/pcre-8.33 --with-zlib=/usr/local/src/lnmp/zlib-1.2.8 --with-openssl=/usr/local/src/lnmp/openssl-1.0.1e --with-http_gzip_static_module --with-http_ssl_module --add-module=../ngx_pagespeed-master
 
# make
 
# cp ./objs/nginx /usr/local/nginx/nginx
 
# /usr/local/nginx/nginx -s reload

总结

安装nginx安装第三方模块实际上是使用–add-module重新安装一次nginx,不要make install而是直接把编译目录下objs/nginx文件直接覆盖老的nginx文件.如果你需要安装多个nginx第三方模块,你只需要多指定几个相应的–add-module即可。

[warning]备注:重新编译的时候,记得一定要把以前编译过的模块一同加到configure参数里。

本文固定地址:http://coderschool.cn/1728.html,转载请注明。

 

最后修改:2017 年 08 月 26 日 05 : 12 PM